Code Monkey home page Code Monkey logo

litex's Introduction

             Copyright 2012-2024 / Enjoy-Digital & LiteX developers

License

Welcome to LiteX!

The LiteX framework provides a convenient and efficient infrastructure to create FPGA Cores/SoCs, to explore various digital design architectures and create full FPGA based systems.

LiteX SoC builder framework quick tour/overview: Slides

Want to get started and/or looking for documentation? Make sure to visit the Wiki!

A question or want to get in touch? Join us on Discord or on our IRC channel: [#litex at irc.libera.chat].

LiteX provides all the common components required to easily create an FPGA Core/SoC:

  • ✔️ Buses and Streams (Wishbone, AXI, Avalon-ST) and their interconnect.
  • ✔️ Simple cores: RAM, ROM, Timer, UART, JTAG, etc….
  • ✔️ Complex cores through the ecosystem of cores: LiteDRAM, LitePCIe, LiteEth, LiteSATA, etc...
  • ✔️ Various CPUs & ISAs: RISC-V, OpenRISC, LM32, Zynq, X86 (through a PCIe), etc...
  • ✔️ Mixed languages support with VHDL/Verilog/(n)Migen/Spinal-HDL/etc... integration capabilities.
  • ✔️ Powerful debug infrastructure through the various bridges and Litescope.
  • ✔️ Direct/Fast simulation through Verilator.
  • ✔️ Build backends for open-source and vendors toolchains.
  • ✔️ And a lot more... :)

By combining LiteX with the ecosystem of cores, creating complex SoCs becomes a lot easier than with traditional approaches while providing better portability and flexibility: Here is for example a Multi-core Linux Capable SoC based on VexRiscv-SMP CPU, LiteDRAM, LiteSATA built and integrated with LiteX, running on a cheap repurposed Acorn CLE215+ Mining Board: For more info, have a look at Linux-on-LiteX-Vexriscv project and try running Linux on your FPGA board!

LiteX's digital logic is currently described with Migen which does not prevent users to create mixed language projects:

  • It's very common and easy to integrate VHDL/Verilog/SystemVerilog/nMigen/Spinal-HDL code in LiteX!
  • It's also very common to do the opposite and generate the LiteX design as a verilog file and integrate it in a traditional flow.

LiteX was initially developed by Enjoy-Digital to create projects for clients (and we are still using it for that :)) and trying to take the different clients' requirements/needs consideration made, we think, the framework very flexible:

  • Some users only want to use it to easily interconnect their existing VHDL/Verilog/SV cores.
  • Some users are only interested to reuse the PCIe/Ethernet/SATA/etc cores as regular core and just integrate them in their traditional flow.
  • Some users with a hardware background start with the above approaches and then switch later to the full Python flow since find it more efficient.
  • Some users with a software background and fluent with Python start playing with FPGAs while they would probably never touch FPGA otherwise :)
  • Etc...

We are well aware that everyone has a different background, so it's up to you to pick the right approach with LiteX that will be convenient for you!

To get started we encourage you to read the wiki.

You already have a FPGA board(s)? Visit LiteX-Boards to see if your board(s) is already supported!

The framework is also far from perfect and we'll be happy to have your feedback or/and contributions.

Have fun! 😉

