[gem5-dev] Change in gem5/gem5[develop]: dev: Added new LupIO-RNG device
melissa jost has submitted this change. ( https://gem5-review.googlesource.com/c/public/gem5/+/53029 ) Change subject: dev: Added new LupIO-RNG device .. dev: Added new LupIO-RNG device This device is a random number generator that uses the Mersenne Twister in order to provide the system with a set of random numbers. It is implemented as a BasicPioDevice, and has both read and write capabilities. The following are the specifications regarding the LupIO-RNG: https://gitlab.com/luplab/lupio/lupio-specs/-/blob/main/lupio-rng.md Change-Id: Ia6aeb610ebe5589ed1f1548b823c5165236b03e6 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/53029 Maintainer: Bobby Bruce Tested-by: kokoro Reviewed-by: Jason Lowe-Power --- A src/dev/lupio/LupioRNG.py A src/dev/lupio/lupio_rng.cc A src/dev/lupio/lupio_rng.hh M src/dev/lupio/SConscript 4 files changed, 291 insertions(+), 0 deletions(-) Approvals: Jason Lowe-Power: Looks good to me, approved Bobby Bruce: Looks good to me, approved kokoro: Regressions pass diff --git a/src/dev/lupio/LupioRNG.py b/src/dev/lupio/LupioRNG.py new file mode 100644 index 000..c6d2c17 --- /dev/null +++ b/src/dev/lupio/LupioRNG.py @@ -0,0 +1,40 @@ +# Copyright (c) 2021 The Regents of the University of California +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer; +# redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution; +# neither the name of the copyright holders nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +from m5.objects.Device import BasicPioDevice +from m5.params import Param +from m5.proxy import Parent + +class LupioRNG(BasicPioDevice): + +type = 'LupioRNG' +cxx_class='gem5::LupioRNG' +cxx_header = 'dev/lupio/lupio_rng.hh' +pio_size = Param.Addr(0x1000, "PIO Size") +seed = Param.Int(0, "Initial seed for the random number generator") +platform = Param.Platform(Parent.any, + "Platform this device is part of.") +int_id = Param.Int("Interrupt ID to be used by the PIC") diff --git a/src/dev/lupio/SConscript b/src/dev/lupio/SConscript index 30fbbe0..775412c 100644 --- a/src/dev/lupio/SConscript +++ b/src/dev/lupio/SConscript @@ -27,7 +27,10 @@ Import('*') SimObject('LupioRTC.py', tags='riscv isa') +SimObject('LupioRNG.py', tags='riscv isa') +DebugFlag('LupioRNG') DebugFlag('LupioRTC') Source('lupio_rtc.cc', tags='riscv isa') +Source('lupio_rng.cc', tags='riscv isa') diff --git a/src/dev/lupio/lupio_rng.cc b/src/dev/lupio/lupio_rng.cc new file mode 100644 index 000..f3036de --- /dev/null +++ b/src/dev/lupio/lupio_rng.cc @@ -0,0 +1,137 @@ +/* + * Copyright (c) 2021 The Regents of the University of California + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer; + * redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution; + * neither the name of the copyright holders nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +
[gem5-dev] Change in gem5/gem5[develop]: dev: Added new LupIO-RNG device
Melissa Jost has uploaded this change for review. ( https://gem5-review.googlesource.com/c/public/gem5/+/53029 ) Change subject: dev: Added new LupIO-RNG device .. dev: Added new LupIO-RNG device This device is a random number generator that uses the Mersenne Twister in order to provide the system with a set of random numbers. It is implemented as a BasicPioDevice, and has both read and write capabilities. The following are the specifications regarding the LupIO-RNG: https://gitlab.com/luplab/lupio/lupio-specs/-/blob/main/lupio-rng.md Change-Id: Ia6aeb610ebe5589ed1f1548b823c5165236b03e6 --- A src/dev/lupio/LupioRNG.py A src/dev/lupio/lupio_rng.cc A src/dev/lupio/lupio_rng.hh M src/dev/lupio/SConscript 4 files changed, 287 insertions(+), 0 deletions(-) diff --git a/src/dev/lupio/LupioRNG.py b/src/dev/lupio/LupioRNG.py new file mode 100644 index 000..c6d2c17 --- /dev/null +++ b/src/dev/lupio/LupioRNG.py @@ -0,0 +1,40 @@ +# Copyright (c) 2021 The Regents of the University of California +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer; +# redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution; +# neither the name of the copyright holders nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +from m5.objects.Device import BasicPioDevice +from m5.params import Param +from m5.proxy import Parent + +class LupioRNG(BasicPioDevice): + +type = 'LupioRNG' +cxx_class='gem5::LupioRNG' +cxx_header = 'dev/lupio/lupio_rng.hh' +pio_size = Param.Addr(0x1000, "PIO Size") +seed = Param.Int(0, "Initial seed for the random number generator") +platform = Param.Platform(Parent.any, + "Platform this device is part of.") +int_id = Param.Int("Interrupt ID to be used by the PIC") diff --git a/src/dev/lupio/SConscript b/src/dev/lupio/SConscript index 443828e..485a324 100644 --- a/src/dev/lupio/SConscript +++ b/src/dev/lupio/SConscript @@ -26,8 +26,11 @@ Import('*') +SimObject('LupioRNG.py') SimObject('LupioRTC.py') +DebugFlag('LupioRNG') DebugFlag('LupioRTC') +Source('lupio_rng.cc') Source('lupio_rtc.cc') diff --git a/src/dev/lupio/lupio_rng.cc b/src/dev/lupio/lupio_rng.cc new file mode 100644 index 000..f3036de --- /dev/null +++ b/src/dev/lupio/lupio_rng.cc @@ -0,0 +1,137 @@ +/* + * Copyright (c) 2021 The Regents of the University of California + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer; + * redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution; + * neither the name of the copyright holders nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION)