#!/usr/bin/env python3 # This variable defines all the external programs that this module # relies on. lxbuildenv reads this variable in order to ensure # the build will finish without exiting due to missing third-party # programs. LX_DEPENDENCIES = ["riscv", "icestorm", "yosys"] # Import lxbuildenv to integrate the deps/ directory import lxbuildenv # Disable pylint's E1101, which breaks completely on migen #pylint:disable=E1101 #from migen import * from litex.build.xilinx import VivadoProgrammer, XilinxPlatform from litex.build.generic_platform import Pins, IOStandard from litex.soc.integration import SoCSDRAM from litex.soc.integration.builder import Builder from litex.soc.integration.soc_core import csr_map_update _io = [ ("clk50", 0, Pins("J19"), IOStandard("LVCMOS33")), ] class Platform(XilinxPlatform): def __init__(self, toolchain="vivado", programmer="vivado", part="35"): part = "xc7a" + part + "t-fgg484-2" def create_programmer(self): if self.programmer == "vivado": return VivadoProgrammer(flash_part="n25q128-3.3v-spi-x1_x2_x4") else: raise ValueError("{} programmer is not supported" .format(self.programmer)) def do_finalize(self, fragment): XilinxPlatform.do_finalize(self, fragment) class BaseSoC(SoCSDRAM): csr_peripherals = [ "ddrphy", # "dna", "xadc", "cpu_or_bridge", ] csr_map_update(SoCSDRAM.csr_map, csr_peripherals) def __init__(self, platform, **kwargs): # clk_freq = int(100e6) self.integrated_main_ram_size = 8192 self.add_memory() def main(): platform = Platform() soc = BaseSoC(platform) builder = Builder(soc, output_dir="build", csr_csv="test/csr.csv") vns = builder.build() soc.do_exit(vns) if __name__ == "__main__": main()