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 0dfeb68a94f886a38b091fccac84578e0e5595fc..074a29ab08c92bf95606305349793a8e94976630 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 a65cd41757baa91085f8f7de8df68d5438536fc2..ca27c9680a1c040edcecf2501c3195cd80e22b66 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 0000000000000000000000000000000000000000..b0d6f81bc850a73f9cc2ec2b6306376f5e8abfdc --- /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 0000000000000000000000000000000000000000..438ccb1817d1a2eb031c72a163ab2051b989d4d0 --- /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)) +}