OpenCores
URL https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk

Subversion Repositories openrisc_me

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /openrisc
    from Rev 472 to Rev 473
    Reverse comparison

Rev 472 → Rev 473

trunk/gnu-src/bld++.sh Property changes : Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:executable ## -1 +0,0 ## -* \ No newline at end of property Deleted: svn:keywords ## -1 +0,0 ## -Id \ No newline at end of property Index: trunk/gnu-src/bld.sh =================================================================== --- trunk/gnu-src/bld.sh (revision 472) +++ trunk/gnu-src/bld.sh (nonexistent) @@ -1,438 +0,0 @@ -#!/bin/bash - -# Copyright (C) 2009, 2010 Embecosm Limited -# Copyright (C) 2010 ORSoC AB - -# Contributor Joern Rennecke -# Contributor Jeremy Bennett -# Contributor Julius Baxter - -# This file is a script to build key elements of the OpenRISC tool chain - -# This program is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by the Free -# Software Foundation; either version 3 of the License, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for -# more details. - -# You should have received a copy of the GNU General Public License along -# with this program. If not, see . - -# The current version of GDB (7.1) is incompatible with the current version of -# binutils, so is built on its own. -component_dirs='binutils-2.20.1 newlib-1.18.0 gcc-4.5.1' -gdb_dir='gdb-7.2' -linux_dir='linux-2.6.35' -uclibc_dir='uclibc-0.9.31' -unified_src=srcw -build_dir=bld-or32 -gdb_build_dir=bld-gdb -install_dir=/opt/or32-elf-new -or1ksim_dir=/opt/or1ksim-new - -# Sanity check! -case ${unified_src} in - "") - prefix='.' - ;; - - */*) - echo "/ in not implemented" - exit 1 - ;; - - *..*) - echo ".. in not implemented" - exit 1 - ;; - *) - prefix='..' - ;; -esac - -# Assume we have hardware multiply and divide. OK for Or1ksim, not the default -# for the Verilog. -export CFLAGS_FOR_TARGET='-mhard-mul -mhard-div -O2 -g' - -# If /proc/cpuinfo is avaliable, limit load to launch extra jobs to -# number of processors + 1. If /proc/cpuinfo is not available, we use a -# constant of 2. -make_load="-j -l `(echo processor;cat /proc/cpuinfo 2>/dev/null || \ - echo processor) | grep -c processor`" - -# Parse options - -# --force: Ensure the unified source directory and build directory are -# recreated. -# --prefix: Specify the install directory -# --scdir: Specify the unified source directory -# --builddir: Specify the build directory -# --gdb-builddir: Specify the build directory -# --or1ksim: Specify the or1ksim installation directory -# --no-newlib: Don't build newlib -# --nolink: Don't build the unified source directory -# --noconfig: Don't run configure -# --check: Run DejaGnu tests -# --noinstall: Don't run install -# --help: List these options and exit -doforce="false"; -nolink="false"; -noconfig="false"; -docheck="false"; -noinstall="false"; -newlibconfigure="--with-newlib"; -newlibmake="all-target-newlib all-target-libgloss"; -newlibcheck="check-target-newlib check-target-libgloss"; -newlibinstall="install-target-newlib install-target-libgloss"; - -until -opt=$1 -case ${opt} - in - --force) - doforce="true"; - ;; - - --prefix) - install_dir=$2; - shift; - ;; - - --srcdir) - unified_src=$2; - shift; - ;; - - --builddir) - build_dir=$2; - shift; - ;; - - --gdb-builddir) - gdb_build_dir=$2; - shift; - ;; - - --or1ksim) - or1ksim_dir=$2; - shift; - ;; - - --no-newlib) - newlibconfigure=; - newlibmake=; - newlibcheck=; - newlibinstall=; - ;; - - --nolink) - nolink="true"; - ;; - - --noconfig) - noconfig="true"; - ;; - - --check) - docheck="true"; - ;; - - --noinstall) - noinstall="true"; - ;; - - --help) - echo "Usage: sh bld.sh [options]" - echo "" - echo "Options:" - echo " --force Ensure the unified source directory and" - echo " build directory are recreated." - echo " --prefix : Specify the install directory" - echo " --scdir : Specify the build directory" - echo " --gdb-builddir : Specify the build directory" - echo " --or1ksim : Specify the Or1ksim installation" - echo " directory" - echo " --no-newlib Don't build newlib" - echo " --nolink Don't build the unified source" - echo " directory" - echo " --noconfig Don't run configure" - echo " --check: Run DejaGnu tests" - echo " --noinstall Don't run install" - echo " --help List these options and exit" - exit 0 - ;; - - --*) - echo "unrecognized option \"$1\"" - exit 1 - ;; - - *) - opt="" - ;; -esac; -[ -z "${opt}" ] -do - shift -done - -# If --force was specified, delete the unified source and build directories -if [ "x$doforce" == "xtrue" ] -then - rm -rf ${unified_src} ${build_dir} ${gdb_build_dir} -fi - -# ------------------------------------------------------------------------------ -# Create a unified source directory. Currently we have to leave out GDB. -if [ "x$nolink" == "xfalse" ] -then - if [ -n "${unified_src}" ] - then - if [ ! -d ${unified_src} ] - then - if [ -e ${unified_src} ] - then - echo "${unified_src} is not a directory"; - exit 1 - fi - - mkdir ${unified_src} - fi - fi - - cd ${unified_src} - ignore_list=". .. CVS .svn" - - for srcdir in ${component_dirs} - do - echo "Component: $srcdir" - case srcdir - in - /* | [A-Za-z]:[\\/]*) - ;; - - *) - srcdir="${prefix}/${srcdir}" - ;; - esac - - files=`ls -a ${srcdir}` - - for f in ${files} - do - found= - - for i in ${ignore_list} - do - if [ "$f" = "$i" ] - then - found=yes - fi - done - - if [ -z "${found}" ] - then - echo "$f ..linked" - ln -s ${srcdir}/$f . - fi - done - - ignore_list="${ignore_list} ${files}" - done - - if [ $? != 0 ] - then - echo "failed to create ${unified_src}" - exit 1 - fi - - cd .. -fi - - -# ------------------------------------------------------------------------------ -# Configure everything -if [ "x$noconfig" == "xfalse" ] -then - mkdir -p ${build_dir} && cd ${build_dir} && \ - ../${unified_src}/configure --target=or32-elf \ - --with-pkgversion="OpenRISC 32-bit toolchain (built `date +%Y%m%d`)" \ - --with-bugurl=http://www.opencores.org/ \ - --with-or1ksim=${or1ksim_dir} \ - ${newlibconfigure} \ - --enable-fast-install=N/A --disable-libssp \ - --enable-languages=c,c++ --prefix=${install_dir} - - if [ $? != 0 ] - then - echo "configure failed." - exit 1 - fi - - cd .. - - # GDB has to be separately configured at present. - mkdir -p ${gdb_build_dir} && cd ${gdb_build_dir} && \ - ../${gdb_dir}/configure --target=or32-elf \ - --with-pkgversion="OpenRISC 32-bit toolchain (built `date +%Y%m%d`)" \ - --with-bugurl=http://www.opencores.org/ \ - --with-or1ksim=${or1ksim_dir} \ - ${newlibconfigure} \ - --enable-fast-install=N/A --disable-libssp \ - --enable-languages=c,c++ --prefix=${install_dir} - - if [ $? != 0 ] - then - echo "GDB configure failed." - exit 1 - fi - - cd .. - -fi - -# ------------------------------------------------------------------------------ -# Make everything. GCC can handle parallel make, the others can't -cd ${build_dir} - -make all-build all-binutils all-gas all-ld -if [ $? != 0 ] -then - echo "make (binutils) failed." - exit 1 -fi - -# Actually GCC seems to have minor problems at 4.5.1 with parallel make. We -# leave the structure here, since we'll reinstate it on a future release. - -# make $make_load all-gcc -make all-gcc -if [ $? != 0 ] -then - echo "make (GCC) failed." - exit 1 -fi - -make all-target-libgcc ${newlibmake} -if [ $? != 0 ] -then - echo "make (libgcc and Newlib) failed." - exit 1 -fi - -# GDB and simulator have to be built separately at present. -cd .. -cd ${gdb_build_dir} - -make all-build all-sim all-gdb -if [ $? != 0 ] -then - echo "make (GDB) failed." - exit 1 -fi - -cd .. - -# ------------------------------------------------------------------------------ -# Optionally check everything. We do each target in turn and don't blow out -# here if the RC is not zero. Most of the test suites fail somewhere. -if [ "x${docheck}" == "xtrue" ] -then - export DEJAGNU=`pwd`/site.exp - - cd {build_dir} - - for tool_check in check-binutils check-gas check-ld check-gcc \ - check-target-libgcc ${newlibcheck} - do - make ${tool_check} - - if [ $? != 0 ]; - then - echo "make ${tool_check} failed." - fi - done - - # GDB has to be checked separately at present. - cd .. - cd ${gdb_build_dir} - - make check-sim check-gdb - - if [ $? != 0 ]; - then - echo "make check-gdb failed." - fi - - cd .. -fi - -# ------------------------------------------------------------------------------ -# Install everything -if [ "x${noinstall}" == "xfalse" ] -then - cd ${build_dir} - - make install-binutils install-gas install-ld install-gcc \ - install-target-libgcc ${newlibinstall} - - if [ $? != 0 ]; - then - echo "make install failed." - exit 1 - fi - - # GDB has to be installed separately at present. - cd .. - cd ${gdb_build_dir} - - make install-sim install-gdb - - if [ $? != 0 ]; - then - echo "make install (GDB) failed." - exit 1 - fi - - cd .. -fi - -# ------------------------------------------------------------------------------ -# If we have built newlib, move it. This means the target specific include -# directory and the crt0.o and libraries from the target specific lib -# directory. - -# There is a catch here. If we are doing a rebuild, some of these files may -# have already been moved, and some no. So we check for their existence before -# doing the move. -if [ "x${newlibconfigure}" != "x" ] -then - mkdir -p ${install_dir}/or32-elf/newlib - rm -rf ${install_dir}/or32-elf/newlib-include - - if [ -d ${install_dir}/or32-elf/include ] - then - mv ${install_dir}/or32-elf/include \ - ${install_dir}/or32-elf/newlib-include - fi - - if [ -d ${install_dir}/or32-elf/lib ] - then - afiles=`ls -1 ${install_dir}/or32-elf/lib | grep '\.a' | head -1` - - if [ "x$afiles" != "x" ] - then - mv ${install_dir}/or32-elf/lib/*.a ${install_dir}/or32-elf/newlib - fi - fi - - if [ -f ${install_dir}/or32-elf/lib/crt0.o ] - then - mv ${install_dir}/or32-elf/lib/crt0.o ${install_dir}/or32-elf/newlib - fi -fi
trunk/gnu-src/bld.sh Property changes : Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:executable ## -1 +0,0 ## -* \ No newline at end of property Deleted: svn:keywords ## -1 +0,0 ## -Id \ No newline at end of property Index: trunk/gnu-src/gcc-4.5.1/gcc/ChangeLog.or32 =================================================================== --- trunk/gnu-src/gcc-4.5.1/gcc/ChangeLog.or32 (revision 472) +++ trunk/gnu-src/gcc-4.5.1/gcc/ChangeLog.or32 (revision 473) @@ -1,3 +1,9 @@ +2011-01-12 Joern Rennecke + + * config.or32/or32.h (CPP_SPEC): Add -D_XOPEN_SOURCE=600 for pthread. + (LIB_SPEC): Add --whole-archive -lpthread --no-whole-archive for + pthread. + 2010-12-19 Jeremy Bennett * config.gcc : Remove extra_parts.
/trunk/gnu-src/gcc-4.5.1/gcc/config/or32/or32.h
47,7 → 47,9
{ "target_prefix", TARGET_PREFIX }
 