Moral precisions: The project is shared with a permissive BSD 2-Clause License and we are encouraged to continue sharing it this way thanks to the awesome community and clients willing to support the project! If the projet is useful for your research, hobby or commercial projects, we are just asking you to be coherent and behave with integrity: Don't expect free support or that the community will be welcoming if your spent your time complaining about the project (and then direspect developers) or don't pay the custom developments you asked for... (While it's probably natural for 99% of users/clients, it does seems useful to add this for the 1% remaining that are eating lots of our energy/time).

Typical LiteX design flow:

                                      +---------------+
                                      |FPGA toolchains|
                                      +----^-----+----+
                                           |     |
                                        +--+-----v--+
                       +-------+        |           |
                       | Migen +-------->           |
                       +-------+        |           |        Your design
                                        |   LiteX   +---> ready to be used!
                                        |           |
              +----------------------+  |           |
              |LiteX Cores Ecosystem +-->           |
              +----------------------+  +-^-------^-+
               (Eth, SATA, DRAM, USB,     |       |
                PCIe, Video, etc...)      +       +
                                         board   target
                                         file    file

LiteX already supports various softcores CPUs: VexRiscv, Rocket, LM32, Mor1kx, PicoRV32, BlackParrot and is compatible with the LiteX's Cores Ecosystem:

Name Build Status Description
LiteX-Boards Boards support
LiteDRAM DRAM
LiteEth Ethernet
LitePCIe PCIe
LiteSATA SATA
LiteSDCard SD card
LiteICLink Inter-Chip communication
LiteJESD204B JESD204B
LiteSPI SPI/SPI-Flash
LiteScope Logic analyzer

Examples of designs built with LiteX:

Custom PCIe SDI Capture/Playback board built around LitePCIe and integrated with LiteX, allowing full control of the SDI flow and very low latency. Alternative firmware/gateware for the SDS1104X-E Scope: enter image description here HBM2 test infrastructure on Forest Kitten 33: enter image description here

To discover more products/projects built with LiteX, visit the projects page on the Wiki.

Sponsors/Partners:

A huge shoutout to our awesome industrial clients who have given us the green light to incorporate some of the developments we initially created for them directly into LiteX! These innovative developments often provide the building blocks for the features that the wider community can then use and improve upon. Your support has been instrumental for the project, and we are incredibly grateful for your partnership. Thanks!

Papers, Presentations, Tutorials, Links

FPGA lessons/tutorials:

Migen tutorial:

OSDA 2019 paper/slides:

Linux on LiteX-Vexriscv:

RISC-V Getting Started Guide:

LiteX vs. Vivado First Impressions:

35C3 - Snakes and Rabbits - How CCC shaped an open hardware success:

Tim has to many projects - LatchUp Edition: https://www.youtube.com/watch?v=v7WrTmexod0

Sub-packages

litex.gen Provides specific or experimental modules to generate HDL that are not integrated in Migen.

litex.build: Provides tools to build FPGA bitstreams (interface to vendor toolchains) and to simulate HDL code or full SoCs.

litex.soc: Provides definitions/modules to build cores (bus, bank, flow), cores and tools to build a SoC from such cores.

Quick start guide

  1. Install Python 3.6+ and FPGA vendor's development tools and/or Verilator.
  2. Install Migen/LiteX and the LiteX's cores:
$ wget https://raw.githubusercontent.com/enjoy-digital/litex/master/litex_setup.py
$ chmod +x litex_setup.py
$ ./litex_setup.py --init --install --user (--user to install to user directory) --config=(minimal, standard, full)

Later, if you need to update all repositories:

$ ./litex_setup.py --update

Note: On MacOS, make sure you have HomeBrew installed. Then do, brew install wget.

Note: On Windows, it's possible you'll have to set SHELL environment variable to SHELL=cmd.exe.

  1. Install a RISC-V toolchain (Only if you want to test/create a SoC with a CPU):
$ pip3 install meson ninja
$ ./litex_setup.py --gcc=riscv
  1. Build the target of your board...:

Go to litex-boards/litex_boards/targets and execute the target you want to build.

  1. ... and/or install Verilator and test LiteX directly on your computer without any FPGA board:

On Linux (Ubuntu):

$ sudo apt install libevent-dev libjson-c-dev verilator
$ litex_sim --cpu-type=vexriscv

On MacOS:

$ brew install json-c verilator libevent
$ brew cask install tuntap
$ litex_sim --cpu-type=vexriscv
  1. Run a terminal program on the board's serial port at 115200 8-N-1.

You should get the BIOS prompt like the one below.

Community

Over the years a friendly community has grown around LiteX and the ecosystem of cores. Feedbacks and contributions have already greatly improved the project, EnjoyDigital still leads the development but it is now a community project and collaborative projects created around/with LiteX can be found at https://github.com/litex-hub.

Contact

E-mail: [email protected]

litex's People

Contributors

bunnie avatar cklarhorst avatar cr1901 avatar dolu1990 avatar enjoy-digital avatar fallen avatar fjullien avatar gatecat avatar geertu avatar gsomlo avatar hansfbaier avatar icenowy avatar jedrzejboczar avatar jersey99 avatar jordens avatar lschuermann avatar mateusz-holenko avatar michalsieron avatar mithro avatar ozbenh avatar q3k avatar sbourdeauducq avatar scanakci avatar sergachev avatar shenki avatar stffrdhrn avatar trabucayre avatar troibe avatar whitequark avatar xobs avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

litex's Issues

Possible problem with DCACHE when using VexRiscv

I am using VexRiscv version of LiteX on Arty board.
I've discovered that any software running from DDR (from 0x40000000) via uploading a binary using flterm will after executing a few instructions crash in an exception with mbadaddr pointing to the place where it got stuck (usually 0x40000120) with mcause == 2 (unknown instruction).
This can be fixed (at least seems so) by cleaning DCACHE three times (no less, otherwise it will crash but somewhere further in the way):

diff --git a/litex/soc/software/bios/boot.c b/litex/soc/software/bios/boot.c
index 9e5a4dc..bf6c698 100644
--- a/litex/soc/software/bios/boot.c
+++ b/litex/soc/software/bios/boot.c
@@ -26,6 +26,9 @@ static void __attribute__((noreturn)) boot(unsigned int r1, unsigned int r2, uns
 	irq_setmask(0);
 	irq_setie(0);
 	flush_cpu_icache();
+	flush_cpu_dcache();
+	flush_cpu_dcache();
+	flush_cpu_dcache();
 	boot_helper(r1, r2, r3, addr);
 	while(1);
 }

Since this is a generic part of LiteX I assume this has to be a bug in VexRiscv cache handling (or I am completely misunderstanding something).

The way I generate the core is:

python3 litex/boards/targets/arty.py --cpu-type vexriscv --csr-csv csr.csv

Fails to build bios with --with-ethernet flag

sniped output of arty.py --cpu-type picorv32 --with-ethernet

`macadr' referenced in section `.text' of boot.o: defined in discarded section `.sdata' of boot.o
`macadr' referenced in section `.text' of boot.o: defined in discarded section `.sdata' of boot.o
`broadcast' referenced in section `.text' of ../libnet/libnet.a(microudp.o): defined in discarded section `.sdata' of ../libnet/libnet.a(microudp.o)
`broadcast' referenced in section `.text' of ../libnet/libnet.a(microudp.o): defined in discarded section `.sdata' of ../libnet/libnet.a(microudp.o)

This can be fixed by moving the line: *(.sdata .sdata.* .gnu.linkonce.s.*) from the discard section to the text section of the linker script. Poking around in the history of the linker script, it looks like data sections are undesireable. I'm not sure why that is the case, or if this is breaking whatever rule or design goal was behind that.

Option to change toolchain path?

I'm trying to build Arty-SoC but I'm getting an error that the Xilinx tools were not found in /opt/Xilinx/Vivado which makes sense because I installed it at $HOME/Software/Xilinx/Vivado. Other than changing the hardcoded path, is there a way to point to a different toolchain path on the command line as an argument?

Support patching ICE40 SRAM images

The ICE40 toolchain has the ability to patch block ram in the emitted bitstream. However, because it uses heuristics to locate the memory, it requires that the ram contain random data.

It is possible to hack litex to generate a ROM image that fills the entire area with random data:

diff --git a/litex/soc/integration/soc_core.py b/litex/soc/integration/soc_core.py
index 09de869..a9fee3f 100644
--- a/litex/soc/integration/soc_core.py
+++ b/litex/soc/integration/soc_core.py
@@ -279,6 +279,10 @@ class SoCCore(Module):
         self.cpu_or_bridge = self.cpu

     def initialize_rom(self, data):
+        import random
+        data = []
+        for d in range(self.rom.mem.depth):
+            data.append(random.getrandbits(32))
         self.rom.mem.init = data

     def add_wb_master(self, wbm):

We can then patch the emitted rom file with the actual contents of bios.bin.

There are a few issues:

  1. migen does not emit zero-padded memory files, so we must pad them before we hand them to icebram
  2. the bios.bin file must be converted to 32-bit hex values and padded to fill the entire memory
  3. memory values may need to be byteswapped.

I'm not very good with python, so I hacked together a C program and shell script combination that fixes up mem.init and patches it with the contents of bios.bin.

C program:

#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h>
#include <stdint.h>
#include <string.h>
#include <errno.h>

#define SWAP_BYTES // Define for lm32, undefine for riscv

static int rom_to_hex(const char *src, const char *dst, uint32_t mem_size) {
    FILE *outfile;
    char bfr[4];
    uint32_t file_size = 0;

    int fd = open(src, O_RDONLY);
    if (fd == -1) {
        fprintf(stderr, "unable to open src rom file %s: %s\n", src, strerror(errno));
        return 1;
    }

    outfile = fopen(dst, "w");
    if (!outfile) {
        fprintf(stderr, "unable to open dest rom file %s: %s\n", dst, strerror(errno));
        return 1;
    }

    while (read(fd, bfr, 4) == 4) {
#ifdef SWAP_BYTES
        fprintf(outfile, "%02x%02x%02x%02x\n", 0xff & bfr[0], 0xff & bfr[1], 0xff & bfr[2], 0xff & bfr[3]);
#else
        fprintf(outfile, "%02x%02x%02x%02x\n", 0xff & bfr[3], 0xff & bfr[2], 0xff & bfr[1], 0xff & bfr[0]);
#endif
        file_size += 4;
    }

    memset(bfr, 0, sizeof(bfr));
    while (file_size < mem_size) {
        fprintf(outfile, "%02x%02x%02x%02x\n", 0xff & bfr[3], 0xff & bfr[2], 0xff & bfr[1], 0xff & bfr[0]);
        file_size += 4;
    }
    fclose(outfile);

    return 0;
}

static int patchup_mem(const char *src, const char *dst, uint32_t *mem_size) {
    *mem_size = 0;
    FILE *s = fopen(src, "r");
    if (!s) {
        fprintf(stderr, "unable to open source mem file %s: %s\n", src, strerror(errno));
        return 1;
    }

    FILE *d = fopen(dst, "w");
    if (!d) {
        fprintf(stderr, "unable to open dest mem file %s: %s\n", dst, strerror(errno));
        return 2;
    }

    char tmpline[128];
    while (fgets(tmpline, sizeof(tmpline)-1, s) != NULL) {
        uint32_t word = strtoul(tmpline, NULL, 16);
        fprintf(d, "%08x\n", word);
        *mem_size += 4;
    }

    fclose(d);
    fclose(s);
    return 0;
}

int main(int argc, char **argv) {
    uint32_t mem_size;
    if (argc != 5) {
        printf("Usage: %s [src-mem] [dst-mem] [src-bin] [dst-bin]\n", argv[0]);
        return 1;
    }
    if (patchup_mem(argv[1], argv[2], &mem_size))
        return 1;
    if (rom_to_hex(argv[3], argv[4], mem_size))
        return 1;
    return 0;
}

Shell script:

#!/bin/sh
set -e
builddir=../build/fomu_evt_usb_lm32.minimal
src_bs=${builddir}/gateware/top.bin
src_mem=${builddir}/gateware/mem.init
dst_bs=patched.bin
dst_mem=${builddir}/software/bios/bios.bin

iceunpack < "${src_bs}" > top.asc
./repack "${src_mem}" top.hex "${dst_mem}" patched.hex
icebram top.hex patched.hex < top.asc | icepack > "${dst_bs}"

echo "Patched file generated: ${dst_bs}"

TFTP transfer bug

I was experiencing strange TFTP transfer issues. I diagnosed it in the chainloader I am working on (where I made a copy of the tftp/udp code). The culprit was documented here:
https://github.com/tweakoz/litex-chainloader/blob/master/tftp.cpp#L136
I would submit a fix and pull request, but I would not have time to test all scenarios, atm...
The fix seemed to work on my chainloader - so the same approach might work here...

litex has circular dependencies

  • litex depends on litedram
  • litedram depends on litex

See below;

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "litex/test_sim/conda/lib/python3.5/site-packages/litex-0.1+25.g868bc5d-py3.5.egg/litex/boards/targets/sim.py", line 10, in <module>
    from litex.soc.integration.soc_sdram import *
  File "litex/test_sim/conda/lib/python3.5/site-packages/litex-0.1+25.g868bc5d-py3.5.egg/litex/soc/integration/__init__.py", line 2, in <module>
    from litex.soc.integration.soc_sdram import SoCSDRAM
  File "litex/test_sim/conda/lib/python3.5/site-packages/litex-0.1+25.g868bc5d-py3.5.egg/litex/soc/integration/soc_sdram.py", line 8, in <module>
    from litedram.frontend import crossbar
ImportError: No module named 'litedram'

Allow Yosys to be used for synthesis with Vivado

Reopening #114 as an issue:

The aim here is to allow Yosys to be used for the synthesis step while Vivado remains being used for place and route. (Eventually I hope to also replace Vivado with something based on nextpnr or vpr.)

  • Add a (* keep *) attribute to IDELAYCTRL. no longer needed.
  • Check no VHDL files are in the source output.
  • Add the yosys step to the build_top.sh script.
  • Actually test the output bitstream.
  • Compare Vivado and Yosys results for synthesis.

Problem with fpga 101 lesson/lab003

A months ago, I didn't have this problem. But i update litex and when i try to execute python3 base.py I get this:

Traceback (most recent call last):
  File "base.py", line 6, in <module>
    from litex.soc.integration.soc_core import *
  File "/usr/local/lib/python3.5/dist-packages/litex-0.2.dev0-py3.5.egg/litex/soc/integration/__init__.py", line 2, in <module>
    from litex.soc.integration.soc_sdram import SoCSDRAM
  File "/usr/local/lib/python3.5/dist-packages/litex-0.2.dev0-py3.5.egg/litex/soc/integration/soc_sdram.py", line 8, in <module>
    from litedram.frontend import crossbar
ImportError: cannot import name 'crossbar'

https://github.com/enjoy-digital/fpga_101/tree/master/lab003

minerva.core package not found

I just fetched the latest commits and I get this error on trying to compile:

Traceback (most recent call last):
File "/home/bunnie/code/netv2-merge/netv2mvp.py", line 25, in
from litex.soc.integration.soc_sdram import *
File "/home/bunnie/code/netv2-merge/deps/litex/litex/soc/integration/init.py", line 1, in
from litex.soc.integration.soc_core import SoCCore
File "/home/bunnie/code/netv2-merge/deps/litex/litex/soc/integration/soc_core.py", line 7, in
from litex.soc.cores.cpu import lm32, mor1kx, picorv32, vexriscv, minerva
File "/home/bunnie/code/netv2-merge/deps/litex/litex/soc/cores/cpu/minerva/init.py", line 1, in
from litex.soc.cores.cpu.minerva.core import Minerva
File "/home/bunnie/code/netv2-merge/deps/litex/litex/soc/cores/cpu/minerva/core.py", line 7, in
from litex.soc.cores.cpu.minerva.core import Minerva as MinervaCPU
ImportError: cannot import name 'Minerva'

Where do I grab the minerva package from?

BIOS breaks without DDR main ram

This use to build fine on older versions of LiteX / LiteDRAM.

make[1]: Leaving directory `/home/travis/build/mithro/litex-buildenv/build/basys3_base_lm32/software/libnet'
make[1]: Entering directory `/home/travis/build/mithro/litex-buildenv/build/basys3_base_lm32/software/bios'
make[1]: warning: jobserver unavailable: using -j1.  Add `+' to parent make rule.
 CC       isr.o
 CC       sdram.o
/home/travis/build/mithro/litex-buildenv/third_party/litex/litex/soc/software/bios/sdram.c: In function 'memtest_bus':
/home/travis/build/mithro/litex-buildenv/third_party/litex/litex/soc/software/bios/sdram.c:544:49: error: 'MAIN_RAM_BASE' undeclared (first use in this function); did you mean 'SRAM_BASE'?
  volatile unsigned int *array = (unsigned int *)MAIN_RAM_BASE;
                                                 ^~~~~~~~~~~~~
                                                 SRAM_BASE
/home/travis/build/mithro/litex-buildenv/third_party/litex/litex/soc/software/bios/sdram.c:544:49: note: each undeclared identifier is reported only once for each function it appears in
/home/travis/build/mithro/litex-buildenv/third_party/litex/litex/soc/software/bios/sdram.c: In function 'memtest_data':
/home/travis/build/mithro/litex-buildenv/third_party/litex/litex/soc/software/bios/sdram.c:596:49: error: 'MAIN_RAM_BASE' undeclared (first use in this function); did you mean 'SRAM_BASE'?
  volatile unsigned int *array = (unsigned int *)MAIN_RAM_BASE;
                                                 ^~~~~~~~~~~~~
                                                 SRAM_BASE
/home/travis/build/mithro/litex-buildenv/third_party/litex/litex/soc/software/bios/sdram.c: In function 'memtest_addr':
/home/travis/build/mithro/litex-buildenv/third_party/litex/litex/soc/software/bios/sdram.c:636:49: error: 'MAIN_RAM_BASE' undeclared (first use in this function); did you mean 'SRAM_BASE'?
  volatile unsigned int *array = (unsigned int *)MAIN_RAM_BASE;
                                                 ^~~~~~~~~~~~~
                                                 SRAM_BASE
At top level:
/home/travis/build/mithro/litex-buildenv/third_party/litex/litex/soc/software/bios/sdram.c:15:13: warning: 'cdelay' defined but not used [-Wunused-function]
 static void cdelay(int i)
             ^~~~~~
make[1]: *** [sdram.o] Error 1
make[1]: Leaving directory `/home/travis/build/mithro/litex-buildenv/build/basys3_base_lm32/software/bios'
Traceback (most recent call last):
  File "./make.py", line 164, in <module>
    main()
  File "./make.py", line 148, in main
    vns = builder.build(**dict(args.build_option))
  File "/home/travis/build/mithro/litex-buildenv/third_party/litex/litex/soc/integration/builder.py", line 157, in build
    self._generate_software(not self.soc.integrated_rom_initialized)
  File "/home/travis/build/mithro/litex-buildenv/third_party/litex/litex/soc/integration/builder.py", line 142, in _generate_software
    subprocess.check_call(["make", "-C", dst_dir, "-f", makefile])
  File "/home/travis/build/mithro/litex-buildenv/build/conda/lib/python3.6/subprocess.py", line 291, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['make', '-C', '/home/travis/build/mithro/litex-buildenv/build/basys3_base_lm32/software/bios', '-f', '/home/travis/build/mithro/litex-buildenv/third_party/litex/litex/soc/software/bios/Makefile']' returned non-zero exit status 2.

Accessing unmapped Wishbone address freezes system

The Wishbone bus is sparsely populated, and contains many unmapped addresses. Attempting to access one of these addresses locks up the system.

There are at least two issues here:

  1. There is nothing listening on the "null" cyc line, so there is no default listener
  2. The current Wishbone architecture assumes transactions are always successful, and will wait forever if a slave pulls err.

For (1), it should be a simple matter of coming up with a signal that feeds into the err (or ack) signal on Wishbone that is (~(slave[0].cyc | slave[1].cyc | ... | slave[n].cyc) & slave.stb), such that a response signal is generated immediately upon access to an unmapped address.

For (2), the state machine will need to be modified somewhat to return to the IDLE state if err is hit, or however Wishbone is supposed to handle error conditions.

Because (1) is much easier to do than (2), it may be easier to have invalid accesses return bogus data than to have invalid accesses return an error condition. Either way, it would be nice to not have Wishbone lock up when accessing an invalid address.

Minerva CPU support

I was trying to build LiteX BIOS for Minerva CPU and noticed a strange thing:

There is a minerva-specific code in

asm volatile ("csrw %0, %1" :: "i"(CSR_IRQ_MASK), "r"(mask));
, but it looks like a copy-paste from VexRiscv.

This file contains defines, but the values are VexRiscv-specific.

Here I can see that minerva supports both standard RISC-V CSRs (mie, mip, mstatus) and some "µarch specific": IRQ_MASK and IRQ_PENDING that looks similar to those from VexRiscv, but their values are different.

What is the status of Minerva support? Is this supposed to work?

LiteX and Migen relationship and compatibility is unclear

Hi, I'm trying to wrap my head around the LiteX/Migen world because I want to get LiteScope running on my Lattice HX8K board. However, this is unfortunately turning out to be a rather frustrating experience.

On https://github.com/enjoy-digital/litex, it says "All Migen's platforms can also be used in LiteX" - which makes sense as https://www.bunniestudios.com/blog/?p=5018 mentions that "LiteX is a soft-fork of Migen/MiSoC". However, it is unclear to me why LiteX was created (instead of improving on Migen) and what the differences are. I would appreciate if those points were clarified in readme.md.

Anyway, I'd like to use https://github.com/m-labs/migen/blob/master/migen/build/platforms/ice40_hx8k_b_evn.py but when I specify it as a platform to LiteX, it complains that it doesn't know about it - which makes sense because litex and migen use different python name spaces. So how, then, can Migen platforms be used in LiteX? As a newbie, I'm not sure how this can be achieved and would appreciate a more precise expression such as "All of Migen's platforms can also be used in LiteX with minor modifications" - or an explanation of how to use the platforms that only Migen currently supports.

Thanks for your hard work!

regression: memtest fails on nexys4ddr SoC startup

I'm using the script below to build a vexriscv variant of litex/boards/targets/nexys4ddr.py, and it works with commit dad7b29, but breaks with "Memtest bus failed 128/256 errors, Memtest data failed: 524288/524288 errors" if I build the current master (2ebfab5). Here's my build script:

rm -rf ~/.local/bin ~/.local/lib ~/LITEX
mkdir ~/LITEX; cd ~/LITEX
# grab litex & friends (only litex has submodules, but --recursive won't hurt):
PRJ='x dram eth usb pcie sdcard iclink video scope'
for i in $PRJ; do
  git clone --recursive https://github.com/enjoy-digital/lite$i
done

# FIXME: Memtest fails, this rollback fixes it:
(cd litex;    git checkout dad7b292)

# "install" to local user's ~/.local/[usr|bin]:
for i in $PRJ; do
  (cd lite$i; python3 setup.py develop --user)
done

# build nexys4ddr full SoC example (using vexriscv cpu, and custom vivado path):
sed -i '/^\( *\)integrated_sram_size.*$/s//&\n\1cpu_type="vexriscv",/' \
  litex/litex/boards/targets/nexys4ddr.py
sed -i '/builder.build/s|()|(toolchain_path="/home/somlo/Xilinx/Vivado")|' \
  litex/litex/boards/targets/nexys4ddr.py
litex/litex/boards/targets/nexys4ddr.py

EDIT: after a bisect, the culprit appears to be commit 3dd529e ("add ECP5 support") -- something about the modified #defines in sdram.c disagrees with the proper operation of the nexys4ddr DDR2 controller.

Installation error on CentOS 6.9 with Python 3.4

When I typed following command to install Litex:

sudo python3 setup.py install

Some errors propmted and It seems some packages were still using python 2 syntax ?

 File "/usr/lib/python3.4/site-packages/litex-0.1-py3.4.egg/litex/build/sim/core/modules/ethernet/tapcfg/drivers/osx/tuntap/test/tuntap/interface_harness.py", line 231
    return filter(lambda (a, n, d): a != None,
                         ^
SyntaxError: invalid syntax

  File "/usr/lib/python3.4/site-packages/litex-0.1-py3.4.egg/litex/build/sim/core/modules/ethernet/tapcfg/drivers/osx/tuntap/test/tuntap/route.py", line 85
    def add_addr((addr_flags, payload), (addr, flag)):
                 ^
SyntaxError: invalid syntax

  File "/usr/lib/python3.4/site-packages/litex-0.1-py3.4.egg/litex/build/sim/core/modules/ethernet/tapcfg/scons-tools/crossmingw.py", line 88
    raise SCons.Errors.UserError, "A shared library should have exactly one target with the suffix: %s" % env.subst("$SHLIBSUFFIX")
...

Manually exiting litex_term breaks shell

When exiting litex_term with ctrl-c the terminal gets corrupted until reset is run which fixes the terminal again. Or am I just missing some proper mechanism to exit litex_term? When unplugging the board, litex_term exits without breaking the shell.

SH2/J-core support

The free SH2 core- aka J-core- is written in VHDL. In principle, J-core/SH2 should work already with Xilinx cores- someone just needs to port the Wishbone interface, startup code, etc :).

For ice40 toolchains, there is essentially no VHDL toolchain that targets yosys. I was fortunate enough to talk to J-core's creator on IRC, and he had this to say:

  • yosys support is something they've wanted for a while, but J-core uses many features of VHDL that don't translate to Verilog as-is.
  • The nvc VHDL simulator is already capable of simulating J-core.
  • Synthesizing VHDL is more complicated than Verilog, to the extent that you essentially need a simulator to instantiate parts of a VHDL design (this is known as VHDL elaboration).
  • The best way forward is to extend nvc to output Verilog at a lower-level than users would normally write. nvc's LLVM backend can handle VHDL elaboration that needs to occur before emitting Verilog.

Link to the full conversation: http://ix.io/1ngU

Import the Taiga high performance RISC-V core

Taiga is a 32-bit RISC-V processor designed for running Linux and SMP type things on FPGAs. Taiga is licensed under the Apache License, Version 2.0

Currently the only Linux supporting RISC-V processor we have is VexRISCV. It would be good to have a second RISC-V processor which targets high performance and Linux.

See the following description;

Taiga is a 32-bit RISC-V processor designed for FPGAs supporting the Multiply/Divide and Atomic extensions (RV32IMA). The processor is written in SystemVerilog and has been designed to be both highly extensible and highly configurable.
The pipeline has been designed to support parallel, variable-latency execution units and to readily support the inclusion of new execution units.
image

Vexriscv-Debug missing

With 4225c3b the Vexriscv-Debug.v file is missing. This file was added back in as part of e8a30b95b9aa1445b5a4a76579a98a0552e2db53. The vexriscv submodule should be updated to at least this new commit.

Standardize variant names across different CPU types?

VexRISCV uses
variants = ("std", "std_debug", "lite", "lite_debug", "min", "min_debug")

picorv32 uses;
variant == "minimal":

mor1kx uses
assert variant in (None, "linux"), "Unsupported variant %s" % variant

lm32 uses:
assert variant in (None, "lite", "minimal"), "Unsupported variant %s" % variant

I had some older thoughts at https://github.com/timvideos/litex-buildenv/wiki/CPU-Variants

I think we need;

  • minimal
  • standard
  • linux
  • debug versions (?)

crt0 doesn't copy data section into RAM?

There seems to be some confusion around if the data section should be copied to RAM.

If the program is executing from a read only location (ROM, spiflash, etc) - then the crt0 needs to copy the data section into RAM.
If the program is executing from a read/write location (SRAM, DDR, etc) - then the crt0 doesn't need to do anything (as the data section can be modified in place).

Both picorv32 and lm32 have a EXECUTE_IN_PLACE define which does the data section copy.

However, vexriscv and or1k and minerva are missing this.

Naming this EXECUTE_IN_PLACE is kind of misleading, as the reason the copy needs to occur is because the place it is executing from is read only.

litex_server seems to be broken

https://travis-ci.org/mithro/litex

The command "litex_server --help" exited with 0.
0.16s$ litex_client --help || true
Traceback (most recent call last):
  File "/home/travis/virtualenv/python3.3.5/lib/python3.3/site-packages/pkg_resources/__init__.py", line 2318, in resolve
    return functools.reduce(getattr, self.attrs, module)
AttributeError: 'module' object has no attribute 'main'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/home/travis/virtualenv/python3.3.5/bin/litex_client", line 9, in <module>
    load_entry_point('litex==0.1+37.g512098f', 'console_scripts', 'litex_client')()
  File "/home/travis/virtualenv/python3.3.5/lib/python3.3/site-packages/pkg_resources/__init__.py", line 519, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/home/travis/virtualenv/python3.3.5/lib/python3.3/site-packages/pkg_resources/__init__.py", line 2630, in load_entry_point
    return ep.load()
  File "/home/travis/virtualenv/python3.3.5/lib/python3.3/site-packages/pkg_resources/__init__.py", line 2310, in load
    return self.resolve()
  File "/home/travis/virtualenv/python3.3.5/lib/python3.3/site-packages/pkg_resources/__init__.py", line 2320, in resolve
    raise ImportError(str(exc))
ImportError: 'module' object has no attribute 'main'

Duplicate constraint raises wrong exception

At https://github.com/enjoy-digital/litex/blob/master/litex/build/xilinx/vivado.py#L254 it raises ValueError if a constraint exists. I think it should raise ConstraintError so I can be caught at https://github.com/enjoy-digital/litex/blob/master/litex/build/generic_platform.py#L314

I'm still feeling my way around litex so perhaps I'm missing something here.

File "/home/tom/git/im-tomu/foboot/hw/deps/litex/litex/build/xilinx/platform.py", line 48, in add_period_constraint
self.toolchain.add_period_constraint(self, clk, period)
File "/home/tom/git/im-tomu/foboot/hw/deps/litex/litex/build/xilinx/vivado.py", line 254, in add_period_constraint
raise ValueError("A period constraint already exists")
ValueError: A period constraint already exists

cpu_interface: select_triple silently returns None

Related to this change here:
b528a00

Instead of a useful error message compilation fails with:
File "core_nopll.py", line 247, in
main()
File "core_nopll.py", line 226, in main
vns = builder.build(build_name="litedram_core", regular_comb=False)
File "/home/john/repos/litex/litex/soc/integration/builder.py", line 156, in build
self._generate_includes()
File "/home/john/repos/litex/litex/soc/integration/builder.py", line 72, in _generate_includes
define(k, v)
File "/home/john/repos/litex/litex/soc/integration/builder.py", line 70, in define
variables_contents.append("{}={}\n".format(k, _makefile_escape(v)))
File "/home/john/repos/litex/litex/soc/integration/builder.py", line 27, in _makefile_escape
return s.replace("\", "\\")
AttributeError: 'NoneType' object has no attribute 'replace'

Package installs 'test' package

I'm writing an ebuild for Pentoo (Gentoo) and facing an issue similar to the ypid/yaml4rst#1:

/usr/bin/python3.5 -O /var/tmp/portage/sys-apps/litex-20180531/temp/tmphmwkkika.py
removing /var/tmp/portage/sys-apps/litex-20180531/temp/tmphmwkkika.py
writing byte-compilation script '/var/tmp/portage/sys-apps/litex-20180531/temp/tmptgofa80_.py'
/usr/bin/python3.5 -OO /var/tmp/portage/sys-apps/litex-20180531/temp/tmptgofa80_.py
removing /var/tmp/portage/sys-apps/litex-20180531/temp/tmptgofa80_.py
running install_egg_info
Copying litex.egg-info to /var/tmp/portage/sys-apps/litex-20180531/image/_python3.5/usr/lib64/python3.5/site-packages/litex-0.2.dev0-py3.5.egg-info
running install_scripts
Installing mkmscimg script to /var/tmp/portage/sys-apps/litex-20180531/image/_python3.5/usr/lib/python-exec/python3.5
Installing litex_term script to /var/tmp/portage/sys-apps/litex-20180531/image/_python3.5/usr/lib/python-exec/python3.5
Installing litex_server script to /var/tmp/portage/sys-apps/litex-20180531/image/_python3.5/usr/lib/python-exec/python3.5
 * ERROR: sys-apps/litex-20180531::pentoo failed (install phase):
 *   Package installs 'test' package which is forbidden and likely a bug in the build system.
 * 
 * Call stack:
 *     ebuild.sh, line  124:  Called src_install
 *   environment, line 2604:  Called distutils-r1_src_install
 *   environment, line  835:  Called _distutils-r1_run_foreach_impl 'distutils-r1_python_install'
 *   environment, line  334:  Called python_foreach_impl 'distutils-r1_run_phase' 'distutils-r1_python_install'
 *   environment, line 2151:  Called multibuild_foreach_variant '_python_multibuild_wrapper' 'distutils-r1_run_phase' 'distutils-r1_python_install'
 *   environment, line 1526:  Called _multibuild_run '_python_multibuild_wrapper' 'distutils-r1_run_phase' 'distutils-r1_python_install'
 *   environment, line 1524:  Called _python_multibuild_wrapper 'distutils-r1_run_phase' 'distutils-r1_python_install'
 *   environment, line  546:  Called distutils-r1_run_phase 'distutils-r1_python_install'
 *   environment, line  803:  Called distutils-r1_python_install
 *   environment, line  725:  Called die
 * The specific snippet of code:
 *               die "Package installs '${p}' package which is forbidden and likely a bug in the build system.";
 * 
 * If you need support, post the output of `emerge --info '=sys-apps/litex-20180531::pentoo'`,
 * the complete build log and the output of `emerge -pqv '=sys-apps/litex-20180531::pentoo'`.
 * The complete build log is located at '/var/tmp/portage/sys-apps/litex-20180531/temp/build.log'.
 * The ebuild environment file is located at '/var/tmp/portage/sys-apps/litex-20180531/temp/environment'.
 * Working directory: '/var/tmp/portage/sys-apps/litex-20180531/work/litex-c534250c43791612da2a03c1c93f992115d11f8c'
 * S: '/var/tmp/portage/sys-apps/litex-20180531/work/litex-c534250c43791612da2a03c1c93f992115d11f8c'

Could you help to fix it please?

CSRs in VexRiscv are violating the priv spec

VexRiscv defines two registers that were added as a plugin specially for LiteX:

csr.rw(0x330, mask)
csr.r(0x360, pendings)

In my opinion both violate the priv spec (both 1.9 and 1.10).
0x330 is the most problematic as it violates this definition:

#define CSR_MHPMEVENT16 0x330

It is easy to spot by issuing this:

riscv64-unknown-elf-objdump -S bios.elf | grep mhpmevent16

While I understand that you could always say that a cpu does not follow priv spec at all, I would still suggest to follow it at least to a point of using ranges that are meant for custom CSRs (see Table 2.1: Allocation of RISC-V CSR address ranges. on page 8 in the spec: https://people.eecs.berkeley.edu/~krste/papers/riscv-privileged-v1.9.1.pdf).

There are two benefits of that:

  • disassembly using a standard riscv gcc will make more sense
  • it is easier to write simulators for a core like that (<-- main reason why I've discovered this at all).

In other words I would move those two CSRs to Non-standard read/write and Non-standard read only areas respectively.

I already wrote to Charles Papon (author of VexRiscv) about this but I think it makes sense to point it out here as well as this will have to be updated both in VexRiscv plugin and in the LiteX code.

Enable link time optimisation in builds

Link time optimisation seems to be resulting in much smaller binaries as any unused elements can be totally removed.

There are however some issues to make this work;

  • Have to use a modern gcc
  • Use GCC for linking
  • Have to mark a couple of functions like the ISR as actually used.
  • Have to link against libgcc

PEP8 issues

Here is the current list of PEP8 errors in litex

running pep8
./setup.py:13:1: E302 expected 2 blank lines, found 1
./setuptools_pep8-0.9.0-py3.4.egg/tests/test_pep8_command.py:24:80: E501 line too long (116 > 79 characters)
./setuptools_pep8-0.9.0-py3.4.egg/setuptools_pep8/setuptools_command.py:16:80: E501 line too long (111 > 79 characters)
./litex/build/generic_programmer.py:30:1: W391 blank line at end of file
./litex/build/sim/platform.py:16:80: E501 line too long (87 > 79 characters)
./litex/build/sim/platform.py:20:1: W391 blank line at end of file
./litex/build/sim/verilator.py:1:80: E501 line too long (83 > 79 characters)
./litex/build/sim/verilator.py:42:5: E122 continuation line missing indentation or outdented
./litex/build/sim/verilator.py:43:5: E122 continuation line missing indentation or outdented
./litex/build/sim/verilator.py:44:5: E122 continuation line missing indentation or outdented
./litex/build/sim/verilator.py:46:5: E122 continuation line missing indentation or outdented
./litex/build/sim/verilator.py:47:5: E122 continuation line missing indentation or outdented
./litex/build/sim/verilator.py:48:5: E122 continuation line missing indentation or outdented
./litex/build/sim/verilator.py:49:5: E122 continuation line missing indentation or outdented
./litex/build/sim/verilator.py:63:5: E122 continuation line missing indentation or outdented
./litex/build/sim/verilator.py:64:5: E122 continuation line missing indentation or outdented
./litex/build/sim/verilator.py:65:5: E122 continuation line missing indentation or outdented
./litex/build/sim/verilator.py:67:5: E122 continuation line missing indentation or outdented
./litex/build/sim/verilator.py:68:5: E122 continuation line missing indentation or outdented
./litex/build/sim/verilator.py:69:5: E122 continuation line missing indentation or outdented
./litex/build/sim/verilator.py:70:5: E122 continuation line missing indentation or outdented
./litex/build/sim/verilator.py:83:5: E122 continuation line missing indentation or outdented
./litex/build/sim/verilator.py:84:5: E122 continuation line missing indentation or outdented
./litex/build/sim/verilator.py:85:5: E122 continuation line missing indentation or outdented
./litex/build/sim/verilator.py:86:5: E122 continuation line missing indentation or outdented
./litex/build/sim/verilator.py:87:5: E122 continuation line missing indentation or outdented
./litex/build/sim/verilator.py:88:5: E122 continuation line missing indentation or outdented
./litex/build/sim/verilator.py:89:5: E122 continuation line missing indentation or outdented
./litex/build/sim/verilator.py:113:80: E501 line too long (104 > 79 characters)
./litex/build/sim/verilator.py:117:5: E122 continuation line missing indentation or outdented
./litex/build/sim/verilator.py:118:5: E122 continuation line missing indentation or outdented
./litex/build/sim/verilator.py:120:80: E501 line too long (82 > 79 characters)
./litex/build/sim/verilator.py:123:80: E501 line too long (103 > 79 characters)
./litex/build/sim/verilator.py:131:80: E501 line too long (102 > 79 characters)
./litex/build/sim/verilator.py:148:13: E128 continuation line under-indented for visual indent
./litex/build/sim/verilator.py:166:80: E501 line too long (85 > 79 characters)
./litex/build/lattice/common.py:12:17: E128 continuation line under-indented for visual indent
./litex/build/lattice/common.py:14:17: E128 continuation line under-indented for visual indent
./litex/build/lattice/common.py:27:17: E128 continuation line under-indented for visual indent
./litex/build/lattice/common.py:28:17: E128 continuation line under-indented for visual indent
./litex/build/lattice/common.py:29:17: E128 continuation line under-indented for visual indent
./litex/build/lattice/common.py:30:9: E124 closing bracket does not match visual indentation
./litex/build/lattice/diamond.py:49:80: E501 line too long (130 > 79 characters)
./litex/build/lattice/diamond.py:69:80: E501 line too long (108 > 79 characters)
./litex/build/lattice/diamond.py:93:80: E501 line too long (90 > 79 characters)
./litex/build/lattice/diamond.py:95:80: E501 line too long (80 > 79 characters)
./litex/build/lattice/diamond.py:106:80: E501 line too long (140 > 79 characters)
./litex/build/lattice/platform.py:18:80: E501 line too long (87 > 79 characters)
./litex/build/lattice/programmer.py:8:80: E501 line too long (94 > 79 characters)
./litex/build/xilinx/__init__.py:2:80: E501 line too long (86 > 79 characters)
./litex/build/xilinx/common.py:21:27: W503 line break before binary operator
./litex/build/xilinx/common.py:47:13: E261 at least two spaces before inline comment
./litex/build/xilinx/common.py:58:80: E501 line too long (95 > 79 characters)
./litex/build/xilinx/common.py:83:80: E501 line too long (89 > 79 characters)
./litex/build/xilinx/common.py:84:13: E128 continuation line under-indented for visual indent
./litex/build/xilinx/common.py:98:17: E128 continuation line under-indented for visual indent
./litex/build/xilinx/common.py:100:17: E128 continuation line under-indented for visual indent
./litex/build/xilinx/common.py:135:17: E128 continuation line under-indented for visual indent
./litex/build/xilinx/common.py:136:17: E128 continuation line under-indented for visual indent
./litex/build/xilinx/common.py:137:17: E128 continuation line under-indented for visual indent
./litex/build/xilinx/common.py:138:9: E124 closing bracket does not match visual indentation
./litex/build/xilinx/common.py:170:17: E128 continuation line under-indented for visual indent
./litex/build/xilinx/common.py:171:17: E128 continuation line under-indented for visual indent
./litex/build/xilinx/common.py:172:17: E128 continuation line under-indented for visual indent
./litex/build/xilinx/common.py:173:9: E124 closing bracket does not match visual indentation
./litex/build/xilinx/ise.py:31:80: E501 line too long (81 > 79 characters)
./litex/build/xilinx/ise.py:85:9: E128 continuation line under-indented for visual indent
./litex/build/xilinx/ise.py:106:80: E501 line too long (80 > 79 characters)
./litex/build/xilinx/ise.py:112:13: E128 continuation line under-indented for visual indent
./litex/build/xilinx/ise.py:113:13: E128 continuation line under-indented for visual indent
./litex/build/xilinx/ise.py:116:80: E501 line too long (83 > 79 characters)
./litex/build/xilinx/ise.py:136:13: E128 continuation line under-indented for visual indent
./litex/build/xilinx/ise.py:158:80: E501 line too long (84 > 79 characters)
./litex/build/xilinx/ise.py:165:80: E501 line too long (120 > 79 characters)
./litex/build/xilinx/ise.py:168:80: E501 line too long (100 > 79 characters)
./litex/build/xilinx/ise.py:172:80: E501 line too long (84 > 79 characters)
./litex/build/xilinx/platform.py:26:80: E501 line too long (87 > 79 characters)
./litex/build/xilinx/programmer.py:21:80: E501 line too long (125 > 79 characters)
./litex/build/xilinx/programmer.py:25:1: E303 too many blank lines (3)
./litex/build/xilinx/programmer.py:39:20: E128 continuation line under-indented for visual indent
./litex/build/xilinx/programmer.py:43:80: E501 line too long (89 > 79 characters)
./litex/build/xilinx/programmer.py:81:80: E501 line too long (84 > 79 characters)
./litex/build/xilinx/programmer.py:88:5: E301 expected 1 blank line, found 0
./litex/build/xilinx/programmer.py:98:80: E501 line too long (81 > 79 characters)
./litex/build/xilinx/programmer.py:114:80: E501 line too long (81 > 79 characters)
./litex/build/xilinx/programmer.py:115:80: E501 line too long (112 > 79 characters)
./litex/build/xilinx/programmer.py:117:80: E501 line too long (98 > 79 characters)
./litex/build/xilinx/programmer.py:118:80: E501 line too long (92 > 79 characters)
./litex/build/xilinx/programmer.py:119:80: E501 line too long (98 > 79 characters)
./litex/build/xilinx/programmer.py:120:80: E501 line too long (93 > 79 characters)
./litex/build/xilinx/programmer.py:123:80: E501 line too long (111 > 79 characters)
./litex/build/xilinx/programmer.py:124:80: E501 line too long (105 > 79 characters)
./litex/build/xilinx/programmer.py:125:80: E501 line too long (120 > 79 characters)
./litex/build/xilinx/programmer.py:126:80: E501 line too long (98 > 79 characters)
./litex/build/xilinx/programmer.py:127:80: E501 line too long (92 > 79 characters)
./litex/build/xilinx/programmer.py:128:80: E501 line too long (98 > 79 characters)
./litex/build/xilinx/programmer.py:129:80: E501 line too long (93 > 79 characters)
./litex/build/xilinx/programmer.py:132:80: E501 line too long (389 > 79 characters)
./litex/build/xilinx/programmer.py:133:80: E501 line too long (90 > 79 characters)
./litex/build/xilinx/vivado.py:43:80: E501 line too long (85 > 79 characters)
./litex/build/xilinx/vivado.py:56:80: E501 line too long (86 > 79 characters)
./litex/build/xilinx/vivado.py:64:80: E501 line too long (86 > 79 characters)
./litex/build/xilinx/vivado.py:89:80: E501 line too long (88 > 79 characters)
./litex/build/xilinx/vivado.py:90:80: E501 line too long (150 > 79 characters)
./litex/build/xilinx/vivado.py:91:80: E501 line too long (117 > 79 characters)
./litex/build/xilinx/vivado.py:92:80: E501 line too long (90 > 79 characters)
./litex/build/xilinx/vivado.py:96:80: E501 line too long (117 > 79 characters)
./litex/build/xilinx/vivado.py:97:80: E501 line too long (90 > 79 characters)
./litex/build/xilinx/vivado.py:99:80: E501 line too long (95 > 79 characters)
./litex/build/xilinx/vivado.py:100:80: E501 line too long (96 > 79 characters)
./litex/build/xilinx/vivado.py:102:80: E501 line too long (86 > 79 characters)
./litex/build/xilinx/vivado.py:104:80: E501 line too long (96 > 79 characters)
./litex/build/xilinx/vivado.py:115:13: E128 continuation line under-indented for visual indent
./litex/build/xilinx/vivado.py:115:80: E501 line too long (82 > 79 characters)
./litex/build/xilinx/vivado.py:129:80: E501 line too long (80 > 79 characters)
./litex/boards/targets/arty.py:16:1: E302 expected 2 blank lines, found 1
./litex/boards/targets/arty.py:47:22: E265 block comment should start with '# '
./litex/boards/targets/arty.py:51:22: E265 block comment should start with '# '
./litex/boards/targets/arty.py:55:22: E265 block comment should start with '# '
./litex/boards/targets/arty.py:56:13: E124 closing bracket does not match visual indentation
./litex/boards/targets/arty.py:63:9: E303 too many blank lines (2)
./litex/boards/targets/arty.py:104:80: E501 line too long (83 > 79 characters)
./litex/boards/targets/arty.py:106:80: E501 line too long (89 > 79 characters)
./litex/boards/targets/arty.py:108:80: E501 line too long (91 > 79 characters)
./litex/boards/targets/arty.py:132:80: E501 line too long (84 > 79 characters)
./litex/boards/targets/de0nano.py:21:51: E251 unexpected spaces around keyword / parameter equals
./litex/boards/targets/de0nano.py:21:53: E251 unexpected spaces around keyword / parameter equals
./litex/boards/targets/de0nano.py:22:51: E251 unexpected spaces around keyword / parameter equals
./litex/boards/targets/de0nano.py:22:53: E251 unexpected spaces around keyword / parameter equals
./litex/boards/targets/de0nano.py:23:52: E251 unexpected spaces around keyword / parameter equals
./litex/boards/targets/de0nano.py:23:54: E251 unexpected spaces around keyword / parameter equals
./litex/boards/targets/de0nano.py:24:53: E251 unexpected spaces around keyword / parameter equals
./litex/boards/targets/de0nano.py:24:55: E251 unexpected spaces around keyword / parameter equals
./litex/boards/targets/de0nano.py:25:53: E251 unexpected spaces around keyword / parameter equals
./litex/boards/targets/de0nano.py:25:55: E251 unexpected spaces around keyword / parameter equals
./litex/boards/targets/de0nano.py:25:80: E501 line too long (85 > 79 characters)
./litex/boards/targets/de0nano.py:26:53: E251 unexpected spaces around keyword / parameter equals
./litex/boards/targets/de0nano.py:26:55: E251 unexpected spaces around keyword / parameter equals
./litex/boards/targets/de0nano.py:27:59: E251 unexpected spaces around keyword / parameter equals
./litex/boards/targets/de0nano.py:27:61: E251 unexpected spaces around keyword / parameter equals
./litex/boards/targets/de0nano.py:27:80: E501 line too long (81 > 79 characters)
./litex/boards/targets/de0nano.py:28:59: E251 unexpected spaces around keyword / parameter equals
./litex/boards/targets/de0nano.py:28:61: E251 unexpected spaces around keyword / parameter equals
./litex/boards/targets/de0nano.py:29:45: E251 unexpected spaces around keyword / parameter equals
./litex/boards/targets/de0nano.py:29:47: E251 unexpected spaces around keyword / parameter equals
./litex/boards/targets/de0nano.py:29:80: E501 line too long (87 > 79 characters)
./litex/boards/targets/de0nano.py:30:45: E251 unexpected spaces around keyword / parameter equals
./litex/boards/targets/de0nano.py:30:47: E251 unexpected spaces around keyword / parameter equals
./litex/boards/targets/de0nano.py:31:51: E251 unexpected spaces around keyword / parameter equals
./litex/boards/targets/de0nano.py:31:53: E251 unexpected spaces around keyword / parameter equals
./litex/boards/targets/de0nano.py:51:9: E124 closing bracket does not match visual indentation
./litex/boards/targets/de0nano.py:105:1: E302 expected 2 blank lines, found 1
./litex/boards/targets/de0nano.py:106:80: E501 line too long (89 > 79 characters)
./litex/boards/targets/kc705.py:29:80: E501 line too long (87 > 79 characters)
./litex/boards/targets/kc705.py:48:80: E501 line too long (85 > 79 characters)
./litex/boards/targets/kc705.py:51:80: E501 line too long (82 > 79 characters)
./litex/boards/targets/kc705.py:54:80: E501 line too long (83 > 79 characters)
./litex/boards/targets/kc705.py:56:62: E261 at least two spaces before inline comment
./litex/boards/targets/kc705.py:56:63: E262 inline comment should start with '# '
./litex/boards/targets/kc705.py:58:62: E261 at least two spaces before inline comment
./litex/boards/targets/kc705.py:58:63: E262 inline comment should start with '# '
./litex/boards/targets/kc705.py:59:13: E124 closing bracket does not match visual indentation
./litex/boards/targets/kc705.py:72:13: E124 closing bracket does not match visual indentation
./litex/boards/targets/kc705.py:75:80: E501 line too long (95 > 79 characters)
./litex/boards/targets/kc705.py:96:80: E501 line too long (81 > 79 characters)
./litex/boards/targets/kc705.py:99:80: E501 line too long (89 > 79 characters)
./litex/boards/targets/kc705.py:105:80: E501 line too long (89 > 79 characters)
./litex/boards/targets/kc705.py:106:80: E501 line too long (111 > 79 characters)
./litex/boards/targets/kc705.py:107:80: E501 line too long (89 > 79 characters)
./litex/boards/targets/kc705.py:134:80: E501 line too long (80 > 79 characters)
./litex/boards/targets/kc705.py:135:80: E501 line too long (97 > 79 characters)
./litex/boards/targets/kc705.py:136:80: E501 line too long (89 > 79 characters)
./litex/boards/targets/kc705.py:138:80: E501 line too long (91 > 79 characters)
./litex/boards/targets/minispartan6.py:37:80: E501 line too long (88 > 79 characters)
./litex/boards/targets/minispartan6.py:38:80: E501 line too long (81 > 79 characters)
./litex/boards/targets/minispartan6.py:39:80: E501 line too long (101 > 79 characters)
./litex/boards/targets/minispartan6.py:40:80: E501 line too long (100 > 79 characters)
./litex/boards/targets/minispartan6.py:42:80: E501 line too long (87 > 79 characters)
./litex/boards/targets/minispartan6.py:43:80: E501 line too long (92 > 79 characters)
./litex/boards/targets/minispartan6.py:54:80: E501 line too long (86 > 79 characters)
./litex/boards/targets/minispartan6.py:55:80: E501 line too long (91 > 79 characters)
./litex/boards/targets/minispartan6.py:56:9: E124 closing bracket does not match visual indentation
./litex/boards/targets/minispartan6.py:87:80: E501 line too long (86 > 79 characters)
./litex/boards/targets/nexys_video.py:46:13: E124 closing bracket does not match visual indentation
./litex/boards/targets/nexys_video.py:58:13: E124 closing bracket does not match visual indentation
./litex/boards/targets/nexys_video.py:61:80: E501 line too long (95 > 79 characters)
./litex/boards/targets/nexys_video.py:96:80: E501 line too long (85 > 79 characters)
./litex/boards/targets/nexys_video.py:98:80: E501 line too long (89 > 79 characters)
./litex/boards/targets/nexys_video.py:100:80: E501 line too long (91 > 79 characters)
./litex/boards/targets/nexys_video.py:102:1: E302 expected 2 blank lines, found 1
./litex/boards/targets/nexys_video.py:103:80: E501 line too long (81 > 79 characters)
./litex/boards/targets/nexys_video.py:123:80: E501 line too long (84 > 79 characters)
./litex/boards/targets/sim.py:22:1: E302 expected 2 blank lines, found 1
./litex/boards/targets/sim.py:26:13: E128 continuation line under-indented for visual indent
./litex/boards/targets/sim.py:32:80: E501 line too long (81 > 79 characters)
./litex/boards/targets/sim.py:79:80: E501 line too long (89 > 79 characters)
./litex/boards/targets/sim.py:81:80: E501 line too long (91 > 79 characters)
./litex/boards/targets/sim.py:85:1: E303 too many blank lines (3)
./litex/boards/targets/sim.py:86:80: E501 line too long (80 > 79 characters)
./litex/boards/targets/simple.py:15:1: E302 expected 2 blank lines, found 1
./litex/boards/targets/simple.py:18:13: E128 continuation line under-indented for visual indent
./litex/boards/targets/simple.py:19:13: E128 continuation line under-indented for visual indent
./litex/boards/targets/simple.py:20:13: E128 continuation line under-indented for visual indent
./litex/boards/targets/simple.py:21:13: E128 continuation line under-indented for visual indent
./litex/boards/targets/simple.py:51:80: E501 line too long (91 > 79 characters)
./litex/boards/platforms/arty.py:19:5: E124 closing bracket does not match visual indentation
./litex/boards/platforms/arty.py:44:5: E124 closing bracket does not match visual indentation
./litex/boards/platforms/arty.py:72:5: E124 closing bracket does not match visual indentation
./litex/boards/platforms/arty.py:78:5: E124 closing bracket does not match visual indentation
./litex/boards/platforms/arty.py:91:5: E124 closing bracket does not match visual indentation
./litex/boards/platforms/arty.py:108:80: E501 line too long (86 > 79 characters)
./litex/boards/platforms/de0nano.py:32:5: E124 closing bracket does not match visual indentation
./litex/boards/platforms/de0nano.py:43:80: E501 line too long (81 > 79 characters)
./litex/boards/platforms/de0nano.py:46:5: E124 closing bracket does not match visual indentation
./litex/boards/platforms/de0nano.py:54:5: E124 closing bracket does not match visual indentation
./litex/boards/platforms/de0nano.py:60:5: E124 closing bracket does not match visual indentation
./litex/boards/platforms/de0nano.py:66:5: E124 closing bracket does not match visual indentation
./litex/boards/platforms/de0nano.py:74:5: E124 closing bracket does not match visual indentation
./litex/boards/platforms/de0nano.py:78:13: E128 continuation line under-indented for visual indent
./litex/boards/platforms/de0nano.py:79:13: E128 continuation line under-indented for visual indent
./litex/boards/platforms/de0nano.py:81:5: E124 closing bracket does not match visual indentation
./litex/boards/platforms/de0nano.py:84:13: E128 continuation line under-indented for visual indent
./litex/boards/platforms/de0nano.py:85:13: E128 continuation line under-indented for visual indent
./litex/boards/platforms/de0nano.py:87:5: E124 closing bracket does not match visual indentation
./litex/boards/platforms/de0nano.py:91:5: E124 closing bracket does not match visual indentation
./litex/boards/platforms/kc705.py:2:80: E501 line too long (81 > 79 characters)
./litex/boards/platforms/kc705.py:32:5: E124 closing bracket does not match visual indentation
./litex/boards/platforms/kc705.py:42:5: E124 closing bracket does not match visual indentation
./litex/boards/platforms/kc705.py:47:5: E124 closing bracket does not match visual indentation
./litex/boards/platforms/kc705.py:65:5: E124 closing bracket does not match visual indentation
./litex/boards/platforms/kc705.py:89:80: E501 line too long (104 > 79 characters)
./litex/boards/platforms/kc705.py:110:13: E128 continuation line under-indented for visual indent
./litex/boards/platforms/kc705.py:122:13: E128 continuation line under-indented for visual indent
./litex/boards/platforms/kc705.py:124:13: E128 continuation line under-indented for visual indent
./litex/boards/platforms/kc705.py:132:5: E124 closing bracket does not match visual indentation
./litex/boards/platforms/kc705.py:139:5: E124 closing bracket does not match visual indentation
./litex/boards/platforms/kc705.py:154:5: E124 closing bracket does not match visual indentation
./litex/boards/platforms/kc705.py:164:5: E124 closing bracket does not match visual indentation
./litex/boards/platforms/kc705.py:173:5: E124 closing bracket does not match visual indentation
./litex/boards/platforms/kc705.py:182:5: E124 closing bracket does not match visual indentation
./litex/boards/platforms/kc705.py:191:5: E124 closing bracket does not match visual indentation
./litex/boards/platforms/kc705.py:339:5: E124 closing bracket does not match visual indentation
./litex/boards/platforms/kc705.py:416:5: E124 closing bracket does not match visual indentation
./litex/boards/platforms/kc705.py:427:13: E128 continuation line under-indented for visual indent
./litex/boards/platforms/kc705.py:429:80: E501 line too long (108 > 79 characters)
./litex/boards/platforms/kc705.py:431:80: E501 line too long (113 > 79 characters)
./litex/boards/platforms/kc705.py:432:80: E501 line too long (170 > 79 characters)
./litex/boards/platforms/kc705.py:443:80: E501 line too long (81 > 79 characters)
./litex/boards/platforms/kc705.py:452:80: E501 line too long (81 > 79 characters)
./litex/boards/platforms/kc705.py:458:80: E501 line too long (92 > 79 characters)
./litex/boards/platforms/minispartan6.py:32:5: E124 closing bracket does not match visual indentation
./litex/boards/platforms/minispartan6.py:39:5: E124 closing bracket does not match visual indentation
./litex/boards/platforms/minispartan6.py:44:5: E124 closing bracket does not match visual indentation
./litex/boards/platforms/minispartan6.py:49:5: E124 closing bracket does not match visual indentation
./litex/boards/platforms/minispartan6.py:53:80: E501 line too long (84 > 79 characters)
./litex/boards/platforms/minispartan6.py:54:80: E501 line too long (92 > 79 characters)
./litex/boards/platforms/minispartan6.py:63:5: E124 closing bracket does not match visual indentation
./litex/boards/platforms/minispartan6.py:73:5: E124 closing bracket does not match visual indentation
./litex/boards/platforms/minispartan6.py:83:5: E124 closing bracket does not match visual indentation
./litex/boards/platforms/minispartan6.py:92:5: E124 closing bracket does not match visual indentation
./litex/boards/platforms/minispartan6.py:99:5: E124 closing bracket does not match visual indentation
./litex/boards/platforms/minispartan6.py:126:80: E501 line too long (81 > 79 characters)
./litex/boards/platforms/nexys_video.py:42:5: E124 closing bracket does not match visual indentation
./litex/boards/platforms/nexys_video.py:52:5: E124 closing bracket does not match visual indentation
./litex/boards/platforms/nexys_video.py:77:5: E124 closing bracket does not match visual indentation
./litex/boards/platforms/nexys_video.py:83:5: E124 closing bracket does not match visual indentation
./litex/boards/platforms/nexys_video.py:94:5: E124 closing bracket does not match visual indentation
./litex/boards/platforms/nexys_video.py:109:64: E261 at least two spaces before inline comment
./litex/boards/platforms/nexys_video.py:110:5: E124 closing bracket does not match visual indentation
./litex/boards/platforms/nexys_video.py:124:64: E261 at least two spaces before inline comment
./litex/boards/platforms/nexys_video.py:125:5: E124 closing bracket does not match visual indentation
./litex/boards/platforms/nexys_video.py:142:80: E501 line too long (86 > 79 characters)
./litex/boards/platforms/nexys_video.py:145:5: E303 too many blank lines (2)
./litex/boards/platforms/nexys_video.py:157:80: E501 line too long (81 > 79 characters)
./litex/boards/platforms/sim.py:20:5: E124 closing bracket does not match visual indentation
./litex/boards/platforms/sim.py:23:5: E124 closing bracket does not match visual indentation
./litex/boards/platforms/sim.py:32:5: E124 closing bracket does not match visual indentation
./litex/boards/platforms/sim.py:40:5: E124 closing bracket does not match visual indentation
./litex/boards/platforms/versa.py:34:5: E124 closing bracket does not match visual indentation
./litex/boards/platforms/versa.py:41:5: E124 closing bracket does not match visual indentation
./litex/boards/platforms/versa.py:54:5: E124 closing bracket does not match visual indentation
./litex/boards/platforms/versa.py:61:5: E124 closing bracket does not match visual indentation
./litex/boards/platforms/versa.py:74:5: E124 closing bracket does not match visual indentation
./litex/boards/platforms/versa.py:88:80: E501 line too long (84 > 79 characters)
./litex/boards/platforms/versa.py:92:80: E501 line too long (84 > 79 characters)
./litex/boards/platforms/versa.py:95:5: E301 expected 1 blank line, found 0
./litex/gen/sim/core.py:8:35: E128 continuation line under-indented for visual indent
./litex/gen/sim/core.py:9:35: E128 continuation line under-indented for visual indent
./litex/gen/sim/core.py:12:31: E128 continuation line under-indented for visual indent
./litex/gen/sim/core.py:151:80: E501 line too long (82 > 79 characters)
./litex/gen/sim/core.py:160:80: E501 line too long (81 > 79 characters)
./litex/gen/sim/core.py:223:80: E501 line too long (90 > 79 characters)
./litex/gen/sim/core.py:232:80: E501 line too long (83 > 79 characters)
./litex/gen/sim/core.py:243:80: E501 line too long (84 > 79 characters)
./litex/gen/sim/core.py:251:21: W503 line break before binary operator
./litex/gen/sim/vcd.py:65:17: W503 line break before binary operator
./litex/gen/fhdl/bitcontainer.py:104:11: E127 continuation line over-indented for visual indent
./litex/gen/fhdl/bitcontainer.py:105:15: E111 indentation is not a multiple of four
./litex/gen/fhdl/decorators.py:74:80: E501 line too long (119 > 79 characters)
./litex/gen/fhdl/decorators.py:79:17: E128 continuation line under-indented for visual indent
./litex/gen/fhdl/module.py:64:80: E501 line too long (86 > 79 characters)
./litex/gen/fhdl/module.py:136:80: E501 line too long (100 > 79 characters)
./litex/gen/fhdl/module.py:141:80: E501 line too long (100 > 79 characters)
./litex/gen/fhdl/module.py:162:80: E501 line too long (82 > 79 characters)
./litex/gen/fhdl/module.py:168:80: E501 line too long (108 > 79 characters)
./litex/gen/fhdl/module.py:170:80: E501 line too long (114 > 79 characters)
./litex/gen/fhdl/module.py:175:80: E501 line too long (81 > 79 characters)
./litex/gen/fhdl/namer.py:31:80: E501 line too long (85 > 79 characters)
./litex/gen/fhdl/namer.py:69:80: E501 line too long (80 > 79 characters)
./litex/gen/fhdl/namer.py:132:80: E501 line too long (105 > 79 characters)
./litex/gen/fhdl/namer.py:150:80: E501 line too long (86 > 79 characters)
./litex/gen/fhdl/namer.py:155:80: E501 line too long (80 > 79 characters)
./litex/gen/fhdl/namer.py:199:80: E501 line too long (84 > 79 characters)
./litex/gen/fhdl/simplify.py:20:80: E501 line too long (121 > 79 characters)
./litex/gen/fhdl/simplify.py:29:80: E501 line too long (112 > 79 characters)
./litex/gen/fhdl/simplify.py:30:80: E501 line too long (116 > 79 characters)
./litex/gen/fhdl/simplify.py:34:80: E501 line too long (101 > 79 characters)
./litex/gen/fhdl/simplify.py:38:80: E501 line too long (128 > 79 characters)
./litex/gen/fhdl/simplify.py:39:80: E501 line too long (112 > 79 characters)
./litex/gen/fhdl/simplify.py:40:80: E501 line too long (128 > 79 characters)
./litex/gen/fhdl/simplify.py:98:80: E501 line too long (80 > 79 characters)
./litex/gen/fhdl/simplify.py:99:26: E261 at least two spaces before inline comment
./litex/gen/fhdl/specials.py:12:5: E128 continuation line under-indented for visual indent
./litex/gen/fhdl/specials.py:67:80: E501 line too long (81 > 79 characters)
./litex/gen/fhdl/specials.py:73:80: E501 line too long (82 > 79 characters)
./litex/gen/fhdl/specials.py:89:5: E301 expected 1 blank line, found 0
./litex/gen/fhdl/specials.py:91:5: E301 expected 1 blank line, found 0
./litex/gen/fhdl/specials.py:93:5: E301 expected 1 blank line, found 0
./litex/gen/fhdl/specials.py:95:5: E301 expected 1 blank line, found 0
./litex/gen/fhdl/specials.py:101:5: E301 expected 1 blank line, found 0
./litex/gen/fhdl/specials.py:104:80: E501 line too long (80 > 79 characters)
./litex/gen/fhdl/specials.py:140:80: E501 line too long (94 > 79 characters)
./litex/gen/fhdl/specials.py:162:22: E701 multiple statements on one line (colon)
./litex/gen/fhdl/specials.py:176:80: E501 line too long (91 > 79 characters)
./litex/gen/fhdl/specials.py:188:7: E128 continuation line under-indented for visual indent
./litex/gen/fhdl/specials.py:189:7: E128 continuation line under-indented for visual indent
./litex/gen/fhdl/specials.py:237:7: E128 continuation line under-indented for visual indent
./litex/gen/fhdl/specials.py:238:7: E128 continuation line under-indented for visual indent
./litex/gen/fhdl/specials.py:257:11: E128 continuation line under-indented for visual indent
./litex/gen/fhdl/specials.py:258:11: E128 continuation line under-indented for visual indent
./litex/gen/fhdl/specials.py:265:9: E301 expected 1 blank line, found 0
./litex/gen/fhdl/specials.py:301:80: E501 line too long (119 > 79 characters)
./litex/gen/fhdl/specials.py:304:80: E501 line too long (100 > 79 characters)
./litex/gen/fhdl/specials.py:307:80: E501 line too long (86 > 79 characters)
./litex/gen/fhdl/specials.py:309:80: E501 line too long (105 > 79 characters)
./litex/gen/fhdl/specials.py:324:80: E501 line too long (98 > 79 characters)
./litex/gen/fhdl/specials.py:327:80: E501 line too long (112 > 79 characters)
./litex/gen/fhdl/specials.py:329:80: E501 line too long (93 > 79 characters)
./litex/gen/fhdl/specials.py:339:80: E501 line too long (82 > 79 characters)
./litex/gen/fhdl/specials.py:353:80: E501 line too long (87 > 79 characters)
./litex/gen/fhdl/specials.py:360:80: E501 line too long (84 > 79 characters)
./litex/gen/fhdl/structure.py:11:5: E301 expected 1 blank line, found 0
./litex/gen/fhdl/structure.py:37:21: W503 line break before binary operator
./litex/gen/fhdl/structure.py:43:5: E301 expected 1 blank line, found 0
./litex/gen/fhdl/structure.py:48:5: E301 expected 1 blank line, found 0
./litex/gen/fhdl/structure.py:50:5: E301 expected 1 blank line, found 0
./litex/gen/fhdl/structure.py:52:5: E301 expected 1 blank line, found 0
./litex/gen/fhdl/structure.py:54:5: E301 expected 1 blank line, found 0
./litex/gen/fhdl/structure.py:56:5: E301 expected 1 blank line, found 0
./litex/gen/fhdl/structure.py:58:5: E301 expected 1 blank line, found 0
./litex/gen/fhdl/structure.py:60:5: E301 expected 1 blank line, found 0
./litex/gen/fhdl/structure.py:62:5: E301 expected 1 blank line, found 0
./litex/gen/fhdl/structure.py:64:5: E301 expected 1 blank line, found 0
./litex/gen/fhdl/structure.py:66:5: E301 expected 1 blank line, found 0
./litex/gen/fhdl/structure.py:68:5: E301 expected 1 blank line, found 0
./litex/gen/fhdl/structure.py:70:5: E301 expected 1 blank line, found 0
./litex/gen/fhdl/structure.py:72:5: E301 expected 1 blank line, found 0
./litex/gen/fhdl/structure.py:74:5: E301 expected 1 blank line, found 0
./litex/gen/fhdl/structure.py:76:5: E301 expected 1 blank line, found 0
./litex/gen/fhdl/structure.py:81:5: E301 expected 1 blank line, found 0
./litex/gen/fhdl/structure.py:83:5: E301 expected 1 blank line, found 0
./litex/gen/fhdl/structure.py:85:5: E301 expected 1 blank line, found 0
./litex/gen/fhdl/structure.py:87:5: E301 expected 1 blank line, found 0
./litex/gen/fhdl/structure.py:89:5: E301 expected 1 blank line, found 0
./litex/gen/fhdl/structure.py:314:80: E501 line too long (143 > 79 characters)
./litex/gen/fhdl/structure.py:328:80: E501 line too long (94 > 79 characters)
./litex/gen/fhdl/structure.py:336:80: E501 line too long (80 > 79 characters)
./litex/gen/fhdl/structure.py:351:80: E501 line too long (97 > 79 characters)
./litex/gen/fhdl/structure.py:529:44: W291 trailing whitespace
./litex/gen/fhdl/structure.py:530:21: W503 line break before binary operator
./litex/gen/fhdl/structure.py:553:25: W503 line break before binary operator
./litex/gen/fhdl/structure.py:554:25: W503 line break before binary operator
./litex/gen/fhdl/structure.py:579:13: E128 continuation line under-indented for visual indent
./litex/gen/fhdl/structure.py:582:80: E501 line too long (80 > 79 characters)
./litex/gen/fhdl/structure.py:583:13: E128 continuation line under-indented for visual indent
./litex/gen/fhdl/structure.py:649:80: E501 line too long (92 > 79 characters)
./litex/gen/fhdl/structure.py:689:80: E501 line too long (80 > 79 characters)
./litex/gen/fhdl/structure.py:690:24: E701 multiple statements on one line (colon)
./litex/gen/fhdl/structure.py:691:24: E701 multiple statements on one line (colon)
./litex/gen/fhdl/structure.py:692:28: E701 multiple statements on one line (colon)
./litex/gen/fhdl/structure.py:693:33: E701 multiple statements on one line (colon)
./litex/gen/fhdl/structure.py:707:13: E128 continuation line under-indented for visual indent
./litex/gen/fhdl/structure.py:708:13: E128 continuation line under-indented for visual indent
./litex/gen/fhdl/structure.py:722:1: E302 expected 2 blank lines, found 1
./litex/gen/fhdl/tools.py:87:9: E128 continuation line under-indented for visual indent
./litex/gen/fhdl/tools.py:170:80: E501 line too long (83 > 79 characters)
./litex/gen/fhdl/tools.py:181:80: E501 line too long (83 > 79 characters)
./litex/gen/fhdl/tools.py:203:17: E128 continuation line under-indented for visual indent
./litex/gen/fhdl/tools.py:242:80: E501 line too long (89 > 79 characters)
./litex/gen/fhdl/tracer.py:24:80: E501 line too long (101 > 79 characters)
./litex/gen/fhdl/tracer.py:48:80: E501 line too long (84 > 79 characters)
./litex/gen/fhdl/verilog.py:30:53: E231 missing whitespace after ','
./litex/gen/fhdl/verilog.py:98:15: E111 indentation is not a multiple of four
./litex/gen/fhdl/verilog.py:110:80: E501 line too long (80 > 79 characters)
./litex/gen/fhdl/verilog.py:112:80: E501 line too long (92 > 79 characters)
./litex/gen/fhdl/verilog.py:139:80: E501 line too long (102 > 79 characters)
./litex/gen/fhdl/verilog.py:153:80: E501 line too long (84 > 79 characters)
./litex/gen/fhdl/verilog.py:208:80: E501 line too long (95 > 79 characters)
./litex/gen/fhdl/verilog.py:246:80: E501 line too long (80 > 79 characters)
./litex/gen/fhdl/verilog.py:249:80: E501 line too long (95 > 79 characters)
./litex/gen/fhdl/verilog.py:253:80: E501 line too long (96 > 79 characters)
./litex/gen/fhdl/verilog.py:257:80: E501 line too long (92 > 79 characters)
./litex/gen/fhdl/verilog.py:267:80: E501 line too long (84 > 79 characters)
./litex/gen/fhdl/verilog.py:276:80: E501 line too long (92 > 79 characters)
./litex/gen/fhdl/verilog.py:278:80: E501 line too long (102 > 79 characters)
./litex/gen/fhdl/verilog.py:284:3: E128 continuation line under-indented for visual indent
./litex/gen/fhdl/verilog.py:285:3: E128 continuation line under-indented for visual indent
./litex/gen/fhdl/verilog.py:286:3: E128 continuation line under-indented for visual indent
./litex/gen/fhdl/verilog.py:287:3: E128 continuation line under-indented for visual indent
./litex/gen/fhdl/verilog.py:288:3: E128 continuation line under-indented for visual indent
./litex/gen/fhdl/verilog.py:289:3: E128 continuation line under-indented for visual indent
./litex/gen/fhdl/verilog.py:290:3: E128 continuation line under-indented for visual indent
./litex/gen/fhdl/verilog.py:319:42: E502 the backslash is redundant between brackets
./litex/gen/fhdl/verilog.py:320:9: E128 continuation line under-indented for visual indent
./litex/gen/fhdl/verilog.py:320:49: E502 the backslash is redundant between brackets
./litex/gen/fhdl/verilog.py:321:9: E128 continuation line under-indented for visual indent
./litex/gen/fhdl/verilog.py:333:80: E501 line too long (96 > 79 characters)
./litex/gen/fhdl/visit.py:6:35: E128 continuation line under-indented for visual indent
./litex/gen/fhdl/visit.py:200:13: E128 continuation line under-indented for visual indent
./litex/gen/fhdl/visit.py:205:13: E128 continuation line under-indented for visual indent
./litex/gen/genlib/cdc.py:133:13: E124 closing bracket does not match visual indentation
./litex/gen/genlib/coding.py:33:22: E227 missing whitespace around bitwise or shift operator
./litex/gen/genlib/coding.py:92:35: E227 missing whitespace around bitwise or shift operator
./litex/gen/genlib/divider.py:32:13: E124 closing bracket does not match visual indentation
./litex/gen/genlib/divider.py:33:21: E127 continuation line over-indented for visual indent
./litex/gen/genlib/divider.py:35:21: E124 closing bracket does not match visual indentation
./litex/gen/genlib/divider.py:38:21: E127 continuation line over-indented for visual indent
./litex/gen/genlib/divider.py:39:13: E124 closing bracket does not match visual indentation
./litex/gen/genlib/fifo.py:14:13: E128 continuation line under-indented for visual indent
./litex/gen/genlib/fifo.py:15:9: E124 closing bracket does not match visual indentation
./litex/gen/genlib/fifo.py:96:13: E124 closing bracket does not match visual indentation
./litex/gen/genlib/fifo.py:103:13: E128 continuation line under-indented for visual indent
./litex/gen/genlib/fifo.py:121:13: E124 closing bracket does not match visual indentation
./litex/gen/genlib/fifo.py:122:17: E128 continuation line under-indented for visual indent
./litex/gen/genlib/fifo.py:123:13: E124 closing bracket does not match visual indentation
./litex/gen/genlib/fifo.py:147:13: E124 closing bracket does not match visual indentation
./litex/gen/genlib/fifo.py:148:17: E128 continuation line under-indented for visual indent
./litex/gen/genlib/fifo.py:149:13: E124 closing bracket does not match visual indentation
./litex/gen/genlib/fifo.py:190:80: E501 line too long (80 > 79 characters)
./litex/gen/genlib/fifo.py:191:17: E128 continuation line under-indented for visual indent
./litex/gen/genlib/fifo.py:191:17: W503 line break before binary operator
./litex/gen/genlib/fifo.py:195:17: E128 continuation line under-indented for visual indent
./litex/gen/genlib/fifo.py:195:17: W503 line break before binary operator
./litex/gen/genlib/fifo.py:196:17: E122 continuation line missing indentation or outdented
./litex/gen/genlib/fifo.py:196:17: W503 line break before binary operator
./litex/gen/genlib/fsm.py:42:21: E127 continuation line over-indented for visual indent
./litex/gen/genlib/fsm.py:42:21: W503 line break before binary operator
./litex/gen/genlib/fsm.py:43:21: E127 continuation line over-indented for visual indent
./litex/gen/genlib/fsm.py:43:21: W503 line break before binary operator
./litex/gen/genlib/fsm.py:46:21: E127 continuation line over-indented for visual indent
./litex/gen/genlib/fsm.py:46:21: W503 line break before binary operator
./litex/gen/genlib/fsm.py:75:80: E501 line too long (83 > 79 characters)
./litex/gen/genlib/fsm.py:77:80: E501 line too long (82 > 79 characters)
./litex/gen/genlib/fsm.py:78:80: E501 line too long (92 > 79 characters)
./litex/gen/genlib/fsm.py:159:80: E501 line too long (91 > 79 characters)
./litex/gen/genlib/fsm.py:162:80: E501 line too long (80 > 79 characters)
./litex/gen/genlib/fsm.py:171:80: E501 line too long (91 > 79 characters)
./litex/gen/genlib/fsm.py:176:80: E501 line too long (91 > 79 characters)
./litex/gen/genlib/io.py:20:80: E501 line too long (110 > 79 characters)
./litex/gen/genlib/io.py:37:80: E501 line too long (111 > 79 characters)
./litex/gen/genlib/io.py:76:80: E501 line too long (101 > 79 characters)
./litex/gen/genlib/io.py:95:80: E501 line too long (102 > 79 characters)
./litex/gen/genlib/io.py:96:1: W391 blank line at end of file
./litex/gen/genlib/misc.py:53:9: E128 continuation line under-indented for visual indent
./litex/gen/genlib/misc.py:55:9: E128 continuation line under-indented for visual indent
./litex/gen/genlib/misc.py:56:5: E124 closing bracket does not match visual indentation
./litex/gen/genlib/misc.py:61:13: E128 continuation line under-indented for visual indent
./litex/gen/genlib/misc.py:88:13: E124 closing bracket does not match visual indentation
./litex/gen/genlib/record.py:113:11: E128 continuation line under-indented for visual indent
./litex/gen/genlib/record.py:158:80: E501 line too long (83 > 79 characters)
./litex/gen/genlib/record.py:160:80: E501 line too long (101 > 79 characters)
./litex/gen/genlib/record.py:165:80: E501 line too long (84 > 79 characters)
./litex/gen/genlib/record.py:192:80: E501 line too long (94 > 79 characters)
./litex/gen/genlib/resetsync.py:18:80: E501 line too long (110 > 79 characters)
./litex/gen/genlib/roundrobin.py:27:25: E124 closing bracket does not match visual indentation
./litex/gen/genlib/sort.py:48:17: E124 closing bracket does not match visual indentation
./litex/soc/tools/litex_term.py:41:13: E221 multiple spaces before operator
./litex/soc/tools/litex_term.py:42:13: E221 multiple spaces before operator
./litex/soc/tools/litex_term.py:45:16: E221 multiple spaces before operator
./litex/soc/tools/litex_term.py:47:16: E221 multiple spaces before operator
./litex/soc/tools/litex_term.py:48:14: E221 multiple spaces before operator
./litex/soc/tools/litex_term.py:144:80: E501 line too long (95 > 79 characters)
./litex/soc/tools/litex_term.py:173:80: E501 line too long (84 > 79 characters)
./litex/soc/tools/litex_term.py:180:63: W291 trailing whitespace
./litex/soc/tools/litex_term.py:207:30: E703 statement ends with a semicolon
./litex/soc/tools/litex_term.py:216:17: E101 indentation contains mixed spaces and tabs
./litex/soc/tools/litex_term.py:216:17: W191 indentation contains tabs
./litex/soc/tools/litex_term.py:285:80: E501 line too long (108 > 79 characters)
./litex/soc/tools/mkmscimg.py:27:80: E501 line too long (103 > 79 characters)
./litex/soc/tools/mkmscimg.py:29:80: E501 line too long (110 > 79 characters)
./litex/soc/tools/mkmscimg.py:30:80: E501 line too long (116 > 79 characters)
./litex/soc/tools/remote/comm_pcie.py:42:80: E501 line too long (87 > 79 characters)
./litex/soc/tools/remote/comm_uart.py:10:5: E301 expected 1 blank line, found 0
./litex/soc/tools/remote/comm_udp.py:31:80: E501 line too long (82 > 79 characters)
./litex/soc/tools/remote/csr_builder.py:44:80: E501 line too long (97 > 79 characters)
./litex/soc/tools/remote/csr_builder.py:79:80: E501 line too long (101 > 79 characters)
./litex/soc/tools/remote/etherbone.py:207:5: E303 too many blank lines (2)
./litex/soc/tools/remote/etherbone.py:264:45: E127 continuation line over-indented for visual indent
./litex/soc/tools/remote/etherbone.py:334:80: E501 line too long (94 > 79 characters)
./litex/soc/tools/remote/etherbone.py:359:80: E501 line too long (87 > 79 characters)
./litex/soc/tools/remote/litex_client.py:10:80: E501 line too long (103 > 79 characters)
./litex/soc/tools/remote/litex_client.py:33:80: E501 line too long (84 > 79 characters)
./litex/soc/tools/remote/litex_client.py:54:80: E501 line too long (81 > 79 characters)
./litex/soc/tools/remote/litex_server.py:6:80: E501 line too long (94 > 79 characters)
./litex/soc/tools/remote/litex_server.py:41:21: E101 indentation contains mixed spaces and tabs
./litex/soc/tools/remote/litex_server.py:41:21: W191 indentation contains tabs
./litex/soc/tools/remote/litex_server.py:48:38: E711 comparison to None should be 'if cond is not None:'
./litex/soc/tools/remote/litex_server.py:49:80: E501 line too long (91 > 79 characters)
./litex/soc/tools/remote/litex_server.py:52:37: E711 comparison to None should be 'if cond is not None:'
./litex/soc/tools/remote/litex_server.py:83:1: E302 expected 2 blank lines, found 1
./litex/soc/tools/remote/litex_server.py:92:80: E501 line too long (89 > 79 characters)
./litex/soc/tools/remote/litex_server.py:93:80: E501 line too long (81 > 79 characters)
./litex/soc/tools/remote/litex_server.py:104:19: E701 multiple statements on one line (colon)
./litex/soc/cores/identifier.py:9:80: E501 line too long (80 > 79 characters)
./litex/soc/cores/timer.py:27:17: E124 closing bracket does not match visual indentation
./litex/soc/cores/timer.py:30:13: E124 closing bracket does not match visual indentation
./litex/soc/cores/flash/nor_flash_16.py:35:80: E501 line too long (80 > 79 characters)
./litex/soc/cores/flash/nor_flash_16.py:38:21: E124 closing bracket does not match visual indentation
./litex/soc/cores/flash/nor_flash_16.py:41:17: E124 closing bracket does not match visual indentation
./litex/soc/cores/flash/nor_flash_16.py:44:13: E124 closing bracket does not match visual indentation
./litex/soc/cores/flash/nor_flash_16.py:58:80: E501 line too long (91 > 79 characters)
./litex/soc/cores/flash/nor_flash_16.py:60:17: E128 continuation line under-indented for visual indent
./litex/soc/cores/flash/nor_flash_16.py:61:13: E124 closing bracket does not match visual indentation
./litex/soc/cores/flash/nor_flash_16.py:69:13: E128 continuation line under-indented for visual indent
./litex/soc/cores/flash/nor_flash_16.py:72:17: E124 closing bracket does not match visual indentation
./litex/soc/cores/flash/nor_flash_16.py:75:13: E124 closing bracket does not match visual indentation
./litex/soc/cores/flash/nor_flash_16.py:78:13: E128 continuation line under-indented for visual indent
./litex/soc/cores/flash/nor_flash_16.py:79:13: E128 continuation line under-indented for visual indent
./litex/soc/cores/flash/nor_flash_16.py:80:13: E128 continuation line under-indented for visual indent
./litex/soc/cores/flash/nor_flash_16.py:83:13: E124 closing bracket does not match visual indentation
./litex/soc/cores/flash/nor_flash_16.py:86:13: E128 continuation line under-indented for visual indent
./litex/soc/cores/flash/nor_flash_16.py:87:13: E128 continuation line under-indented for visual indent
./litex/soc/cores/flash/nor_flash_16.py:88:13: E128 continuation line under-indented for visual indent
./litex/soc/cores/flash/nor_flash_16.py:91:13: E124 closing bracket does not match visual indentation
./litex/soc/cores/flash/nor_flash_16.py:94:13: E128 continuation line under-indented for visual indent
./litex/soc/cores/flash/nor_flash_16.py:95:13: E128 continuation line under-indented for visual indent
./litex/soc/cores/flash/nor_flash_16.py:96:13: E128 continuation line under-indented for visual indent
./litex/soc/cores/flash/nor_flash_16.py:97:13: E128 continuation line under-indented for visual indent
./litex/soc/cores/flash/nor_flash_16.py:98:13: E128 continuation line under-indented for visual indent
./litex/soc/cores/flash/nor_flash_16.py:99:13: E128 continuation line under-indented for visual indent
./litex/soc/cores/flash/nor_flash_16.py:102:13: E128 continuation line under-indented for visual indent
./litex/soc/cores/flash/nor_flash_16.py:103:13: E128 continuation line under-indented for visual indent
./litex/soc/cores/flash/nor_flash_16.py:104:9: E124 closing bracket does not match visual indentation
./litex/soc/cores/flash/spi_flash.py:23:20: E227 missing whitespace around bitwise or shift operator
./litex/soc/cores/flash/spi_flash.py:23:24: E228 missing whitespace around modulo operator
./litex/soc/cores/flash/spi_flash.py:24:21: E227 missing whitespace around bitwise or shift operator
./litex/soc/cores/flash/spi_flash.py:35:80: E501 line too long (86 > 79 characters)
./litex/soc/cores/flash/spi_flash.py:52:9: E303 too many blank lines (2)
./litex/soc/cores/flash/spi_flash.py:84:17: E124 closing bracket does not match visual indentation
./litex/soc/cores/flash/spi_flash.py:89:17: E124 closing bracket does not match visual indentation
./litex/soc/cores/flash/spi_flash.py:95:17: E124 closing bracket does not match visual indentation
./litex/soc/cores/flash/spi_flash.py:102:80: E501 line too long (104 > 79 characters)
./litex/soc/cores/flash/spi_flash.py:110:17: E124 closing bracket does not match visual indentation
./litex/soc/cores/flash/spi_flash.py:115:17: E124 closing bracket does not match visual indentation
./litex/soc/cores/flash/spi_flash.py:132:18: E261 at least two spaces before inline comment
./litex/soc/cores/uart/core.py:34:17: E124 closing bracket does not match visual indentation
./litex/soc/cores/uart/core.py:35:13: E124 closing bracket does not match visual indentation
./litex/soc/cores/uart/core.py:41:25: E124 closing bracket does not match visual indentation
./litex/soc/cores/uart/core.py:42:21: E124 closing bracket does not match visual indentation
./litex/soc/cores/uart/core.py:43:25: E128 continuation line under-indented for visual indent
./litex/soc/cores/uart/core.py:44:25: E128 continuation line under-indented for visual indent
./litex/soc/cores/uart/core.py:47:25: E124 closing bracket does not match visual indentation
./litex/soc/cores/uart/core.py:48:21: E124 closing bracket does not match visual indentation
./litex/soc/cores/uart/core.py:51:17: E124 closing bracket does not match visual indentation
./litex/soc/cores/uart/core.py:55:17: E127 continuation line over-indented for visual indent
./litex/soc/cores/uart/core.py:56:80: E501 line too long (99 > 79 characters)
./litex/soc/cores/uart/core.py:57:17: E124 closing bracket does not match visual indentation
./litex/soc/cores/uart/core.py:83:13: E124 closing bracket does not match visual indentation
./litex/soc/cores/uart/core.py:84:17: E128 continuation line under-indented for visual indent
./litex/soc/cores/uart/core.py:85:17: E128 continuation line under-indented for visual indent
./litex/soc/cores/uart/core.py:87:17: E124 closing bracket does not match visual indentation
./litex/soc/cores/uart/core.py:88:21: E128 continuation line under-indented for visual indent
./litex/soc/cores/uart/core.py:89:21: E128 continuation line under-indented for visual indent
./litex/soc/cores/uart/core.py:90:21: E128 continuation line under-indented for visual indent
./litex/soc/cores/uart/core.py:91:17: E124 closing bracket does not match visual indentation
./litex/soc/cores/uart/core.py:99:80: E501 line too long (99 > 79 characters)
./litex/soc/cores/uart/core.py:100:17: E124 closing bracket does not match visual indentation
./litex/soc/cores/uart/core.py:108:80: E501 line too long (80 > 79 characters)
./litex/soc/cores/cpu/picorv32/core.py:59:61: E261 at least two spaces before inline comment
./litex/soc/cores/cpu/picorv32/core.py:72:51: E261 at least two spaces before inline comment
./litex/soc/cores/cpu/picorv32/core.py:87:14: E124 closing bracket does not match visual indentation
./litex/soc/cores/cpu/picorv32/core.py:100:14: E124 closing bracket does not match visual indentation
./litex/soc/cores/cpu/lm32/core.py:19:36: E127 continuation line over-indented for visual indent
./litex/soc/cores/cpu/lm32/core.py:19:80: E501 line too long (106 > 79 characters)
./litex/soc/cores/cpu/lm32/core.py:21:36: E127 continuation line over-indented for visual indent
./litex/soc/cores/cpu/lm32/core.py:22:36: E127 continuation line over-indented for visual indent
./litex/soc/cores/cpu/lm32/core.py:24:36: E127 continuation line over-indented for visual indent
./litex/soc/cores/cpu/lm32/core.py:26:36: E127 continuation line over-indented for visual indent
./litex/soc/cores/cpu/lm32/core.py:27:36: E127 continuation line over-indented for visual indent
./litex/soc/cores/cpu/lm32/core.py:28:36: E127 continuation line over-indented for visual indent
./litex/soc/cores/cpu/lm32/core.py:29:36: E127 continuation line over-indented for visual indent
./litex/soc/cores/cpu/lm32/core.py:30:36: E127 continuation line over-indented for visual indent
./litex/soc/cores/cpu/lm32/core.py:31:36: E127 continuation line over-indented for visual indent
./litex/soc/cores/cpu/lm32/core.py:32:36: E127 continuation line over-indented for visual indent
./litex/soc/cores/cpu/lm32/core.py:33:36: E127 continuation line over-indented for visual indent
./litex/soc/cores/cpu/lm32/core.py:34:36: E127 continuation line over-indented for visual indent
./litex/soc/cores/cpu/lm32/core.py:35:36: E127 continuation line over-indented for visual indent
./litex/soc/cores/cpu/lm32/core.py:36:36: E127 continuation line over-indented for visual indent
./litex/soc/cores/cpu/lm32/core.py:37:36: E127 continuation line over-indented for visual indent
./litex/soc/cores/cpu/lm32/core.py:39:36: E127 continuation line over-indented for visual indent
./litex/soc/cores/cpu/lm32/core.py:40:36: E127 continuation line over-indented for visual indent
./litex/soc/cores/cpu/lm32/core.py:41:36: E127 continuation line over-indented for visual indent
./litex/soc/cores/cpu/lm32/core.py:42:36: E127 continuation line over-indented for visual indent
./litex/soc/cores/cpu/lm32/core.py:43:36: E127 continuation line over-indented for visual indent
./litex/soc/cores/cpu/lm32/core.py:44:36: E127 continuation line over-indented for visual indent
./litex/soc/cores/cpu/lm32/core.py:45:36: E127 continuation line over-indented for visual indent
./litex/soc/cores/cpu/lm32/core.py:46:36: E127 continuation line over-indented for visual indent
./litex/soc/cores/cpu/lm32/core.py:47:36: E127 continuation line over-indented for visual indent
./litex/soc/cores/cpu/lm32/core.py:48:36: E127 continuation line over-indented for visual indent
./litex/soc/cores/cpu/lm32/core.py:49:36: E127 continuation line over-indented for visual indent
./litex/soc/cores/cpu/lm32/core.py:50:36: E127 continuation line over-indented for visual indent
./litex/soc/cores/cpu/lm32/core.py:61:17: E128 continuation line under-indented for visual indent
./litex/soc/cores/cpu/lm32/core.py:62:17: E128 continuation line under-indented for visual indent
./litex/soc/cores/cpu/lm32/core.py:62:80: E501 line too long (93 > 79 characters)
./litex/soc/cores/cpu/lm32/core.py:63:17: E128 continuation line under-indented for visual indent
./litex/soc/cores/cpu/lm32/core.py:64:17: E128 continuation line under-indented for visual indent
./litex/soc/cores/cpu/lm32/core.py:64:80: E501 line too long (83 > 79 characters)
./litex/soc/cores/cpu/lm32/core.py:65:17: E128 continuation line under-indented for visual indent
./litex/soc/cores/spi/core.py:40:13: E124 closing bracket does not match visual indentation
./litex/soc/cores/spi/core.py:44:13: E124 closing bracket does not match visual indentation
./litex/soc/cores/spi/core.py:61:13: E124 closing bracket does not match visual indentation
./litex/soc/cores/spi/core.py:62:17: E128 continuation line under-indented for visual indent
./litex/soc/cores/spi/core.py:63:13: E124 closing bracket does not match visual indentation
./litex/soc/cores/spi/core.py:68:13: E128 continuation line under-indented for visual indent
./litex/soc/cores/spi/core.py:70:13: E124 closing bracket does not match visual indentation
./litex/soc/cores/spi/core.py:75:13: E128 continuation line under-indented for visual indent
./litex/soc/cores/spi/core.py:77:13: E124 closing bracket does not match visual indentation
./litex/soc/cores/spi/core.py:80:13: E128 continuation line under-indented for visual indent
./litex/soc/cores/spi/core.py:82:13: E124 closing bracket does not match visual indentation
./litex/soc/cores/spi/core.py:89:13: E128 continuation line under-indented for visual indent
./litex/soc/cores/spi/core.py:91:13: E124 closing bracket does not match visual indentation
./litex/soc/cores/spi/core.py:107:25: E124 closing bracket does not match visual indentation
./litex/soc/cores/spi/core.py:108:29: E128 continuation line under-indented for visual indent
./litex/soc/cores/spi/core.py:109:25: E124 closing bracket does not match visual indentation
./litex/soc/cores/spi/core.py:110:21: E124 closing bracket does not match visual indentation
./litex/soc/cores/spi/core.py:117:25: E124 closing bracket does not match visual indentation
./litex/soc/cores/spi/core.py:118:29: E128 continuation line under-indented for visual indent
./litex/soc/cores/spi/core.py:119:25: E124 closing bracket does not match visual indentation
./litex/soc/cores/spi/core.py:120:21: E124 closing bracket does not match visual indentation
./litex/soc/cores/spi/core.py:132:21: E124 closing bracket does not match visual indentation
./litex/soc/cores/spi/core.py:133:25: E128 continuation line under-indented for visual indent
./litex/soc/cores/spi/core.py:134:21: E124 closing bracket does not match visual indentation
./litex/soc/cores/spi/core.py:135:25: E128 continuation line under-indented for visual indent
./litex/soc/cores/spi/core.py:136:21: E124 closing bracket does not match visual indentation
./litex/soc/cores/spi/core.py:143:21: E124 closing bracket does not match visual indentation
./litex/soc/cores/spi/core.py:144:25: E128 continuation line under-indented for visual indent
./litex/soc/cores/spi/core.py:145:21: E124 closing bracket does not match visual indentation
./litex/soc/cores/spi/core.py:146:25: E128 continuation line under-indented for visual indent
./litex/soc/cores/spi/core.py:147:21: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/csr.py:11:80: E501 line too long (83 > 79 characters)
./litex/soc/interconnect/csr.py:52:80: E501 line too long (111 > 79 characters)
./litex/soc/interconnect/csr.py:56:80: E501 line too long (93 > 79 characters)
./litex/soc/interconnect/csr.py:63:80: E501 line too long (93 > 79 characters)
./litex/soc/interconnect/csr.py:68:80: E501 line too long (82 > 79 characters)
./litex/soc/interconnect/csr.py:79:80: E501 line too long (80 > 79 characters)
./litex/soc/interconnect/csr.py:80:21: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/csr.py:86:80: E501 line too long (85 > 79 characters)
./litex/soc/interconnect/csr.py:88:80: E501 line too long (86 > 79 characters)
./litex/soc/interconnect/csr.py:138:80: E501 line too long (87 > 79 characters)
./litex/soc/interconnect/csr_bus.py:21:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/csr_bus.py:30:80: E501 line too long (82 > 79 characters)
./litex/soc/interconnect/csr_bus.py:43:80: E501 line too long (80 > 79 characters)
./litex/soc/interconnect/csr_bus.py:69:80: E501 line too long (101 > 79 characters)
./litex/soc/interconnect/csr_bus.py:70:17: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/csr_bus.py:76:80: E501 line too long (113 > 79 characters)
./litex/soc/interconnect/csr_bus.py:80:80: E501 line too long (100 > 79 characters)
./litex/soc/interconnect/csr_bus.py:92:80: E501 line too long (85 > 79 characters)
./litex/soc/interconnect/csr_bus.py:95:80: E501 line too long (102 > 79 characters)
./litex/soc/interconnect/csr_bus.py:120:31: E502 the backslash is redundant between brackets
./litex/soc/interconnect/csr_bus.py:121:21: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/csr_bus.py:121:35: E502 the backslash is redundant between brackets
./litex/soc/interconnect/csr_bus.py:122:21: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/csr_bus.py:125:80: E501 line too long (91 > 79 characters)
./litex/soc/interconnect/csr_eventmanager.py:14:80: E501 line too long (89 > 79 characters)
./litex/soc/interconnect/csr_eventmanager.py:16:80: E501 line too long (107 > 79 characters)
./litex/soc/interconnect/csr_eventmanager.py:58:80: E501 line too long (83 > 79 characters)
./litex/soc/interconnect/csr_eventmanager.py:86:80: E501 line too long (80 > 79 characters)
./litex/soc/interconnect/stream.py:7:1: E302 expected 2 blank lines, found 1
./litex/soc/interconnect/stream.py:23:80: E501 line too long (80 > 79 characters)
./litex/soc/interconnect/stream.py:27:80: E501 line too long (89 > 79 characters)
./litex/soc/interconnect/stream.py:146:80: E501 line too long (81 > 79 characters)
./litex/soc/interconnect/stream.py:169:17: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/stream.py:172:13: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/stream.py:175:13: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/stream.py:176:17: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/stream.py:177:13: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/stream.py:213:17: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/stream.py:216:13: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/stream.py:264:5: E125 continuation line with same indent as next logical line
./litex/soc/interconnect/stream.py:264:9: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/stream.py:279:29: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/stream.py:314:9: E303 too many blank lines (2)
./litex/soc/interconnect/stream.py:325:80: E501 line too long (84 > 79 characters)
./litex/soc/interconnect/stream.py:344:1: E402 module level import not at top of file
./litex/soc/interconnect/stream.py:345:1: E402 module level import not at top of file
./litex/soc/interconnect/stream.py:347:1: E302 expected 2 blank lines, found 1
./litex/soc/interconnect/stream.py:353:1: E302 expected 2 blank lines, found 1
./litex/soc/interconnect/stream.py:356:1: E302 expected 2 blank lines, found 1
./litex/soc/interconnect/stream.py:365:1: E302 expected 2 blank lines, found 1
./litex/soc/interconnect/stream.py:377:80: E501 line too long (101 > 79 characters)
./litex/soc/interconnect/stream.py:413:17: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/stream.py:427:13: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/stream.py:431:80: E501 line too long (85 > 79 characters)
./litex/soc/interconnect/stream.py:453:80: E501 line too long (89 > 79 characters)
./litex/soc/interconnect/stream.py:469:17: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/stream.py:472:13: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/stream.py:477:80: E501 line too long (107 > 79 characters)
./litex/soc/interconnect/stream.py:492:80: E501 line too long (85 > 79 characters)
./litex/soc/interconnect/stream.py:504:80: E501 line too long (107 > 79 characters)
./litex/soc/interconnect/stream.py:525:17: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/stream.py:528:13: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/stream.py:531:13: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/stream.py:532:17: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/stream.py:533:13: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/stream_packet.py:11:1: E302 expected 2 blank lines, found 1
./litex/soc/interconnect/stream_packet.py:29:13: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/stream_packet.py:36:13: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/stream_packet.py:37:17: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/stream_packet.py:38:13: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/stream_packet.py:84:17: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/stream_packet.py:88:17: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/stream_packet.py:176:13: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/stream_packet.py:177:17: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/stream_packet.py:178:13: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/stream_packet.py:185:17: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/stream_packet.py:191:17: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/stream_packet.py:192:21: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/stream_packet.py:193:17: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/stream_packet.py:205:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/stream_packet.py:206:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/stream_packet.py:207:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/stream_packet.py:215:17: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/stream_packet.py:216:13: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/stream_packet.py:220:17: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/stream_packet.py:221:17: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/stream_packet.py:222:17: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/stream_packet.py:223:17: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/stream_packet.py:228:21: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/stream_packet.py:229:17: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/stream_packet.py:232:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/stream_packet.py:233:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/stream_packet.py:234:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/stream_packet.py:235:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/stream_packet.py:236:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/stream_packet.py:240:17: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/stream_packet.py:241:13: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/stream_packet.py:264:13: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/stream_packet.py:265:17: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/stream_packet.py:266:13: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/stream_packet.py:272:17: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/stream_packet.py:277:17: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/stream_packet.py:288:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/stream_packet.py:289:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/stream_packet.py:290:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/stream_packet.py:293:13: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/stream_packet.py:297:17: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/stream_packet.py:298:17: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/stream_packet.py:303:21: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/stream_packet.py:304:17: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/stream_packet.py:310:13: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/stream_packet.py:320:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/stream_packet.py:321:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/stream_packet.py:322:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/stream_packet.py:324:13: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/stream_sim.py:11:1: E302 expected 2 blank lines, found 1
./litex/soc/interconnect/stream_sim.py:118:80: E501 line too long (88 > 79 characters)
./litex/soc/interconnect/stream_sim.py:174:13: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/stream_sim.py:189:6: W292 no newline at end of file
./litex/soc/interconnect/wishbone.py:13:1: E302 expected 2 blank lines, found 1
./litex/soc/interconnect/wishbone.py:40:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbone.py:41:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbone.py:113:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbone.py:123:80: E501 line too long (82 > 79 characters)
./litex/soc/interconnect/wishbone.py:127:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbone.py:136:80: E501 line too long (103 > 79 characters)
./litex/soc/interconnect/wishbone.py:167:80: E501 line too long (92 > 79 characters)
./litex/soc/interconnect/wishbone.py:171:80: E501 line too long (82 > 79 characters)
./litex/soc/interconnect/wishbone.py:172:80: E501 line too long (84 > 79 characters)
./litex/soc/interconnect/wishbone.py:191:13: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/wishbone.py:192:17: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbone.py:193:13: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/wishbone.py:200:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbone.py:201:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbone.py:204:17: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/wishbone.py:207:13: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/wishbone.py:210:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbone.py:211:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbone.py:212:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbone.py:213:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbone.py:220:21: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/wishbone.py:221:17: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/wishbone.py:222:13: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/wishbone.py:223:17: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbone.py:224:13: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/wishbone.py:227:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbone.py:228:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbone.py:229:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbone.py:236:21: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/wishbone.py:237:17: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/wishbone.py:238:13: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/wishbone.py:239:17: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbone.py:240:13: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/wishbone.py:246:32: E261 at least two spaces before inline comment
./litex/soc/interconnect/wishbone.py:247:13: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/wishbone.py:263:9: E303 too many blank lines (2)
./litex/soc/interconnect/wishbone.py:268:13: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/wishbone.py:274:80: E501 line too long (80 > 79 characters)
./litex/soc/interconnect/wishbone.py:279:80: E501 line too long (82 > 79 characters)
./litex/soc/interconnect/wishbone.py:310:13: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/wishbone.py:311:17: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbone.py:312:13: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/wishbone.py:325:80: E501 line too long (113 > 79 characters)
./litex/soc/interconnect/wishbone.py:328:9: E303 too many blank lines (2)
./litex/soc/interconnect/wishbone.py:338:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbone.py:339:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbone.py:343:17: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/wishbone.py:346:21: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/wishbone.py:350:13: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/wishbone.py:353:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbone.py:359:17: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/wishbone.py:360:13: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/wishbone.py:361:17: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbone.py:362:13: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/wishbone.py:365:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbone.py:366:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbone.py:367:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbone.py:368:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbone.py:369:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbone.py:370:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbone.py:371:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbone.py:373:13: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/wishbone.py:376:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbone.py:377:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbone.py:378:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbone.py:379:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbone.py:382:13: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/wishbone.py:385:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbone.py:386:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbone.py:388:13: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/wishbone.py:394:29: E261 at least two spaces before inline comment
./litex/soc/interconnect/wishbone.py:394:80: E501 line too long (85 > 79 characters)
./litex/soc/interconnect/wishbone.py:411:17: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/wishbone.py:418:17: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/wishbone.py:428:80: E501 line too long (81 > 79 characters)
./litex/soc/interconnect/wishbone.py:462:80: E501 line too long (86 > 79 characters)
./litex/soc/interconnect/wishbone.py:473:80: E501 line too long (94 > 79 characters)
./litex/soc/interconnect/wishbone.py:475:80: E501 line too long (93 > 79 characters)
./litex/soc/interconnect/wishbone.py:484:80: E501 line too long (88 > 79 characters)
./litex/soc/interconnect/wishbone.py:504:13: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/wishbone.py:505:80: E501 line too long (84 > 79 characters)
./litex/soc/interconnect/wishbone.py:507:80: E501 line too long (96 > 79 characters)
./litex/soc/interconnect/wishbone.py:508:17: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/wishbone.py:516:9: E303 too many blank lines (2)
./litex/soc/interconnect/wishbone.py:545:17: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/wishbone.py:546:21: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbone.py:547:17: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/wishbone.py:558:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbone.py:560:13: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/wishbone.py:563:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbone.py:564:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbone.py:569:17: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/wishbone.py:571:13: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/wishbone.py:574:17: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/wishbone.py:581:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbone.py:582:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbone.py:583:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbone.py:584:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbone.py:586:18: E127 continuation line over-indented for visual indent
./litex/soc/interconnect/wishbone.py:588:17: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/wishbone.py:589:13: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/wishbone.py:592:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbone.py:593:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbone.py:594:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbone.py:595:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbone.py:596:9: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/wishbone.py:598:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbone.py:599:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbone.py:600:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbone.py:601:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbone.py:606:17: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/wishbone.py:609:13: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/wishbone.py:623:80: E501 line too long (90 > 79 characters)
./litex/soc/interconnect/wishbone.py:637:80: E501 line too long (100 > 79 characters)
./litex/soc/interconnect/wishbone.py:638:17: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbone.py:649:80: E501 line too long (82 > 79 characters)
./litex/soc/interconnect/wishbone.py:666:80: E501 line too long (85 > 79 characters)
./litex/soc/interconnect/wishbone.py:666:85: E502 the backslash is redundant between brackets
./litex/soc/interconnect/wishbone.py:667:21: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbone.py:670:80: E501 line too long (91 > 79 characters)
./litex/soc/interconnect/wishbonebridge.py:28:13: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/wishbonebridge.py:29:17: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbonebridge.py:30:13: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/wishbonebridge.py:38:13: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/wishbonebridge.py:39:17: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbonebridge.py:40:13: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/wishbonebridge.py:61:13: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/wishbonebridge.py:62:17: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbonebridge.py:63:13: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/wishbonebridge.py:74:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbonebridge.py:79:17: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/wishbonebridge.py:82:13: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/wishbonebridge.py:85:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbonebridge.py:88:13: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/wishbonebridge.py:91:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbonebridge.py:97:21: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/wishbonebridge.py:98:25: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbonebridge.py:99:21: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/wishbonebridge.py:101:17: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/wishbonebridge.py:102:13: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/wishbonebridge.py:105:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbonebridge.py:111:17: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/wishbonebridge.py:112:13: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/wishbonebridge.py:120:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbonebridge.py:121:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbonebridge.py:122:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbonebridge.py:123:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbonebridge.py:127:17: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/wishbonebridge.py:130:13: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/wishbonebridge.py:133:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbonebridge.py:134:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbonebridge.py:135:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbonebridge.py:136:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbonebridge.py:139:13: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/wishbonebridge.py:144:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbonebridge.py:145:13: E128 continuation line under-indented for visual indent
./litex/soc/interconnect/wishbonebridge.py:151:21: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/wishbonebridge.py:155:17: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/wishbonebridge.py:156:13: E124 closing bracket does not match visual indentation
./litex/soc/interconnect/wishbonebridge.py:161:80: E501 line too long (89 > 79 characters)
./litex/soc/integration/builder.py:85:80: E501 line too long (85 > 79 characters)
./litex/soc/integration/builder.py:99:80: E501 line too long (86 > 79 characters)
./litex/soc/integration/builder.py:107:10: E111 indentation is not a multiple of four
./litex/soc/integration/builder.py:146:80: E501 line too long (81 > 79 characters)
./litex/soc/integration/builder.py:147:80: E501 line too long (86 > 79 characters)
./litex/soc/integration/cpu_interface.py:13:1: E302 expected 2 blank lines, found 1
./litex/soc/integration/cpu_interface.py:22:80: E501 line too long (101 > 79 characters)
./litex/soc/integration/cpu_interface.py:26:12: E111 indentation is not a multiple of four
./litex/soc/integration/cpu_interface.py:59:80: E501 line too long (89 > 79 characters)
./litex/soc/integration/cpu_interface.py:67:80: E501 line too long (133 > 79 characters)
./litex/soc/integration/cpu_interface.py:69:80: E501 line too long (81 > 79 characters)
./litex/soc/integration/cpu_interface.py:74:80: E501 line too long (93 > 79 characters)
./litex/soc/integration/cpu_interface.py:97:80: E501 line too long (91 > 79 characters)
./litex/soc/integration/cpu_interface.py:127:80: E501 line too long (133 > 79 characters)
./litex/soc/integration/cpu_interface.py:135:21: E222 multiple spaces after operator
./litex/soc/integration/cpu_interface.py:155:80: E501 line too long (143 > 79 characters)
./litex/soc/integration/cpu_interface.py:164:80: E501 line too long (89 > 79 characters)
./litex/soc/integration/sdram_init.py:6:80: E501 line too long (88 > 79 characters)
./litex/soc/integration/sdram_init.py:25:80: E501 line too long (80 > 79 characters)
./litex/soc/integration/sdram_init.py:26:80: E501 line too long (80 > 79 characters)
./litex/soc/integration/sdram_init.py:28:80: E501 line too long (82 > 79 characters)
./litex/soc/integration/sdram_init.py:29:80: E501 line too long (82 > 79 characters)
./litex/soc/integration/sdram_init.py:33:80: E501 line too long (92 > 79 characters)
./litex/soc/integration/sdram_init.py:42:80: E501 line too long (89 > 79 characters)
./litex/soc/integration/sdram_init.py:47:80: E501 line too long (90 > 79 characters)
./litex/soc/integration/sdram_init.py:51:80: E501 line too long (89 > 79 characters)
./litex/soc/integration/sdram_init.py:56:80: E501 line too long (90 > 79 characters)
./litex/soc/integration/sdram_init.py:62:80: E501 line too long (93 > 79 characters)
./litex/soc/integration/sdram_init.py:65:80: E501 line too long (81 > 79 characters)
./litex/soc/integration/sdram_init.py:78:80: E501 line too long (129 > 79 characters)
./litex/soc/integration/sdram_init.py:82:80: E501 line too long (105 > 79 characters)
./litex/soc/integration/sdram_init.py:87:11: E221 multiple spaces before operator
./litex/soc/integration/sdram_init.py:95:80: E501 line too long (129 > 79 characters)
./litex/soc/integration/sdram_init.py:99:80: E501 line too long (105 > 79 characters)
./litex/soc/integration/sdram_init.py:104:11: E221 multiple spaces before operator
./litex/soc/integration/sdram_init.py:112:80: E501 line too long (129 > 79 characters)
./litex/soc/integration/sdram_init.py:116:80: E501 line too long (105 > 79 characters)
./litex/soc/integration/sdram_init.py:132:80: E501 line too long (81 > 79 characters)
./litex/soc/integration/sdram_init.py:133:80: E501 line too long (81 > 79 characters)
./litex/soc/integration/sdram_init.py:135:80: E501 line too long (129 > 79 characters)
./litex/soc/integration/sdram_init.py:139:80: E501 line too long (106 > 79 characters)
./litex/soc/integration/sdram_init.py:140:80: E501 line too long (96 > 79 characters)
./litex/soc/integration/sdram_init.py:141:80: E501 line too long (89 > 79 characters)
./litex/soc/integration/sdram_init.py:157:17: E131 continuation line unaligned for hanging indent
./litex/soc/integration/sdram_init.py:158:17: E131 continuation line unaligned for hanging indent
./litex/soc/integration/sdram_init.py:159:17: E131 continuation line unaligned for hanging indent
./litex/soc/integration/sdram_init.py:160:17: E131 continuation line unaligned for hanging indent
./litex/soc/integration/sdram_init.py:161:17: E131 continuation line unaligned for hanging indent
./litex/soc/integration/sdram_init.py:165:18: E131 continuation line unaligned for hanging indent
./litex/soc/integration/sdram_init.py:166:18: E131 continuation line unaligned for hanging indent
./litex/soc/integration/sdram_init.py:167:18: E131 continuation line unaligned for hanging indent
./litex/soc/integration/sdram_init.py:168:18: E131 continuation line unaligned for hanging indent
./litex/soc/integration/sdram_init.py:193:80: E501 line too long (85 > 79 characters)
./litex/soc/integration/sdram_init.py:194:80: E501 line too long (91 > 79 characters)
./litex/soc/integration/sdram_init.py:204:80: E501 line too long (108 > 79 characters)
./litex/soc/integration/sdram_init.py:205:80: E501 line too long (82 > 79 characters)
./litex/soc/integration/sdram_init.py:211:80: E501 line too long (89 > 79 characters)
./litex/soc/integration/soc_core.py:14:80: E501 line too long (82 > 79 characters)
./litex/soc/integration/soc_core.py:37:5: E301 expected 1 blank line, found 0
./litex/soc/integration/soc_core.py:38:17: E128 continuation line under-indented for visual indent
./litex/soc/integration/soc_core.py:39:17: E128 continuation line under-indented for visual indent
./litex/soc/integration/soc_core.py:40:17: E128 continuation line under-indented for visual indent
./litex/soc/integration/soc_core.py:41:17: E128 continuation line under-indented for visual indent
./litex/soc/integration/soc_core.py:42:17: E128 continuation line under-indented for visual indent
./litex/soc/integration/soc_core.py:43:17: E128 continuation line under-indented for visual indent
./litex/soc/integration/soc_core.py:44:17: E128 continuation line under-indented for visual indent
./litex/soc/integration/soc_core.py:45:17: E128 continuation line under-indented for visual indent
./litex/soc/integration/soc_core.py:46:17: E128 continuation line under-indented for visual indent
./litex/soc/integration/soc_core.py:68:80: E501 line too long (82 > 79 characters)
./litex/soc/integration/soc_core.py:76:80: E501 line too long (83 > 79 characters)
./litex/soc/integration/soc_core.py:78:80: E501 line too long (87 > 79 characters)
./litex/soc/integration/soc_core.py:80:80: E501 line too long (91 > 79 characters)
./litex/soc/integration/soc_core.py:87:80: E501 line too long (84 > 79 characters)
./litex/soc/integration/soc_core.py:92:80: E501 line too long (96 > 79 characters)
./litex/soc/integration/soc_core.py:94:80: E501 line too long (95 > 79 characters)
./litex/soc/integration/soc_core.py:97:80: E501 line too long (112 > 79 characters)
./litex/soc/integration/soc_core.py:101:80: E501 line too long (81 > 79 characters)
./litex/soc/integration/soc_core.py:104:80: E501 line too long (105 > 79 characters)
./litex/soc/integration/soc_core.py:139:80: E501 line too long (92 > 79 characters)
./litex/soc/integration/soc_core.py:158:80: E501 line too long (89 > 79 characters)
./litex/soc/integration/soc_core.py:172:80: E501 line too long (85 > 79 characters)
./litex/soc/integration/soc_core.py:182:80: E501 line too long (110 > 79 characters)
./litex/soc/integration/soc_core.py:186:80: E501 line too long (87 > 79 characters)
./litex/soc/integration/soc_core.py:187:17: E128 continuation line under-indented for visual indent
./litex/soc/integration/soc_core.py:191:17: E128 continuation line under-indented for visual indent
./litex/soc/integration/soc_core.py:191:80: E501 line too long (113 > 79 characters)
./litex/soc/integration/soc_core.py:192:80: E501 line too long (85 > 79 characters)
./litex/soc/integration/soc_core.py:196:80: E501 line too long (126 > 79 characters)
./litex/soc/integration/soc_core.py:198:80: E501 line too long (157 > 79 characters)
./litex/soc/integration/soc_core.py:202:80: E501 line too long (82 > 79 characters)
./litex/soc/integration/soc_core.py:204:80: E501 line too long (96 > 79 characters)
./litex/soc/integration/soc_sdram.py:18:80: E501 line too long (98 > 79 characters)
./litex/soc/integration/soc_sdram.py:19:17: E128 continuation line under-indented for visual indent
./litex/soc/integration/soc_sdram.py:22:80: E501 line too long (87 > 79 characters)
./litex/soc/integration/soc_sdram.py:23:80: E501 line too long (88 > 79 characters)
./litex/soc/integration/soc_sdram.py:24:80: E501 line too long (90 > 79 characters)
./litex/soc/integration/soc_sdram.py:25:80: E501 line too long (83 > 79 characters)
./litex/soc/integration/soc_sdram.py:28:80: E501 line too long (103 > 79 characters)
./litex/soc/integration/soc_sdram.py:53:80: E501 line too long (82 > 79 characters)
./litex/soc/integration/soc_sdram.py:65:80: E501 line too long (95 > 79 characters)
./litex/soc/integration/soc_sdram.py:72:80: E501 line too long (88 > 79 characters)
./litex/soc/integration/soc_sdram.py:76:80: E501 line too long (99 > 79 characters)
./litex/soc/integration/soc_sdram.py:77:80: E501 line too long (95 > 79 characters)
./litex/soc/integration/soc_sdram.py:78:80: E501 line too long (89 > 79 characters)
./litex/soc/integration/soc_sdram.py:86:80: E501 line too long (95 > 79 characters)

migen.build and litex.build has differences for DDRInput

This seems possibly important?

--- third_party/litex/litex/build/xilinx/common.py      2018-10-03 15:56:19.937855898 -0700
+++ third_party/migen/migen/build/xilinx/common.py      2018-10-03 15:46:47.376587690 -0700
@@ -14,7 +14,7 @@
 from migen.genlib.resetsync import AsyncResetSynchronizer
 from migen.genlib.io import *
 
-from litex.build import tools
+from migen.build import tools
 
 
 colors = []
@@ -169,9 +169,9 @@
 class XilinxDDRInputImplS7(Module):
     def __init__(self, i, o1, o2, clk):
         self.specials += Instance("IDDR",
-                p_DDR_CLK_EDGE="SAME_EDGE_PIPELINED",
+                p_DDR_CLK_EDGE="SAME_EDGE",
                 i_C=clk, i_CE=1, i_S=0, i_R=0,
-                o_D=i, i_Q1=o1, i_Q2=o2,
+                i_D=i, o_Q1=o1, o_Q2=o2,
         )
 
 
@@ -206,9 +206,10 @@
         self.specials += Instance("IDDRE1",
             p_DDR_CLK_EDGE="SAME_EDGE_PIPELINED",
             p_IS_C_INVERTED=0,
+            p_IS_CB_INVERTED=1,
             i_D=i,
             o_Q1=o1, o_Q2=o2,
-            i_C=clk, i_CB=~clk,
+            i_C=clk, i_CB=clk,
             i_R=0
         )

AttributeError: 'set' object has no attribute 'specials'

I'm guessing a bad merge?

make: Leaving directory `/home/travis/build/mithro/litex/soc_basesoc_versa_ecp5/software/bios'
Traceback (most recent call last):
  File "/home/travis/miniconda/envs/litex/lib/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/home/travis/miniconda/envs/litex/lib/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/home/travis/build/mithro/litex/litex/boards/targets/versa_ecp5.py", line 93, in <module>
    main()
  File "/home/travis/build/mithro/litex/litex/boards/targets/versa_ecp5.py", line 89, in main
    builder.build()
  File "/home/travis/build/mithro/litex/litex/soc/integration/builder.py", line 171, in build
    toolchain_path=toolchain_path, **kwargs)
  File "/home/travis/build/mithro/litex/litex/soc/integration/soc_core.py", line 403, in build
    return self.platform.build(self, *args, **kwargs)
  File "/home/travis/build/mithro/litex/litex/build/lattice/platform.py", line 29, in build
    return self.toolchain.build(self, *args, **kwargs)
  File "/home/travis/build/mithro/litex/litex/build/lattice/trellis.py", line 152, in build
    top_output = platform.get_verilog(fragment, name=build_name, **kwargs)
  File "/home/travis/build/mithro/litex/litex/build/lattice/platform.py", line 26, in get_verilog
    **kwargs)
  File "/home/travis/build/mithro/litex/litex/build/generic_platform.py", line 368, in get_verilog
    create_clock_domains=False, **kwargs)
  File "/home/travis/build/mithro/litex/litex/gen/fhdl/verilog.py", line 380, in convert
    fs, lowered_specials = lower_specials(special_overrides, f.specials)
  File "/home/travis/miniconda/envs/litex/lib/python3.6/site-packages/migen/fhdl/tools.py", line 352, in lower_specials
    fs, lowered_specials_step = _lower_specials_step(overrides, f.specials)
AttributeError: 'set' object has no attribute 'specials'
The command "./.travis-build-socs.sh" exited with 1.

Add TinyFPGA EX support

  • Verify ECP5 diamond build support.
  • Verify programmer support.
  • Create or reuse HyperRAM core.
  • Port LiteSDCard to ECP5. (adapt primitives).

Allow litex_server to bind to other interfaces

The litex_server binary is incredibly useful for bridging Wishbone to Ethernet. It is some of the magic that makes Litex work.

I'm running litex_server on a Raspberry Pi, and I would like to run openocd and/or devmem2_litex on my development system. This requires that I bind litex_server to "0.0.0.0" instead of to "localhost".

Right now I manually modify litex_server, however this change is unsuitable for upstreaming because it is insecure.

It would be nice if there was a way to add an option (command-line switch, environment variable, or something else) to litex_server to enable this functionality.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.