From 41900e5b9caad3b944469498e7db9b69224eaaf5 Mon Sep 17 00:00:00 2001 From: Minyong Li <ml10g20@soton.ac.uk> Date: Sun, 11 Jul 2021 14:26:42 +0100 Subject: [PATCH] core.{Data,Program}Memory: use dedicated port types --- .../uk/ac/soton/ecs/can/core/DataMemory.scala | 13 +++---------- .../uk/ac/soton/ecs/can/core/ProgramMemory.scala | 14 +++----------- .../uk/ac/soton/ecs/can/types/MemoryReadIO.scala | 12 ++++++++++++ .../uk/ac/soton/ecs/can/types/MemoryWriteIO.scala | 12 ++++++++++++ 4 files changed, 30 insertions(+), 21 deletions(-) create mode 100644 src/main/scala/uk/ac/soton/ecs/can/types/MemoryReadIO.scala create mode 100644 src/main/scala/uk/ac/soton/ecs/can/types/MemoryWriteIO.scala diff --git a/src/main/scala/uk/ac/soton/ecs/can/core/DataMemory.scala b/src/main/scala/uk/ac/soton/ecs/can/core/DataMemory.scala index 0dfeb68..074a29a 100644 --- a/src/main/scala/uk/ac/soton/ecs/can/core/DataMemory.scala +++ b/src/main/scala/uk/ac/soton/ecs/can/core/DataMemory.scala @@ -5,21 +5,14 @@ package uk.ac.soton.ecs.can.core import chisel3._ import chisel3.util.log2Ceil +import uk.ac.soton.ecs.can.types._ import uk.ac.soton.ecs.can.config.CanCoreConfiguration class DataMemory(implicit cfg: CanCoreConfiguration) extends MultiIOModule { private val addrWidth = log2Ceil(cfg.dataMemoryWords) - val read = IO(new Bundle { - val en = Input(Bool()) - val addr = Input(UInt(addrWidth.W)) - val data = Output(UInt(512.W)) - }) - val write = IO(new Bundle { - val en = Input(Bool()) - val addr = Input(UInt(addrWidth.W)) - val data = Input(UInt(512.W)) - }) + val read = IO(new MemoryReadIO(addrWidth, 512)) + val write = IO(new MemoryWriteIO(addrWidth, 512)) private val mem = if (cfg.syncReadMemory) diff --git a/src/main/scala/uk/ac/soton/ecs/can/core/ProgramMemory.scala b/src/main/scala/uk/ac/soton/ecs/can/core/ProgramMemory.scala index a65cd41..ca27c96 100644 --- a/src/main/scala/uk/ac/soton/ecs/can/core/ProgramMemory.scala +++ b/src/main/scala/uk/ac/soton/ecs/can/core/ProgramMemory.scala @@ -5,7 +5,7 @@ package uk.ac.soton.ecs.can.core import chisel3._ import chisel3.util.log2Ceil -import uk.ac.soton.ecs.can.types.CanCoreControlWord +import uk.ac.soton.ecs.can.types._ import uk.ac.soton.ecs.can.config.CanCoreConfiguration class ProgramMemory(implicit cfg: CanCoreConfiguration) extends MultiIOModule { @@ -19,16 +19,8 @@ class ProgramMemory(implicit cfg: CanCoreConfiguration) extends MultiIOModule { }) val cw = IO(Output(UInt(cwWidth.W))) - val read = IO(new Bundle { - val en = Input(Bool()) - val addr = Input(UInt(addrWidth.W)) - val data = Output(UInt(cwWidth.W)) - }) - val write = IO(new Bundle { - val en = Input(Bool()) - val addr = Input(UInt(addrWidth.W)) - val data = Input(UInt(cwWidth.W)) - }) + val read = IO(new MemoryReadIO(addrWidth, cwWidth)) + val write = IO(new MemoryWriteIO(addrWidth, cwWidth)) private val mem = if (cfg.syncReadMemory) diff --git a/src/main/scala/uk/ac/soton/ecs/can/types/MemoryReadIO.scala b/src/main/scala/uk/ac/soton/ecs/can/types/MemoryReadIO.scala new file mode 100644 index 0000000..b0d6f81 --- /dev/null +++ b/src/main/scala/uk/ac/soton/ecs/can/types/MemoryReadIO.scala @@ -0,0 +1,12 @@ +// SPDX-FileCopyrightText: 2021 Minyong Li <ml10g20@soton.ac.uk> +// SPDX-License-Identifier: CERN-OHL-W-2.0 + +package uk.ac.soton.ecs.can.types + +import chisel3._ + +class MemoryReadIO(addrWidth: Int, dataWidth: Int) extends Bundle { + val en = Input(Bool()) + val addr = Input(UInt(addrWidth.W)) + val data = Output(UInt(dataWidth.W)) +} diff --git a/src/main/scala/uk/ac/soton/ecs/can/types/MemoryWriteIO.scala b/src/main/scala/uk/ac/soton/ecs/can/types/MemoryWriteIO.scala new file mode 100644 index 0000000..438ccb1 --- /dev/null +++ b/src/main/scala/uk/ac/soton/ecs/can/types/MemoryWriteIO.scala @@ -0,0 +1,12 @@ +// SPDX-FileCopyrightText: 2021 Minyong Li <ml10g20@soton.ac.uk> +// SPDX-License-Identifier: CERN-OHL-W-2.0 + +package uk.ac.soton.ecs.can.types + +import chisel3._ + +class MemoryWriteIO(addrWidth: Int, dataWidth: Int) extends Bundle { + val en = Input(Bool()) + val addr = Input(UInt(addrWidth.W)) + val data = Input(UInt(dataWidth.W)) +} -- GitLab