#undef CPP_SPEC
#define CPP_SPEC "%{mor32-newlib*:-idirafter %(target_prefix)/newlib-include}"
#define CPP_SPEC \
"%{!mor32-newlib*:%{pthread:-D_XOPEN_SOURCE=600}}" \
"%{mor32-newlib*:-idirafter %(target_prefix)/newlib-include}"
 
/* Make sure we pick up the crti.o, crtbegin.o, crtend.o and crtn.o files. */
#undef STARTFILE_SPEC
64,7 → 66,10
/* Override previous definitions (linux.h). Newlib doesn't have a profiling
version of the library, but it does have a debugging version (libg.a) */
#undef LIB_SPEC
#define LIB_SPEC "%{!mor32-newlib*:%{!p:%{!pg:-lc}}%{p:-lc_p}%{pg:-lc_p}} \
#define LIB_SPEC "%{!mor32-newlib*:" \
"%{pthread:" \
"--whole-archive -lpthread --no-whole-archive} " \
"%{!p:%{!pg:-lc}}%{p:-lc_p}%{pg:-lc_p}} \
%{mor32-newlib:%{!g:-lc -lor32 -u free -lc} \
%{g:-lg -lor32 -u free -lg}} \
%{mor32-newlib-uart:%{!g:-lc -lor32uart -u free -lc} \
/trunk/gnu-src/bld-all.sh
607,7 → 607,8
langs=$1
shift
 
echo "bld-all.sh: gnu_config ${top_builddir} ${top_srcdir} ${langs} $*"
echo -n "bld-all.sh: gnu_config ${this_prefix} ${top_builddir} "
echo "${top_srcdir} ${langs} $*"
 
verstr="OpenRISC 32-bit toolchain for ${target} (built `date +%Y%m%d`)"
 
817,7 → 818,7
# directories we are actually building (see below).
if [ "true" == "${force_flag}" ]
then
echo -n "bld-all.sh: removing ${unisrc_dir}"
echo "bld-all.sh: removing ${unisrc_dir}"
rm -rf ${unisrc_dir}
fi
 
832,7 → 833,7
# --force only applies to build directories we are using!
if [ "true" == "${force_flag}" ]
then
echo -n "bld-all.sh: removing ${bd_elf} ${bd_elf_gdb} "
echo "bld-all.sh: removing ${bd_elf} ${bd_elf_gdb}"
rm -rf ${bd_elf} ${bd_elf_gdb}
fi
 
870,7 → 871,7
# --force only applies to build directories we are using!
if [ "true" == "${force_flag}" ]
then
echo -n "bld-all.sh: removing ${bd_linux} ${bd_linux_gdb} "
echo "bld-all.sh: removing ${bd_linux} ${bd_linux_gdb}"
rm -rf ${bd_linux} ${bd_linux_gdb}
fi
 
922,7 → 923,8
then
echo "bld-all.sh: uClibc GCC stage 2"
 
# uClibc now supports POSIX threads, but not TLS
# uClibc now supports POSIX threads, but not TLS. uClibc
# linuxthreads.old is a POSIX98 compliant implementation.
thread_config="--enable-threads=posix --disable-tls"
 
gnu_config ${config_flag} ${prefix} ${bd_linux} ../${unisrc_dir} \
/trunk/gnu-src/boards/or32-linux-sim.exp
21,53 → 21,45
# You should have received a copy of the GNU General Public License along
# with this program. If not, see <http://www.gnu.org/licenses/>.
 
# This is a list of toolchains that are supported on this board.
set_board_info target_install {or32-linux}
# -----------------------------------------------------------------------------
# For telnet targets we need to define some functions.
 
# No multilib options needed by default.
process_multilib_options ""
# -----------------------------------------------------------------------------
# Custom proc to close a telnet session
 
# Load the generic configuration for this board. This will define a basic set
# of routines needed by the tool to communicate with the board.
load_generic_config "unix"
# @param[in] boardname The board being closed.
# -----------------------------------------------------------------------------
proc telnet_close {boardname} {
 
# Set up remote target info
set_board_info hostname "192.168.0.3"
set_board_info username root
 
# Use the installed compilers to ensure we get search paths that will find
# uClibc.
send_user "set_board_info compiler /opt/or32-new/bin/or32-linux-gcc\n"
global GCC_UNDER_TEST
set GCC_UNDER_TEST "/opt/or32-new/bin/or32-linux-gcc"
set_board_info compiler /opt/or32-new/bin/or32-linux-gcc
set_board_info c++compiler /opt/or32-new/bin/or32-linux-g++
 
set_board_info connect telnet
set_board_info shell_prompt "~ # "
set_board_info telnet_username "root"
set_board_info telnet_password ""
 
set_board_info file_transfer ftp
set_board_info ftp_username root
set_board_info ftp_password ""
 
# Custom proc to close a telnet session
proc telnet_close {boardname} {
# Make the telnet process associated with this board the current process
set spawn_id [board_info $boardname fileid]
verbose "Closing $boardname:$spawn_id"
 
# If we have a process, close it.
if { $spawn_id >= 0 } {
catch {close -i $spawn_id}
catch close
catch wait
set spawn_id -1
 
set board_info($boardname,fileid) $spawn_id
set_board_info $boardname,fileid $spawn_id
}
}
 
 
# -----------------------------------------------------------------------------
# Custom proc to exec programs using telnet
 
# We seem to only pass in the first of the arguments supplied to the command.
 
# We seem to set the timeout to 30, no matter what. Not sure that is right
# here.
 
# @param[in] boardname The board we are telnetting to
# @param[in] cmd The command to run
# @param[in] args Arguments to the command
 
# @return A list of the return code (-1 on failure) and any error message.
# -----------------------------------------------------------------------------
proc telnet_exec {boardname cmd args} {
global timeout
global verbose
75,6 → 67,7
 
verbose "Executing $boardname:$cmd $args"
 
# Get the first argument, if any.
if { [llength $args] > 0 } {
set pargs [lindex $args 0];
} else {
81,6 → 74,7
set pargs ""
}
 
# Set the shell prompt
if [board_info $boardname exists shell_prompt] {
set shell_prompt [board_info $boardname shell_prompt]
}
89,7 → 83,9
set shell_prompt ".*> "
}
 
#Start a new telnet session if one dosen't already exist
# Start a new telnet session if one doesn't already exist. If sucessful
# the fileid field associated with $boardname will be set to the spawn_id
# of the new telnet process.
if ![board_info $boardname exists fileid] {
if {[telnet_open $boardname] == -1} {
return [list -1
98,7 → 94,9
}
}
 
# Make the telnet session the current process.
set spawn_id [board_info $boardname fileid]
set old_timeout $timeout
set timeout 30
 
#Hit enter to make sure you get a shell prompt
105,10 → 103,12
send -- "\r"
 
expect {
# A prompt indicates the current session is alive
-re "$shell_prompt.*$" {
verbose "Got a prompt"
}
default {
# No response try closing the connection and reopening.
telnet_close $boardname
if {[telnet_open $boardname] != -1} {
verbose "started new telnet session, spawn_id is [board_info
116,13 → 116,21
send -- "\r"
exp_continue
} else {
set timeout $old_timeout
return [list -1 "telnet to $boardname failed for $cmd, couldn't get
a shell prompt"]
}
send -- "\r"
exp_continue
# I don't think we can get here. Comment out the old code and
# trigger an error
# send -- "\r"
# exp_continue
set timeout $old_timeout
error "Problem reconnecting to telnet."
}
}
 
# Shorter timeout for commands. Not sure why we only use the first of the
# arguments.
set timeout 10
send "$cmd $pargs\r"
 
134,11 → 142,13
set execute_output_string $expect_out(buffer)
}
telnet_close $boardname
return "fail timeout"
set timeout $old_timeout
return [list -1 "telnet to $boardname for $cmd $pargs failed (timeout)"
}
}
#Remove unesesary strings from the output string
#
 
#Remove unnecessary strings from the output string
 
#If the file path contains any "+" signs, it will mess things up when $cmd
#is used as a regsub pattern (2 lines down), so we replace all "+"s with "."
regsub -all "\\+" $cmd "." cmd
162,6 → 172,7
set status 1
}
 
