rename milkymist-ng to MiSoC

This commit is contained in:
Sebastien Bourdeauducq 2013-11-09 15:27:32 +01:00
parent 307fb41ca3
commit 0b881d934f
66 changed files with 109 additions and 116 deletions

3
.gitignore vendored
View File

@ -6,9 +6,8 @@ build/*
*.elf
*.bin
*.fbi
tools/bin2hex
tools/flterm
tools/mkmmimg
tools/mkmscimg
tools/byteswap
software/include/hw/csr.h
software/include/hw/sdram_phy.h

View File

@ -1,4 +1,4 @@
Unless otherwise noted, milkymist-ng is copyright (C) 2011-2013 Sebastien Bourdeauducq.
Unless otherwise noted, MiSoC is copyright (C) 2011-2013 Sebastien Bourdeauducq.
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,

30
README
View File

@ -1,17 +1,10 @@
[> Milkymist-ng system-on-chip
[> MiSoC system-on-chip
------------------------------
This is the next-generation Milkymist(tm) system-on-chip design,
introducing two key features:
* Built on the powerful Migen VLSI logic design system.
* Increased system memory performance thanks to LASMI.
A high performance system-on-chip design based on Migen.
This translates to more development productivity, better video resolution
and quality, ease of designing complex hardware accelerators, and much
more flexibility in hardware designs.
The milkymist-ng SoC supports the Mixxeo and the Milkymist One.
Obtain yours at http://milkymist.org
MiSoC supports the Mixxeo and the Milkymist One.
Obtain your development system at http://milkymist.org
[> Instructions (software)
--------------------------
@ -53,28 +46,29 @@ Once this is done, build the bitstream with:
This will generate the build/soc-<platform>.bit programming file
and load it with UrJTAG.
A new BIOS needs to be built and flashed for the -ng SoC.
A new BIOS needs to be built and flashed for MiSoC.
There is no compatibility with Milkymist SoC.
Enjoy!
[> Misc
-------
Code repository:
https://github.com/milkymist/milkymist-ng
https://github.com/milkymist/misoc
Send questions, comments and patches to devel [AT] lists.milkymist.org
We are also on IRC: #milkymist on the Freenode network.
Milkymist-ng is released under the very permissive two-clause BSD license. Under
the terms of this license, you are authorized to use milkymist-ng for
MiSoC is released under the very permissive two-clause BSD license. Under
the terms of this license, you are authorized to use MiSoC for
closed-source proprietary designs.
Even though we do not require you to do so, those things are awesome, so please
do them if possible:
* tell us that you are using milkymist-ng
* cite milkymist-ng in publications related to research it has helped
* tell us that you are using MiSoC
* cite MiSoC in publications related to research it has helped
* send us feedback and suggestions for improvements
* send us bug reports when something goes wrong
* send us the modifications and improvements you have done to milkymist-ng.
* send us the modifications and improvements you have done to MiSoC.
The use of "git format-patch" is recommended. If your submission is large and
complex and/or you are not sure how to proceed, feel free to discuss it on
the mailing list or IRC (#milkymist on Freenode) beforehand.

View File

@ -4,8 +4,8 @@ import argparse, os, importlib, subprocess
from mibuild.tools import write_to_file
from milkymist import cpuif
from milkymist.s6ddrphy import initsequence
from misoclib import cpuif
from misoclib.s6ddrphy import initsequence
import top, jtag
def build(platform_name, build_bitstream, build_header, csr_csv_filename, *soc_args, **soc_kwargs):
@ -57,7 +57,7 @@ TIMESPEC "TSise_sucks2" = FROM "GRPsys_clk" TO "GRPvga_clk" TIG;
write_to_file(csr_csv_filename, csr_csv)
def main():
parser = argparse.ArgumentParser(description="milkymist-ng - a high performance SoC built on Migen technology.")
parser = argparse.ArgumentParser(description="MiSoC - a high performance SoC based on Migen.")
parser.add_argument("-p", "--platform", default="mixxeo", help="platform to build for")
parser.add_argument("-B", "--no-bitstream", default=False, action="store_true", help="do not build bitstream file")
parser.add_argument("-H", "--no-header", default=False, action="store_true", help="do not build C header files with CSR/IRQ/SDRAM_PHY defs")

View File

@ -1,15 +1,15 @@
from migen.fhdl.std import *
from migen.bank.description import AutoCSR
from milkymist.dvisampler.edid import EDID
from milkymist.dvisampler.clocking import Clocking
from milkymist.dvisampler.datacapture import DataCapture
from milkymist.dvisampler.charsync import CharSync
from milkymist.dvisampler.wer import WER
from milkymist.dvisampler.decoding import Decoding
from milkymist.dvisampler.chansync import ChanSync
from milkymist.dvisampler.analysis import SyncPolarity, ResolutionDetection, FrameExtraction
from milkymist.dvisampler.dma import DMA
from misoclib.dvisampler.edid import EDID
from misoclib.dvisampler.clocking import Clocking
from misoclib.dvisampler.datacapture import DataCapture
from misoclib.dvisampler.charsync import CharSync
from misoclib.dvisampler.wer import WER
from misoclib.dvisampler.decoding import Decoding
from misoclib.dvisampler.chansync import ChanSync
from misoclib.dvisampler.analysis import SyncPolarity, ResolutionDetection, FrameExtraction
from misoclib.dvisampler.dma import DMA
class DVISampler(Module, AutoCSR):
def __init__(self, pads, asmiport, n_dma_slots=2):

View File

@ -5,7 +5,7 @@ from migen.genlib.record import Record
from migen.bank.description import *
from migen.flow.actor import *
from milkymist.dvisampler.common import channel_layout, frame_layout
from misoclib.dvisampler.common import channel_layout, frame_layout
class SyncPolarity(Module):
def __init__(self):

View File

@ -5,7 +5,7 @@ from migen.genlib.record import Record, layout_len
from migen.genlib.misc import optree
from migen.bank.description import *
from milkymist.dvisampler.common import channel_layout
from misoclib.dvisampler.common import channel_layout
class _SyncBuffer(Module):
def __init__(self, width, depth):

View File

@ -3,7 +3,7 @@ from migen.genlib.cdc import MultiReg
from migen.genlib.misc import optree
from migen.bank.description import *
from milkymist.dvisampler.common import control_tokens
from misoclib.dvisampler.common import control_tokens
class CharSync(Module, AutoCSR):
def __init__(self, required_controls=8):

View File

@ -4,9 +4,9 @@ from migen.genlib.record import layout_len
from migen.bank.description import AutoCSR
from migen.actorlib import structuring, dma_lasmi, spi
from milkymist.dvisampler.edid import EDID
from milkymist.dvisampler.clocking import Clocking
from milkymist.dvisampler.datacapture import DataCapture
from misoclib.dvisampler.edid import EDID
from misoclib.dvisampler.clocking import Clocking
from misoclib.dvisampler.datacapture import DataCapture
class RawDVISampler(Module, AutoCSR):
def __init__(self, pads, asmiport):

View File

@ -1,7 +1,7 @@
from migen.fhdl.std import *
from migen.genlib.record import Record
from milkymist.dvisampler.common import control_tokens, channel_layout
from misoclib.dvisampler.common import control_tokens, channel_layout
class Decoding(Module):
def __init__(self):

View File

@ -5,7 +5,7 @@ from migen.bank.eventmanager import *
from migen.flow.actor import *
from migen.actorlib import dma_lasmi
from milkymist.dvisampler.common import frame_layout
from misoclib.dvisampler.common import frame_layout
# Slot status: EMPTY=0 LOADED=1 PENDING=2
class _Slot(Module, AutoCSR):

View File

@ -3,7 +3,7 @@ from migen.bank.description import *
from migen.genlib.misc import optree
from migen.genlib.cdc import PulseSynchronizer
from milkymist.dvisampler.common import control_tokens
from misoclib.dvisampler.common import control_tokens
class WER(Module, AutoCSR):
def __init__(self, period_bits=24):

View File

@ -4,8 +4,8 @@ from migen.flow.network import *
from migen.bank.description import CSRStorage, AutoCSR
from migen.actorlib import dma_lasmi, structuring, sim, spi
from milkymist.framebuffer.format import bpp, pixel_layout, FrameInitiator, VTG
from milkymist.framebuffer.phy import Driver
from misoclib.framebuffer.format import bpp, pixel_layout, FrameInitiator, VTG
from misoclib.framebuffer.phy import Driver
class Framebuffer(Module, AutoCSR):
def __init__(self, pads_vga, pads_dvi, lasmim, simulation=False):

View File

@ -4,8 +4,8 @@ from migen.genlib.cdc import MultiReg
from migen.bank.description import *
from migen.flow.actor import *
from milkymist.framebuffer.format import bpc_phy, phy_layout
from milkymist.framebuffer import dvi
from misoclib.framebuffer.format import bpc_phy, phy_layout
from misoclib.framebuffer import dvi
class _FIFO(Module):
def __init__(self):

View File

@ -3,9 +3,9 @@ from collections import namedtuple
from migen.fhdl.std import *
from migen.bus import dfi, lasmibus
from milkymist.lasmicon.refresher import *
from milkymist.lasmicon.bankmachine import *
from milkymist.lasmicon.multiplexer import *
from misoclib.lasmicon.refresher import *
from misoclib.lasmicon.bankmachine import *
from misoclib.lasmicon.multiplexer import *
PhySettings = namedtuple("PhySettings", "memtype dfi_d nphases rdphase wrphase rdcmdphase wrcmdphase cl read_latency write_latency")

View File

@ -4,7 +4,7 @@ from migen.genlib.fsm import FSM, NextState
from migen.genlib.misc import optree
from migen.genlib.fifo import SyncFIFO
from milkymist.lasmicon.multiplexer import *
from misoclib.lasmicon.multiplexer import *
class _AddressSlicer:
def __init__(self, col_a, address_align):

View File

@ -4,7 +4,7 @@ from migen.genlib.misc import optree
from migen.genlib.fsm import FSM, NextState
from migen.bank.description import AutoCSR
from milkymist.lasmicon.perf import Bandwidth
from misoclib.lasmicon.perf import Bandwidth
class CommandRequest:
def __init__(self, a, ba):

View File

@ -2,7 +2,7 @@ from migen.fhdl.std import *
from migen.genlib.misc import timeline
from migen.genlib.fsm import FSM
from milkymist.lasmicon.multiplexer import *
from misoclib.lasmicon.multiplexer import *
class Refresher(Module):
def __init__(self, a, ba, tRP, tREFI, tRFC):

View File

@ -24,7 +24,7 @@ from migen.fhdl.std import *
from migen.bus.dfi import *
from migen.genlib.record import *
from milkymist import lasmicon
from misoclib import lasmicon
class S6DDRPHY(Module):
def __init__(self, pads, memtype, nphases, cl, rd_bitslip, wr_bitslip, dqs_ddr_alignment):

View File

@ -1,5 +1,5 @@
M2DIR=../..
include $(M2DIR)/software/common.mak
MSCDIR=../..
include $(MSCDIR)/software/common.mak
OBJECTS=isr.o sdram.o main.o boot-helper.o boot.o dataflow.o
@ -9,20 +9,20 @@ all: bios.bin
-include $(OBJECTS:.o=.d)
%.bin: %.elf
$(MAKE) -C $(M2DIR)/tools
$(MAKE) -C $(MSCDIR)/tools
$(OBJCOPY) -O binary $< $@
chmod -x $@
$(M2DIR)/tools/mkmmimg $@ write
$(MSCDIR)/tools/mkmscimg $@ write
bios.elf: linker.ld $(OBJECTS) libs
%.elf:
$(LD) $(LDFLAGS) -T $< -N -o $@ \
$(M2DIR)/software/libbase/crt0.o \
$(MSCDIR)/software/libbase/crt0.o \
$(OBJECTS) \
-L$(M2DIR)/software/libnet \
-L$(M2DIR)/software/libbase \
-L$(M2DIR)/software/libcompiler-rt \
-L$(MSCDIR)/software/libnet \
-L$(MSCDIR)/software/libbase \
-L$(MSCDIR)/software/libcompiler-rt \
-lnet -lbase-nofloat -lcompiler-rt
chmod -x $@
@ -36,9 +36,9 @@ main.o: main.c
$(assemble)
libs:
$(MAKE) -C $(M2DIR)/software/libcompiler-rt
$(MAKE) -C $(M2DIR)/software/libbase
$(MAKE) -C $(M2DIR)/software/libnet
$(MAKE) -C $(MSCDIR)/software/libcompiler-rt
$(MAKE) -C $(MSCDIR)/software/libbase
$(MAKE) -C $(MSCDIR)/software/libnet
flash: bios.bin
m1nor-ng bios.bin

View File

@ -307,7 +307,7 @@ static void dfs(char *baseaddr)
static void help(void)
{
puts("Milkymist(tm) BIOS");
puts("MiSoC BIOS");
puts("Don't know what to do? Try 'flashboot'.\n");
puts("Available commands:");
puts("mr - read address space");
@ -402,7 +402,7 @@ static void crcbios(void)
}
static const char banner[] =
"\nMILKYMIST(tm) v"VERSION" BIOS http://www.milkymist.org\n"
"\nMiSoC(tm) v"VERSION" BIOS http://www.milkymist.org\n"
"(c) Copyright 2007-2013 Sebastien Bourdeauducq\n"
"Built "__DATE__" "__TIME__"\n\n"
"This program is free software: you can redistribute it and/or modify\n"

View File

@ -38,7 +38,7 @@ endif
# Toolchain options
#
INCLUDES = -I$(M2DIR)/software/include/base -I$(M2DIR)/software/include -I$(M2DIR)/common
INCLUDES = -I$(MSCDIR)/software/include/base -I$(MSCDIR)/software/include -I$(MSCDIR)/common
COMMONFLAGS = -O3 -mbarrel-shift-enabled -mmultiply-enabled -mdivide-enabled -msign-extend-enabled \
-Wall -fno-builtin -nostdinc $(INCLUDES)
CFLAGS = $(COMMONFLAGS) -Wstrict-prototypes -Wold-style-definition -Wmissing-prototypes

View File

@ -1,5 +1,5 @@
/*
* Milkymist SoC (Software)
* MiSoC
* Copyright (C) 2007, 2008, 2009, 2011 Sebastien Bourdeauducq
* Copyright (C) Linux kernel developers
*

View File

@ -1,5 +1,5 @@
/*
* Milkymist SoC (Software)
* MiSoC
* Copyright (C) 2007, 2008, 2009, 2010 Sebastien Bourdeauducq
* Copyright (C) Linus Torvalds and Linux kernel developers
*

View File

@ -1,5 +1,5 @@
M2DIR=../..
include $(M2DIR)/software/common.mak
MSCDIR=../..
include $(MSCDIR)/software/common.mak
OBJECTS=setjmp.o libc.o errno.o crc16.o crc32.o console.o system.o id.o uart.o time.o qsort.o strtod.o

View File

@ -43,5 +43,5 @@ void id_print(void)
get_soc_version_formatted(soc_version);
get_sysid_formatted(sysid);
printf("Running on Milkymist-ng SoC %s (sysid:%s) at %dMHz\n", soc_version, sysid, identifier_frequency_read()/1000000);
printf("Running on MiSoC %s (sysid:%s) at %dMHz\n", soc_version, sysid, identifier_frequency_read()/1000000);
}

View File

@ -1,5 +1,5 @@
/*
* Milkymist SoC (Software)
* MiSoC
* Copyright (C) 2007, 2008, 2009, 2010, 2011 Sebastien Bourdeauducq
* Copyright (C) Linus Torvalds and Linux kernel developers
*

View File

@ -1,5 +1,5 @@
/*
* Milkymist SoC (Software)
* MiSoC
* Copyright (C) 2007, 2008, 2009 Sebastien Bourdeauducq
* Copyright (C) Linux kernel developers
*

View File

@ -1,5 +1,5 @@
M2DIR=../..
include $(M2DIR)/software/common.mak
MSCDIR=../..
include $(MSCDIR)/software/common.mak
CFLAGS+=-D_YUGA_LITTLE_ENDIAN=0 -D_YUGA_BIG_ENDIAN=1 -Wno-missing-prototypes

View File

@ -1,5 +1,5 @@
M2DIR=../..
include $(M2DIR)/software/common.mak
MSCDIR=../..
include $(MSCDIR)/software/common.mak
OBJECTS=microudp.o tftp.o

View File

@ -1,5 +1,5 @@
M2DIR=../..
include $(M2DIR)/software/common.mak
MSCDIR=../..
include $(MSCDIR)/software/common.mak
OBJECTS=isr.o main.o
@ -16,12 +16,12 @@ memtest.elf: $(OBJECTS) libs
%.elf:
$(LD) $(LDFLAGS) \
-T $(M2DIR)/software/libbase/linker-sdram.ld \
-T $(MSCDIR)/software/libbase/linker-sdram.ld \
-N -o $@ \
$(M2DIR)/software/libbase/crt0.o \
$(MSCDIR)/software/libbase/crt0.o \
$(OBJECTS) \
-L$(M2DIR)/software/libbase \
-L$(M2DIR)/software/libcompiler-rt \
-L$(MSCDIR)/software/libbase \
-L$(MSCDIR)/software/libcompiler-rt \
-lbase -lcompiler-rt
chmod -x $@
@ -35,12 +35,12 @@ main.o: main.c
$(assemble)
libs:
$(MAKE) -C $(M2DIR)/software/libcompiler-rt
$(MAKE) -C $(M2DIR)/software/libbase
$(MAKE) -C $(MSCDIR)/software/libcompiler-rt
$(MAKE) -C $(MSCDIR)/software/libbase
load: memtest.bin
$(MAKE) -C $(M2DIR)/tools
$(M2DIR)/tools/flterm --port /dev/ttyUSB0 --kernel memtest.bin
$(MAKE) -C $(MSCDIR)/tools
$(MSCDIR)/tools/flterm --port /dev/ttyUSB0 --kernel memtest.bin
clean:

View File

@ -1,5 +1,5 @@
M2DIR=../..
include $(M2DIR)/software/common.mak
MSCDIR=../..
include $(MSCDIR)/software/common.mak
OBJECTS=isr.o fb.o dvisampler0.o dvisampler1.o main.o
@ -13,18 +13,18 @@ all: videomixer.bin videomixer.fbi
chmod -x $@
%.fbi: %.bin
$(M2DIR)/tools/mkmmimg $< write $@
$(MSCDIR)/tools/mkmscimg $< write $@
videomixer.elf: $(OBJECTS) libs
%.elf:
$(LD) $(LDFLAGS) \
-T $(M2DIR)/software/libbase/linker-sdram.ld \
-T $(MSCDIR)/software/libbase/linker-sdram.ld \
-N -o $@ \
$(M2DIR)/software/libbase/crt0.o \
$(MSCDIR)/software/libbase/crt0.o \
$(OBJECTS) \
-L$(M2DIR)/software/libbase \
-L$(M2DIR)/software/libcompiler-rt \
-L$(MSCDIR)/software/libbase \
-L$(MSCDIR)/software/libcompiler-rt \
-lbase -lcompiler-rt
chmod -x $@
@ -62,12 +62,12 @@ dvisampler0.o: dvisampler0.h
dvisampler1.o: dvisampler1.h
libs:
$(MAKE) -C $(M2DIR)/software/libcompiler-rt
$(MAKE) -C $(M2DIR)/software/libbase
$(MAKE) -C $(MSCDIR)/software/libcompiler-rt
$(MAKE) -C $(MSCDIR)/software/libbase
load: videomixer.bin
$(MAKE) -C $(M2DIR)/tools
$(M2DIR)/tools/flterm --port /dev/ttyUSB0 --kernel videomixer.bin
$(MAKE) -C $(MSCDIR)/tools
$(MSCDIR)/tools/flterm --port /dev/ttyUSB0 --kernel videomixer.bin
flash: videomixer.fbi
m1nor-ng videomixer.fbi

View File

@ -1,7 +1,7 @@
from migen.fhdl.std import *
from migen.sim.generic import *
from milkymist.dvisampler.chansync import ChanSync
from misoclib.dvisampler.chansync import ChanSync
class TB(Module):
def __init__(self, test_seq_it):

View File

@ -2,7 +2,7 @@ from migen.fhdl.std import *
from migen.bus import asmibus
from migen.sim.generic import Simulator
from milkymist.framebuffer import *
from misoclib.framebuffer import *
def main():
hub = asmibus.Hub(16, 128)

View File

@ -2,7 +2,7 @@ from migen.fhdl.std import *
from migen.bus.lasmibus import *
from migen.sim.generic import Simulator, TopLevel
from milkymist.lasmicon.bankmachine import *
from misoclib.lasmicon.bankmachine import *
from common import sdram_geom, sdram_timing, CommandLogger

View File

@ -4,7 +4,7 @@ from math import ceil
from migen.fhdl.std import *
from migen.sim.generic import Proxy
from milkymist import lasmicon
from misoclib import lasmicon
MHz = 1000000
clk_freq = (83 + Fraction(1, 3))*MHz

View File

@ -2,7 +2,7 @@ from migen.fhdl.std import *
from migen.bus.lasmibus import *
from migen.sim.generic import Simulator, TopLevel
from milkymist.lasmicon import *
from misoclib.lasmicon import *
from common import sdram_phy, sdram_geom, sdram_timing, DFILogger

View File

@ -3,7 +3,7 @@ from migen.bus import lasmibus
from migen.actorlib import dma_lasmi
from migen.sim.generic import Simulator, TopLevel, Proxy
from milkymist.lasmicon import *
from misoclib.lasmicon import *
from common import sdram_phy, sdram_geom, sdram_timing, DFILogger

View File

@ -3,7 +3,7 @@ from migen.bus import wishbone, wishbone2lasmi, lasmibus
from migen.bus.transactions import *
from migen.sim.generic import Simulator, TopLevel
from milkymist.lasmicon import *
from misoclib.lasmicon import *
from common import sdram_phy, sdram_geom, sdram_timing, DFILogger

View File

@ -3,7 +3,7 @@ from random import Random
from migen.fhdl.std import *
from migen.sim.generic import Simulator, TopLevel
from milkymist.lasmicon.refresher import *
from misoclib.lasmicon.refresher import *
from common import CommandLogger

View File

@ -1,4 +1,4 @@
TARGETS=mkmmimg flterm byteswap
TARGETS=mkmscimg flterm byteswap
CC=gcc
RM ?= rm -f
@ -7,7 +7,7 @@ all: $(TARGETS)
%: %.c
$(CC) -O2 -Wall -I../common -s -o $@ $<
install: mkmmimg flterm
install: mkmscimg flterm
install -d /usr/local/bin
install -m755 -t /usr/local/bin $^

View File

@ -1,5 +1,5 @@
/*
* Milkymist SoC
* MiSoC
* Copyright (C) 2007, 2008, 2009, 2010 Sebastien Bourdeauducq
*
* This program is free software: you can redistribute it and/or modify

View File

@ -1,5 +1,5 @@
/*
* Milkymist SoC
* MiSoC
* Copyright (C) 2007, 2008, 2009, 2010, 2011 Sebastien Bourdeauducq
* Copyright (C) 2011 Michael Walle
* Copyright (C) 2004 MontaVista Software, Inc
@ -645,7 +645,7 @@ static const struct option options[] = {
static void print_usage()
{
fprintf(stderr, "Serial boot program for Milkymist SoC - v. 2.3\n");
fprintf(stderr, "Serial boot program for MiSoC - v. 2.4\n");
fprintf(stderr, "Copyright (C) 2007, 2008, 2009, 2010, 2011 Sebastien Bourdeauducq\n");
fprintf(stderr, "Copyright (C) 2011 Michael Walle\n");
fprintf(stderr, "Copyright (C) 2004 MontaVista Software, Inc\n\n");

View File

@ -1,8 +1,8 @@
/*
* CRC32 computation tool and Milkymist image file writer
* CRC32 computation tool and MiSoC image file writer
* (c) 2009, 2010, 2012 Sebastien Bourdeauducq
* Released under GNU GPL v3
* This file is part of Milkymist.
* This file is part of MiSoC.
*/
/* crc32.c -- compute the CRC-32 of a data stream
@ -103,7 +103,7 @@ int main(int argc, char *argv[])
if(((argc != 2) && (argc != 3) && (argc != 4))
|| ((argc > 2) && (strcmp(argv[2], "write")))) {
fprintf(stderr, "Usage: mkmmimg <filename> [write] [dest]\n");
fprintf(stderr, "Usage: mkmscimg <filename> [write] [dest]\n");
return 1;
}

2
top.py
View File

@ -8,7 +8,7 @@ from migen.bus import wishbone2lasmi, wishbone2csr
from migen.bank import csrgen
from mibuild.generic_platform import ConstraintError
from milkymist import mxcrg, lm32, norflash, uart, s6ddrphy, dfii, lasmicon, \
from misoclib import mxcrg, lm32, norflash, uart, s6ddrphy, dfii, lasmicon, \
identifier, timer, minimac3, framebuffer, dvisampler, gpio, memtest
version = "2.0"