set timeout $old_timeout
if {$status == 0} {
return [list "0" "$output"]
} else {
169,6 → 180,40
}
}
 
# This is a list of toolchains that are supported on this board.
set_board_info target_install {or32-linux}
 
# No multilib options needed by default.
process_multilib_options ""
 
# Load the generic configuration for this board. This will define a basic set
# of routines needed by the tool to communicate with the board.
load_generic_config "unix"
 
# Set up remote target info
set_board_info hostname "192.168.0.3"
set_board_info username root
 
# Use the installed compilers to ensure we get search paths that will find
# uClibc.
send_user "set_board_info compiler /opt/or32-new/bin/or32-linux-gcc\n"
global GCC_UNDER_TEST
set GCC_UNDER_TEST "/opt/or32-new/bin/or32-linux-gcc"
global GXX_UNDER_TEST
set GXX_UNDER_TEST "/opt/or32-new/bin/or32-linux-g++"
set_board_info compiler /opt/or32-new/bin/or32-linux-gcc
set_board_info c++compiler /opt/or32-new/bin/or32-linux-g++
set target_alias "or32-linux"
 
set_board_info connect telnet
set_board_info shell_prompt "~ # "
set_board_info telnet_username "root"
set_board_info telnet_password ""
 
set_board_info file_transfer ftp
set_board_info ftp_username root
set_board_info ftp_password ""
 
# Options for the simulator
# set cfg_file [lookfor_file ${srcdir} libgloss/or32/sim.cfg]
# set_board_info sim,options "-a \"-f ${cfg_file}\""
177,6 → 222,10
# have been specified before we get here.
# set_board_info compiler "[find_gcc]"
 
# We need to define the right flags if pthreads is to work.
set_board_info cflags "-D_XOPEN_SOURCE=600"
set_board_info cxxflags "-D_XOPEN_SOURCE=600"
 
# No linker script needed.
set_board_info ldscript ""
 
/trunk/gnu-src/bld-bb.sh
0,0 → 1,77
#!/bin/bash
 
# Copyright (C) 2010 Embecosm Limited
 
# Contributor Jeremy Bennett <jeremy.bennett@embecosm.com>
 
# This file is a script to rebuild Linux/Busybox
 
# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the Free
# Software Foundation; either version 3 of the License, or (at your option)
# any later version.
 
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
# more details.
 
# You should have received a copy of the GNU General Public License along
# with this program. If not, see <http://www.gnu.org/licenses/>.
 
bb_dir=busybox-1.17.3
linux_dir=linux-2.6.36
 
# Clean, build and install BusyBox
echo "bld-bb.sh: Rebuilding BusyBox"
cd ${bb_dir}
 
make clean
if [ $? != 0 ];
then
echo "bld-bb.sh: BusyBox 'make clean' failed"
exit 1
fi
 
make
if [ $? != 0 ];
then
echo "bld-bb.sh: BusyBox 'make' failed"
exit 1
fi
 
make install
if [ $? != 0 ];
then
echo "bld-bb.sh: BusyBox 'make install' failed"
exit 1
fi
 
cd -
 
# Configure, clean and rebuild Linux
echo "bld-bb.sh: Rebuilding Linux"
cd ${linux_dir}
 
make defconfig ARCH=openrisc CROSS_COMPILE=/opt/or32-new/bin/or32-elf-
if [ $? != 0 ];
then
echo "bld-bb.sh: Linux 'make defconfig' failed"
exit 1
fi
 
make clean ARCH=openrisc CROSS_COMPILE=/opt/or32-new/bin/or32-elf-
if [ $? != 0 ];
then
echo "bld-bb.sh: Linux 'make clean' failed"
exit 1
fi
 
make vmlinux ARCH=openrisc CROSS_COMPILE=/opt/or32-new/bin/or32-elf-
if [ $? != 0 ];
then
echo "bld-bb.sh: Linux 'make vmlinux' failed"
exit 1
fi
 
cd -
trunk/gnu-src/bld-bb.sh Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.