Migrate fastvdma and build in hw/matcha Change-Id: I50179f9f39279d58f73a57fc2c13a5883170f917
diff --git a/BUILD.bazel b/BUILD.bazel index ee42854..0f0a46b 100644 --- a/BUILD.bazel +++ b/BUILD.bazel
@@ -12,6 +12,7 @@ "@lowrisc_opentitan//hw/dv:BUILD", "@lowrisc_opentitan//hw/ip:BUILD", "@kelvin_hw//hdl/chisel:kelvin.core", + "//hw/top_matcha/ip/dma/chisel:fastvdma.core", "@lowrisc_opentitan//hw/lint:BUILD", "@lowrisc_opentitan//hw/vendor:BUILD", # Place the following file to make compilation works
diff --git a/hw/dv/tools/dvsim/fusesoc.hjson b/hw/dv/tools/dvsim/fusesoc.hjson index db7c762..522e5a6 100644 --- a/hw/dv/tools/dvsim/fusesoc.hjson +++ b/hw/dv/tools/dvsim/fusesoc.hjson
@@ -13,6 +13,7 @@ "--setup {fusesoc_core}"] fusesoc_cores_root_dirs: ["--cores-root {titan_root}/hw/ip", "--cores-root {proj_root}/bazel-bin/external/kelvin_hw/hdl/chisel", + "--cores-root {proj_root}/bazel-bin/hw/top_matcha/ip/dma/chisel", "--cores-root {titan_root}/hw/dv/sv", "--cores-root {titan_root}/hw/dv/verilator", "--cores-root {titan_root}/hw/formal",
diff --git a/hw/top_matcha/ip/dma/chisel/BUILD b/hw/top_matcha/ip/dma/chisel/BUILD new file mode 100644 index 0000000..2a102ea --- /dev/null +++ b/hw/top_matcha/ip/dma/chisel/BUILD
@@ -0,0 +1,45 @@ +# Copyright 2023 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +genrule( + name = "fastvdma_verilog", + srcs = [ + "//hw/top_matcha/ip/dma/chisel/src:DMATop.sv" + ], + outs = [ + "fastvdma.sv", + ], + + cmd = """ + cat $(location //hw/top_matcha/ip/dma/chisel/src:DMATop.sv) >> $(location fastvdma.sv) + """, + visibility = ["//visibility:public"], +) + +# Generate fastvdma.core from this template so it can sit at the same GenDir as +# the RTL file. +genrule( + name = "fastvdma_core", + srcs = [ + "fastvdma.core.in", + "fastvdma_verilog", + ], + outs = [ + "fastvdma.core", + ], + cmd = """ + cp -f $(location fastvdma.core.in) $(location fastvdma.core) + """, + visibility = ["//visibility:public"], +)
diff --git a/hw/top_matcha/ip/dma/chisel/fastvdma.core.in b/hw/top_matcha/ip/dma/chisel/fastvdma.core.in new file mode 100644 index 0000000..6131837 --- /dev/null +++ b/hw/top_matcha/ip/dma/chisel/fastvdma.core.in
@@ -0,0 +1,34 @@ +CAPI=2: +# Copyright 2023 Google LLC +# Licensed under the Apache License, Version 2.0, see LICENSE for details. +# SPDX-License-Identifier: Apache-2.0 +name: "google:ip:fastvdma:0.1" +description: "Generated fastvdma originally from Antmicro" +filesets: + files_rtl: + files: + - fastvdma.sv + file_type: systemVerilogSource + +parameters: + SYNTHESIS: + datatype: bool + paramtype: vlogdefine + + +targets: + default: &default_target + filesets: + - files_rtl + toplevel: fastvdma + + lint: + <<: *default_target + default_tool: verilator + parameters: + - SYNTHESIS=true + tools: + verilator: + mode: lint-only + verilator_options: + - "-Wall"
diff --git a/hw/top_matcha/ip/dma/chisel/src/BUILD b/hw/top_matcha/ip/dma/chisel/src/BUILD new file mode 100644 index 0000000..745cb3f --- /dev/null +++ b/hw/top_matcha/ip/dma/chisel/src/BUILD
@@ -0,0 +1,54 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +load("@kelvin_hw//rules:chisel.bzl", "chisel_cc_library", "chisel_library") + +package(default_visibility = ["//visibility:public"]) + +chisel_library( + name = "fastvdma_tlul", + srcs = [ + "DMAConfig.scala", + "DMATop.scala", + "bus/TLUL.scala", + "csr/CSR.scala", + "csr/CSRBusBundle.scala", + "csr/CSRRegBundle.scala", + "csr/ClearCSR.scala", + "csr/SetCSR.scala", + "csr/SimpleCSR.scala", + "csr/StatusCSR.scala", + "frontend/BusBase.scala", + "frontend/TLULCSR.scala", + "frontend/TLULReader.scala", + "frontend/TLULWriter.scala", + "worker/AddressGenerator.scala", + "worker/AddressGeneratorCtlBundle.scala", + "worker/InterruptBundle.scala", + "worker/InterruptController.scala", + "worker/SyncBundle.scala", + "worker/TransferSplitter.scala", + "worker/WorkerCSRWrapper.scala", + "worker/XferDescBundle.scala", + ], + deps = [ + ], +) + +chisel_cc_library( + name = "fastvdma_cc_library", + chisel_lib = ":fastvdma_tlul", + emit_class = "DMAController.EmitDMA", + module_name = "DMATop", +)
diff --git a/hw/top_matcha/ip/dma/chisel/src/DMAConfig.scala b/hw/top_matcha/ip/dma/chisel/src/DMAConfig.scala new file mode 100644 index 0000000..6d16c81 --- /dev/null +++ b/hw/top_matcha/ip/dma/chisel/src/DMAConfig.scala
@@ -0,0 +1,35 @@ +/* +Copyright 2024 Google LLC +Copyright (C) 2019-2022 Antmicro + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +SPDX-License-Identifier: Apache-2.0 +*/ + +package DMAController.DMAConfig + +import chisel3._ + +object DMAConfig { + val addrWidth = 32 + val readDataWidth = 32 + val writeDataWidth = 32 + val readMaxBurst = 0 + val writeMaxBurst = 256 + val reader4KBarrier = false + val writer4KBarrier = true + + val controlDataWidth = 32 + val controlAddrWidth = 32 + val controlRegCount = 16 + + val fifoDepth = 512 + +}
diff --git a/hw/top_matcha/ip/dma/chisel/src/DMATop.scala b/hw/top_matcha/ip/dma/chisel/src/DMATop.scala new file mode 100644 index 0000000..564e7e3 --- /dev/null +++ b/hw/top_matcha/ip/dma/chisel/src/DMATop.scala
@@ -0,0 +1,68 @@ +/* +Copyright 2024 Google LLC +Copyright (C) 2019-2022 Antmicro + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +SPDX-License-Identifier: Apache-2.0 +*/ + +package DMAController + +import chisel3._ +import chisel3.util._ +import DMAController.Bus._ +import DMAController.CSR.CSR +import DMAController.Frontend._ +import DMAController.Worker.{InterruptBundle, WorkerCSRWrapper, SyncBundle} +import DMAController.DMAConfig._ +import _root_.circt.stage.ChiselStage + +class DMATop extends Module { + + val io = IO(new Bundle{ + val control = new TLULDevice(DMAConfig.addrWidth, DMAConfig.readDataWidth) + val read = new TLULHost(DMAConfig.addrWidth, DMAConfig.readDataWidth) + val write = new TLULHost(DMAConfig.addrWidth, DMAConfig.readDataWidth) + val irq = new InterruptBundle + val sync = new SyncBundle + }) + + val csrFrontend = Module(new TLULCSR(DMAConfig.addrWidth, DMAConfig.readDataWidth)) + + val readerFrontend = Module(new TLULReader(DMAConfig.addrWidth, DMAConfig.readDataWidth)) + + val writerFrontend = Module(new TLULWriter(DMAConfig.addrWidth, DMAConfig.readDataWidth)) + + val csr = Module(new CSR(DMAConfig.addrWidth)) + + val ctl = Module(new WorkerCSRWrapper(DMAConfig.addrWidth, DMAConfig.readDataWidth, DMAConfig.writeDataWidth, + DMAConfig.readMaxBurst, DMAConfig.writeMaxBurst, DMAConfig.reader4KBarrier, DMAConfig.writer4KBarrier)) + + val queue = Queue(readerFrontend.io.dataIO, DMAConfig.fifoDepth) + queue <> writerFrontend.io.dataIO + + csrFrontend.io.ctl <> io.control + csr.io.bus <> csrFrontend.io.bus + ctl.io.csr <> csr.io.csr + readerFrontend.io.xfer <> ctl.io.xferRead + writerFrontend.io.xfer <> ctl.io.xferWrite + + io.read <> readerFrontend.io.bus + io.write <> writerFrontend.io.bus + + io.irq <> ctl.io.irq + io.sync <> ctl.io.sync + + assert(DMAConfig.readDataWidth == DMAConfig.writeDataWidth) +} + +object EmitDMA extends App{ + ChiselStage.emitSystemVerilogFile(new DMATop, args) +}
diff --git a/hw/top_matcha/ip/dma/chisel/src/bus/TLUL.scala b/hw/top_matcha/ip/dma/chisel/src/bus/TLUL.scala new file mode 100644 index 0000000..470877a --- /dev/null +++ b/hw/top_matcha/ip/dma/chisel/src/bus/TLUL.scala
@@ -0,0 +1,138 @@ +/* +Copyright 2024 Google LLC +Copyright (C) 2019-2022 Antmicro + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +SPDX-License-Identifier: Apache-2.0 +*/ + +package DMAController.Bus + +import chisel3._ + +class TLULA(val addrWidth : Int, val dataWidth: Int) extends Bundle{ + val opcode = Output(UInt(TLUL.codeWidth.W)) + val param = Output(UInt(TLUL.aparamWidth.W)) + val size = Output(UInt(TLUL.size.W)) + val source = Output(UInt(TLUL.sourceWidth.W)) + val address = Output(UInt(addrWidth.W)) + val mask = Output(UInt((dataWidth/8).W)) + val data = Output(UInt(dataWidth.W)) + val corrupt = Output(Bool()) + val valid = Output(Bool()) + val ready = Input(Bool()) +} + +object TLULA { + def apply(addr : UInt, data : UInt, valid : UInt) : TLULA = { + val a = Wire(new TLULA(addr.getWidth, data.getWidth)) + a.opcode := 0.U + a.param := 0.U + a.size := 0.U + a.source := 0.U + a.address := addr + a.mask := 0.U + a.data := data + a.corrupt := 0.U + a.valid := valid + a.ready := 0.U + a + } + def tieOff(addrWidth : Int, dataWidth: Int): TLULA = { + val a = Wire(new TLULA(addrWidth, dataWidth)) + a.opcode := 0.U + a.param := 0.U + a.size := 0.U + a.source := 0.U + a.address := 0.U + a.mask := 0.U + a.data := 0.U + a.corrupt := 0.U + a.valid := 0.U + a.ready := 0.U + a + } +} + +class TLULD(val addrWidth : Int, val dataWidth: Int) extends Bundle{ + val opcode = Output(UInt(TLUL.codeWidth.W)) + val param = Output(UInt(TLUL.dparamWidth.W)) + val size = Output(UInt(TLUL.size.W)) + val source = Output(UInt(TLUL.sourceWidth.W)) + val sink = Output(UInt(TLUL.sinkWidth.W)) + val denied = Output(Bool()) + val data = Output(UInt(dataWidth.W)) + val corrupt = Output(Bool()) + val valid = Output(Bool()) + val ready = Input(Bool()) +} + +object TLULD { + def apply(addr : UInt, data : UInt, valid : UInt) : TLULD = { + val d = Wire(new TLULD(addr.getWidth, data.getWidth)) + d.opcode := 0.U + d.param := 0.U + d.size := 0.U + d.source := 0.U + d.sink := 0.U + d.denied := 0.U + d.data := data + d.corrupt := 0.U + d.valid := valid + d.ready := 0.U + d + } + def tieOff(addrWidth : Int, dataWidth : Int): TLULD = { + val d = Wire(new TLULD(addrWidth, dataWidth)) + d.opcode := 0.U + d.param := 0.U + d.size := 0.U + d.source := 0.U + d.sink := 0.U + d.denied := 0.U + d.data := 0.U + d.corrupt := 0.U + d.valid := 0.U + d.ready := 0.U + d + } +} + +class TLULHost (val addrWidth : Int, val dataWidth: Int) extends Bundle{ + val a = new TLULA(addrWidth, dataWidth); + val d = Flipped(new TLULD(addrWidth, dataWidth)); +} + +class TLULDevice (val addrWidth : Int, val dataWidth: Int) extends Bundle{ + val a = Flipped(new TLULA(addrWidth, dataWidth)); + val d = new TLULD(addrWidth, dataWidth); +} + +object TLUL { + // Bus constants + val codeWidth = 3 + val aparamWidth = 3 + val dparamWidth = 3 + val sourceWidth = 10 + val sinkWidth = 1 + val size = 2 // 2^size bytes + +} + +object TLOp { + val PutFull = 0.U + val PutPartial = 1.U + val Get = 4.U +} + +object TLResp { + val AccessAck = 0.U + val AccessAckData = 1.U +}
diff --git a/hw/top_matcha/ip/dma/chisel/src/csr/CSR.scala b/hw/top_matcha/ip/dma/chisel/src/csr/CSR.scala new file mode 100644 index 0000000..8099948 --- /dev/null +++ b/hw/top_matcha/ip/dma/chisel/src/csr/CSR.scala
@@ -0,0 +1,47 @@ +/* +Copyright 2024 Google LLC +Copyright (C) 2019-2022 Antmicro + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +SPDX-License-Identifier: Apache-2.0 +*/ + +package DMAController.CSR + +import chisel3._ +import DMAController.DMAConfig._ + +class CSR(val addrWidth : Int) extends Module{ + val io = IO(new Bundle{ + val csr: Vec[CSRRegBundle] = Vec(DMAConfig.controlRegCount, new CSRRegBundle()) + val bus = Flipped(new CSRBusBundle) + }) + + val data = WireInit(0.U(DMAConfig.controlDataWidth.W)) + + io.bus.dataIn := data + + for(i <- 0 until DMAConfig.controlRegCount){ + when(io.bus.addr === i.U && io.bus.read){ + data := io.csr(i).dataIn + io.csr(i).dataRead := true.B + }.otherwise{ + io.csr(i).dataRead := false.B + } + + when(io.bus.addr === i.U && io.bus.write){ + io.csr(i).dataOut := io.bus.dataOut + io.csr(i).dataWrite := true.B + }.otherwise{ + io.csr(i).dataWrite := false.B + io.csr(i).dataOut := 0.U + } + } +}
diff --git a/hw/top_matcha/ip/dma/chisel/src/csr/CSRBusBundle.scala b/hw/top_matcha/ip/dma/chisel/src/csr/CSRBusBundle.scala new file mode 100644 index 0000000..cb460aa --- /dev/null +++ b/hw/top_matcha/ip/dma/chisel/src/csr/CSRBusBundle.scala
@@ -0,0 +1,28 @@ +/* +Copyright 2024 Google LLC +Copyright (C) 2019-2022 Antmicro + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +SPDX-License-Identifier: Apache-2.0 +*/ + +package DMAController.CSR + +import DMAController.DMAConfig._ +import chisel3._ +import chisel3.util.log2Ceil + +class CSRBusBundle extends Bundle { + val addr = Output(UInt(log2Ceil(DMAConfig.controlRegCount).W)) + val dataOut = Output(UInt(DMAConfig.controlDataWidth.W)) + val dataIn = Input(UInt(DMAConfig.controlDataWidth.W)) + val write = Output(Bool()) + val read = Output(Bool()) +}
diff --git a/hw/top_matcha/ip/dma/chisel/src/csr/CSRRegBundle.scala b/hw/top_matcha/ip/dma/chisel/src/csr/CSRRegBundle.scala new file mode 100644 index 0000000..06303e8 --- /dev/null +++ b/hw/top_matcha/ip/dma/chisel/src/csr/CSRRegBundle.scala
@@ -0,0 +1,26 @@ +/* +Copyright 2024 Google LLC +Copyright (C) 2019-2022 Antmicro + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +SPDX-License-Identifier: Apache-2.0 +*/ + +package DMAController.CSR + +import DMAController.DMAConfig._ +import chisel3._ + +class CSRRegBundle() extends Bundle{ + val dataRead = Output(Bool()) + val dataOut = Output(UInt(DMAConfig.controlDataWidth.W)) + val dataWrite = Output(Bool()) + val dataIn = Input(UInt(DMAConfig.controlDataWidth.W)) +}
diff --git a/hw/top_matcha/ip/dma/chisel/src/csr/ClearCSR.scala b/hw/top_matcha/ip/dma/chisel/src/csr/ClearCSR.scala new file mode 100644 index 0000000..22a3d65 --- /dev/null +++ b/hw/top_matcha/ip/dma/chisel/src/csr/ClearCSR.scala
@@ -0,0 +1,50 @@ +/* +Copyright 2024 Google LLC +Copyright (C) 2019-2022 Antmicro + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +SPDX-License-Identifier: Apache-2.0 +*/ + +package DMAController.CSR + +import DMAController.DMAConfig._ +import chisel3._ + +class ClearCSR extends Module{ + val io = IO(new Bundle{ + val csr = Flipped(new CSRRegBundle()) + val value = Output(UInt(DMAConfig.controlDataWidth.W)) + val clear = Input(UInt(DMAConfig.controlDataWidth.W)) + }) + + val reg = RegInit(0.U(DMAConfig.controlDataWidth.W)) + + io.csr.dataIn := reg + io.value := reg + + when(io.csr.dataWrite){ + reg := io.csr.dataOut + }.otherwise{ + reg := reg & (~io.clear).asUInt + } +} + +object ClearCSR { + def apply(clear : UInt, csrCtl : CSRRegBundle): UInt = { + val csr = Module(new ClearCSR()) + + csr.io.clear := clear + + csr.io.csr <> csrCtl + + csr.io.value + } +}
diff --git a/hw/top_matcha/ip/dma/chisel/src/csr/SetCSR.scala b/hw/top_matcha/ip/dma/chisel/src/csr/SetCSR.scala new file mode 100644 index 0000000..2d1376c --- /dev/null +++ b/hw/top_matcha/ip/dma/chisel/src/csr/SetCSR.scala
@@ -0,0 +1,52 @@ +/* +Copyright 2024 Google LLC +Copyright (C) 2019-2022 Antmicro + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +SPDX-License-Identifier: Apache-2.0 +*/ + +package DMAController.CSR + +import chisel3._ +import DMAController.DMAConfig.DMAConfig + +class SetCSR extends Module{ + val io = IO(new Bundle{ + val csr = Flipped(new CSRRegBundle()) + val value = Output(UInt(DMAConfig.controlDataWidth.W)) + val set = Input(UInt(DMAConfig.controlDataWidth.W)) + }) + + val reg = RegInit(0.U(DMAConfig.controlDataWidth.W)) + + io.csr.dataIn := reg + io.value := reg + + when(io.csr.dataWrite){ + reg := (reg & (~io.csr.dataOut).asUInt) | io.set + }.otherwise{ + reg := reg | io.set + } + +} + +object SetCSR { + def apply(set : UInt, csrCtl : CSRRegBundle): UInt = { + val csr = Module(new SetCSR()) + + csr.io.set := set + + csr.io.csr <> csrCtl + + csr.io.value + } +} +
diff --git a/hw/top_matcha/ip/dma/chisel/src/csr/SimpleCSR.scala b/hw/top_matcha/ip/dma/chisel/src/csr/SimpleCSR.scala new file mode 100644 index 0000000..8c99906 --- /dev/null +++ b/hw/top_matcha/ip/dma/chisel/src/csr/SimpleCSR.scala
@@ -0,0 +1,46 @@ +/* +Copyright 2024 Google LLC +Copyright (C) 2019-2022 Antmicro + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +SPDX-License-Identifier: Apache-2.0 +*/ + +package DMAController.CSR + +import chisel3._ +import DMAController.DMAConfig.DMAConfig + +class SimpleCSR extends Module{ + val io = IO(new Bundle{ + val csr = Flipped(new CSRRegBundle()) + val value = Output(UInt(DMAConfig.controlDataWidth.W)) + }) + + val reg = RegInit(0.U(DMAConfig.controlDataWidth.W)) + + io.csr.dataIn := reg + io.value := reg + + when(io.csr.dataWrite){ + reg := io.csr.dataOut + } + +} + +object SimpleCSR { + def apply(csrCtl : CSRRegBundle): UInt = { + val csr = Module(new SimpleCSR()) + + csr.io.csr <> csrCtl + + csr.io.value + } +}
diff --git a/hw/top_matcha/ip/dma/chisel/src/csr/StatusCSR.scala b/hw/top_matcha/ip/dma/chisel/src/csr/StatusCSR.scala new file mode 100644 index 0000000..af33eb1 --- /dev/null +++ b/hw/top_matcha/ip/dma/chisel/src/csr/StatusCSR.scala
@@ -0,0 +1,40 @@ +/* +Copyright 2024 Google LLC +Copyright (C) 2019-2022 Antmicro + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +SPDX-License-Identifier: Apache-2.0 +*/ + +package DMAController.CSR + +import DMAController.DMAConfig._ +import chisel3._ + +class StatusCSR extends Module{ + val io = IO(new Bundle{ + val csr = Flipped(new CSRRegBundle()) + val value = Input(UInt(DMAConfig.controlDataWidth.W)) + }) + + val reg = RegNext(io.value) + + io.csr.dataIn := reg +} + +object StatusCSR{ + def apply(status : UInt, csrCtl : CSRRegBundle): Unit = { + val csr = Module(new StatusCSR()) + + csr.io.csr <> csrCtl + + csr.io.value := status + } +}
diff --git a/hw/top_matcha/ip/dma/chisel/src/frontend/BusBase.scala b/hw/top_matcha/ip/dma/chisel/src/frontend/BusBase.scala new file mode 100644 index 0000000..c679fd0 --- /dev/null +++ b/hw/top_matcha/ip/dma/chisel/src/frontend/BusBase.scala
@@ -0,0 +1,39 @@ +/* +Copyright 2024 Google LLC +Copyright (C) 2019-2022 Antmicro + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +SPDX-License-Identifier: Apache-2.0 +*/ + +package DMAController.Frontend + +import chisel3._ +import chisel3.util._ + +import DMAController.Bus._ +import DMAController.CSR.{CSR, CSRBusBundle} +import DMAController.Worker.{WorkerCSRWrapper, XferDescBundle} +import DMAController.DMAConfig.DMAConfig + +abstract class IOBus[+T] extends Module { + val io : Bundle { + val bus : T + val dataIO : DecoupledIO[UInt] + val xfer : XferDescBundle + } +} + +abstract class CSRBus [+T] extends Module { + val io : Bundle { + val bus : CSRBusBundle + val ctl : T + } +}
diff --git a/hw/top_matcha/ip/dma/chisel/src/frontend/TLULCSR.scala b/hw/top_matcha/ip/dma/chisel/src/frontend/TLULCSR.scala new file mode 100644 index 0000000..370e73a --- /dev/null +++ b/hw/top_matcha/ip/dma/chisel/src/frontend/TLULCSR.scala
@@ -0,0 +1,104 @@ +/* +Copyright 2024 Google LLC + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +SPDX-License-Identifier: Apache-2.0 +*/ + +package DMAController.Frontend + +import DMAController.Bus._ +import DMAController.CSR.{CSR, CSRBusBundle} +import DMAController.DMAConfig._ +import DMAController.Worker.{WorkerCSRWrapper} +import chisel3._ +import chisel3.util._ + +class TLULCSR(addrWidth : Int, dataWidth : Int) extends CSRBus[TLULDevice]{ + val io = IO(new Bundle{ + val ctl = new TLULDevice(addrWidth, dataWidth) + val bus = new CSRBusBundle + }) + + val sIdle :: sGet :: sPut :: Nil = Enum(3) + val state = RegInit(sIdle) + + val rsp = WireInit(TLResp.AccessAck) + val valid = WireInit(false.B) + + val addr = RegInit(0.U(addrWidth.W)) + val wdata = RegInit(0.U(dataWidth.W)) + val sourceId = RegInit(0.U) + val size = RegInit(0.U) + + val write = WireInit(false.B) + + io.ctl.a <> TLULA.tieOff(addrWidth, dataWidth) + + // TLUL response + io.ctl.d.data := io.bus.dataIn + io.ctl.d.opcode := rsp + io.ctl.d.valid := valid + io.ctl.d.param := 0.U + io.ctl.d.size := size + io.ctl.d.corrupt := 0.U + io.ctl.d.sink := 0.U + io.ctl.d.source := sourceId + io.ctl.d.denied := 0.U + + // CSR Interface + io.bus.addr := addr + io.bus.dataOut := wdata + + io.bus.write := write + io.bus.read := (state === sGet) + + switch(state) { + is(sIdle) { + io.ctl.a.ready := true.B + valid := false.B + write := false.B + addr := io.ctl.a.address(5, 2) + when(io.ctl.a.valid) { + size := io.ctl.a.size + sourceId := io.ctl.a.source + + when(io.ctl.a.opcode === TLOp.Get) { + state := sGet + addr := io.ctl.a.address(5, 2) + }.elsewhen(io.ctl.a.opcode === TLOp.PutFull || + io.ctl.a.opcode === TLOp.PutPartial) { + addr := io.ctl.a.address(5, 2) + wdata := io.ctl.a.data + state := sPut + } + } + } + is(sGet) { + state := sGet + rsp := TLResp.AccessAckData + valid := true.B + when(io.ctl.d.ready) { + state := sIdle + } + } + is(sPut) { + state := sPut + rsp := TLResp.AccessAck + valid := true.B + when(io.ctl.d.ready) { + write := true.B + state := sIdle + } + } + } + + +}
diff --git a/hw/top_matcha/ip/dma/chisel/src/frontend/TLULReader.scala b/hw/top_matcha/ip/dma/chisel/src/frontend/TLULReader.scala new file mode 100644 index 0000000..1230b10 --- /dev/null +++ b/hw/top_matcha/ip/dma/chisel/src/frontend/TLULReader.scala
@@ -0,0 +1,116 @@ +/* +Copyright 2024 Google LLC + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +SPDX-License-Identifier: Apache-2.0 +*/ + +package DMAController.Frontend + +import DMAController.Bus._ +import DMAController.Worker.{XferDescBundle, WorkerCSRWrapper} +import DMAController.CSR.CSR +import chisel3._ +import chisel3.util._ + +class TLULReader(val addrWidth : Int, val dataWidth : Int) extends IOBus[TLULHost]{ + val io = IO(new Bundle{ + val bus = new TLULHost(addrWidth, dataWidth) + val dataIO = EnqIO(UInt(dataWidth.W)) + val xfer = Flipped(new XferDescBundle(addrWidth)) + }) + + val sIdle :: sTransfer :: sWait :: Nil = Enum(3) + + val state = RegInit(sIdle) + + val xferCnt = RegInit(0.U(addrWidth.W)) + val addr = RegInit(0.U(addrWidth.W)) + val valid = RegInit(false.B) + + val done = WireInit(false.B) + val xferValid = WireInit(false.B) + val xfer = WireInit(io.dataIO.ready && io.xfer.valid) + + io.bus.d <> TLULD.tieOff(addrWidth, dataWidth) + + // Producer to fifo + io.dataIO.bits := io.bus.d.data + io.dataIO.valid := xferValid + + io.bus.a.valid := valid + io.bus.a.data := 0.U + + io.bus.a.opcode := TLOp.Get + io.bus.a.param := 0.U + io.bus.a.size := 2.U + io.bus.a.source := 0.U + io.bus.a.address := addr + io.bus.a.corrupt := 0.U + io.bus.a.mask := 0xF.U + + io.xfer.done := done + + switch(state){ + is(sIdle){ + valid := false.B + io.bus.d.ready := false.B + done := false.B + xferValid := false.B + when(xfer) { + valid := true.B + state := sTransfer + xferCnt := io.xfer.length + addr := io.xfer.address + } + } + is(sTransfer){ + io.bus.d.ready := true.B + xferValid := false.B + when(io.bus.a.ready) { + valid := false.B + state := sWait + + when(xferCnt =/= 0.U) { + addr := addr + (dataWidth / 8).U + xferCnt := xferCnt - 1.U + } + + // Don't stall if we receive same cycle d_valid + when(io.bus.d.valid) { + xferValid := true.B + + when(xferCnt === 1.U) { + state := sIdle + done := true.B + }.otherwise { + valid := true.B + state := sTransfer + } + } + } + } + is(sWait){ + valid := false.B + xferValid := false.B + io.bus.d.ready := true.B + when(io.bus.d.valid) { + xferValid := true.B + when(xferCnt === 0.U) { + state := sIdle + done := true.B + }.otherwise { + valid := true.B + state := sTransfer + } + } + } + } +}
diff --git a/hw/top_matcha/ip/dma/chisel/src/frontend/TLULWriter.scala b/hw/top_matcha/ip/dma/chisel/src/frontend/TLULWriter.scala new file mode 100644 index 0000000..d025d94 --- /dev/null +++ b/hw/top_matcha/ip/dma/chisel/src/frontend/TLULWriter.scala
@@ -0,0 +1,124 @@ +/* +Copyright 2024 Google LLC + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +SPDX-License-Identifier: Apache-2.0 +*/ + +package DMAController.Frontend + +import DMAController.Bus._ +import DMAController.Worker.{XferDescBundle, WorkerCSRWrapper} +import DMAController.CSR.CSR +import chisel3._ +import chisel3.util._ + +class TLULWriter(val addrWidth : Int, val dataWidth : Int) extends IOBus[TLULHost]{ + val io = IO(new Bundle{ + val bus = new TLULHost(addrWidth, dataWidth) + val dataIO = DeqIO(UInt(dataWidth.W)) + val xfer = Flipped(new XferDescBundle(addrWidth)) + }) + + val sIdle :: sTransfer :: sWait :: Nil = Enum(3) + + val state = RegInit(sIdle) + + val xferCnt = RegInit(0.U(addrWidth.W)) + val addr = RegInit(0.U(addrWidth.W)) + val addrValid = RegInit(false.B) + val valid = RegInit(false.B) + + val done = WireInit(false.B) + val xferValid = WireInit(false.B) + + io.bus.d <> TLULD.tieOff(addrWidth, dataWidth) + + // Consumer of fifo + io.dataIO.ready := xferValid + + io.bus.a.valid := valid + io.bus.a.data := io.dataIO.bits + + // Note: Write port does not support TLUL partial put op + io.bus.a.opcode := TLOp.PutFull + io.bus.a.param := 0.U + io.bus.a.size := 2.U + io.bus.a.source := 0.U + io.bus.a.address := addr + io.bus.a.corrupt := 0.U + io.bus.a.mask := 0xF.U + + io.xfer.done := done + + switch(state){ + is(sIdle){ + valid := false.B + io.bus.d.ready := false.B + done := false.B + xferValid := false.B + + // Sync valid signals from the data queue and + // address generator here. + when(io.xfer.valid) { + addrValid := true.B + } + + when(io.dataIO.valid && addrValid) { + valid := true.B + state := sTransfer + xferCnt := io.xfer.length + addr := io.xfer.address + addrValid := false.B + } + } + is(sTransfer){ + io.bus.d.ready := true.B + xferValid := false.B + when(io.bus.a.ready) { + valid := false.B + state := sWait + + when(xferCnt =/= 0.U) { + addr := addr + (dataWidth / 8).U + xferCnt := xferCnt - 1.U + } + + // Don't stall if we receive same cycle d_valid + when(io.bus.d.valid) { + xferValid := true.B + + when(xferCnt === 1.U) { + state := sIdle + done := true.B + }.otherwise { + valid := true.B + state := sTransfer + } + } + } + } + is(sWait){ + valid := false.B + xferValid := false.B + io.bus.d.ready := true.B + when(io.bus.d.valid) { + xferValid := true.B + when(xferCnt === 0.U) { + state := sIdle + done := true.B + }.otherwise { + valid := true.B + state := sTransfer + } + } + } + } +}
diff --git a/hw/top_matcha/ip/dma/chisel/src/worker/AddressGenerator.scala b/hw/top_matcha/ip/dma/chisel/src/worker/AddressGenerator.scala new file mode 100644 index 0000000..a439c1c --- /dev/null +++ b/hw/top_matcha/ip/dma/chisel/src/worker/AddressGenerator.scala
@@ -0,0 +1,88 @@ +/* +Copyright (C) 2019-2022 Antmicro + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +SPDX-License-Identifier: Apache-2.0 +*/ + +package DMAController.Worker + +import chisel3._ +import chisel3.util._ + +class AddressGenerator(val addrWidth : Int, val dataWidth : Int) extends Module{ + val io = IO(new Bundle{ + val ctl = new AddressGeneratorCtlBundle(addrWidth) + val xfer = new XferDescBundle(addrWidth) + }) + + val sIdle :: sLine :: sLineWait :: sDone :: Nil = Enum(4) + + val state = RegInit(sIdle) + + val lineCount = RegInit(0.U(addrWidth.W)) + val lineGap = RegInit(0.U(addrWidth.W)) + + val address_o = RegInit(0.U(addrWidth.W)) + val address_i = RegInit(0.U(addrWidth.W)) + val length_o = RegInit(0.U(addrWidth.W)) + val length_i = RegInit(0.U(addrWidth.W)) + val valid = RegInit(false.B) + val first = RegInit(false.B) + val busy = RegInit(false.B) + + io.xfer.address := address_o + io.xfer.length := length_o + io.xfer.valid := valid + io.xfer.first := first + io.ctl.busy := busy + + when(state === sIdle){ + busy := false.B + }.otherwise{ + busy := true.B + } + + switch(state){ + is(sIdle){ + when(io.ctl.start){ + state := sLine + + address_i := io.ctl.startAddress + length_i := io.ctl.lineLength + lineCount := io.ctl.lineCount + lineGap := io.ctl.lineGap + first := true.B + } + } + is(sLine){ + + valid := true.B + address_o := address_i + length_o := length_i + address_i := address_i + (length_i * (dataWidth / 8).U) + (lineGap * (dataWidth / 8).U) + + lineCount := lineCount - 1.U + state := sLineWait + } + is(sLineWait){ + valid := false.B + first := false.B + when(io.xfer.done){ + when(lineCount > 0.U){ + state := sLine + }.otherwise{ + state := sIdle + } + } + } + } + +}
diff --git a/hw/top_matcha/ip/dma/chisel/src/worker/AddressGeneratorCtlBundle.scala b/hw/top_matcha/ip/dma/chisel/src/worker/AddressGeneratorCtlBundle.scala new file mode 100644 index 0000000..035623f --- /dev/null +++ b/hw/top_matcha/ip/dma/chisel/src/worker/AddressGeneratorCtlBundle.scala
@@ -0,0 +1,26 @@ +/* +Copyright (C) 2019-2022 Antmicro + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +SPDX-License-Identifier: Apache-2.0 +*/ + +package DMAController.Worker + +import chisel3._ + +class AddressGeneratorCtlBundle(val addrWidth : Int) extends Bundle{ + val start = Input(Bool()) + val busy = Output(Bool()) + val startAddress = Input(UInt(addrWidth.W)) + val lineLength = Input(UInt(addrWidth.W)) + val lineCount = Input(UInt(addrWidth.W)) + val lineGap = Input(UInt(addrWidth.W)) +}
diff --git a/hw/top_matcha/ip/dma/chisel/src/worker/InterruptBundle.scala b/hw/top_matcha/ip/dma/chisel/src/worker/InterruptBundle.scala new file mode 100644 index 0000000..96aeac2 --- /dev/null +++ b/hw/top_matcha/ip/dma/chisel/src/worker/InterruptBundle.scala
@@ -0,0 +1,22 @@ +/* +Copyright (C) 2019-2022 Antmicro + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +SPDX-License-Identifier: Apache-2.0 +*/ + +package DMAController.Worker + +import chisel3._ + +class InterruptBundle extends Bundle{ + val readerDone = Output(Bool()) + val writerDone = Output(Bool()) +}
diff --git a/hw/top_matcha/ip/dma/chisel/src/worker/InterruptController.scala b/hw/top_matcha/ip/dma/chisel/src/worker/InterruptController.scala new file mode 100644 index 0000000..054b06e --- /dev/null +++ b/hw/top_matcha/ip/dma/chisel/src/worker/InterruptController.scala
@@ -0,0 +1,64 @@ +/* +Copyright (C) 2019-2022 Antmicro + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +SPDX-License-Identifier: Apache-2.0 +*/ + +package DMAController.Worker + +import DMAController.CSR.{CSRRegBundle, SetCSR, SimpleCSR} +import chisel3._ +import chisel3.util.Cat + +class InterruptController extends Module{ + val io = IO(new Bundle { + val irq = new InterruptBundle + val readBusy = Input(Bool()) + val writeBusy = Input(Bool()) + val imr = Flipped(new CSRRegBundle()) + val isr = Flipped(new CSRRegBundle()) + }) + + val mask = WireInit(SimpleCSR(io.imr)) + + val readBusy = RegNext(io.readBusy) + val readBusyOld = RegNext(readBusy) + + val writeBusy = RegNext(io.writeBusy) + val writeBusyOld = RegNext(writeBusy) + + val writeBusyIrq = RegInit(false.B) + val readBusyIrq = RegInit(false.B) + + writeBusyIrq := writeBusyOld && !writeBusy && mask(0) + readBusyIrq := readBusyOld && !readBusy && mask(1) + + val irq = WireInit(Cat(readBusyIrq, writeBusyIrq)) + + val isr = WireInit(SetCSR(irq, io.isr)) + + io.irq.writerDone := isr(0) + io.irq.readerDone := isr(1) +} + +object InterruptController { + def apply(readBusy : Bool, writeBusy : Bool, imr : CSRRegBundle, isr : CSRRegBundle): InterruptBundle = { + val irqc = Module(new InterruptController) + + irqc.io.readBusy := readBusy + irqc.io.writeBusy := writeBusy + + irqc.io.imr <> imr + irqc.io.isr <> isr + + irqc.io.irq + } +} \ No newline at end of file
diff --git a/hw/top_matcha/ip/dma/chisel/src/worker/SyncBundle.scala b/hw/top_matcha/ip/dma/chisel/src/worker/SyncBundle.scala new file mode 100644 index 0000000..69612a0 --- /dev/null +++ b/hw/top_matcha/ip/dma/chisel/src/worker/SyncBundle.scala
@@ -0,0 +1,22 @@ +/* +Copyright (C) 2019-2022 Antmicro + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +SPDX-License-Identifier: Apache-2.0 +*/ + +package DMAController.Worker + +import chisel3._ + +class SyncBundle extends Bundle{ + val readerSync = Input(Bool()) + val writerSync = Input(Bool()) +}
diff --git a/hw/top_matcha/ip/dma/chisel/src/worker/TransferSplitter.scala b/hw/top_matcha/ip/dma/chisel/src/worker/TransferSplitter.scala new file mode 100644 index 0000000..0c68ae1 --- /dev/null +++ b/hw/top_matcha/ip/dma/chisel/src/worker/TransferSplitter.scala
@@ -0,0 +1,125 @@ +/* +Copyright (C) 2019-2022 Antmicro + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +SPDX-License-Identifier: Apache-2.0 +*/ + +package DMAController.Worker + +import chisel3._ +import chisel3.util._ + +class TransferSplitter(val addressWidth : Int, val dataWidth : Int, + val maxLength : Int, val canCrossBarrier : Boolean) extends Module{ + val io = IO(new Bundle{ + val xferIn = Flipped(new XferDescBundle(addressWidth)) + val xferOut = new XferDescBundle(addressWidth) + }) + + if(maxLength != 0) { + val sIdle :: sSplit :: sSplitWait :: Nil = Enum(3) + + val dataBytes: Int = dataWidth / 8 + + val barrierBytes: Int = 4096 + + val address_i = RegInit(0.U(addressWidth.W)) + val length_i = RegInit(0.U(addressWidth.W)) + + val address_o = RegInit(0.U(addressWidth.W)) + val length_o = RegInit(0.U(addressWidth.W)) + + val first_i = RegInit(false.B) + val first_o = RegInit(false.B) + + val done = RegInit(false.B) + val valid = RegInit(false.B) + + val state = RegInit(sIdle) + + io.xferIn.done := done + io.xferOut.valid := valid + + io.xferOut.first := first_o + io.xferOut.address := address_o + io.xferOut.length := length_o + + switch(state) { + is(sIdle) { + done := false.B + + when(io.xferIn.valid) { + address_i := io.xferIn.address + length_i := io.xferIn.length + first_i := io.xferIn.first + state := sSplit + } + } + is(sSplit) { + address_o := address_i + first_o := first_i + valid := true.B + state := sSplitWait + + when(length_i > maxLength.U) { + if (canCrossBarrier) { + length_o := maxLength.U + length_i := length_i - maxLength.U + address_i := address_i + maxLength.U * dataBytes.U + } else { + val bytesToBarrier = barrierBytes.U - address_i % barrierBytes.U + when(bytesToBarrier < maxLength.U * dataBytes.U) { + length_o := bytesToBarrier / dataBytes.U + length_i := length_i - bytesToBarrier / dataBytes.U + address_i := address_i + bytesToBarrier + }.otherwise { + length_o := maxLength.U + length_i := length_i - maxLength.U + address_i := address_i + maxLength.U * dataBytes.U + } + } + + }.otherwise { + if (canCrossBarrier) { + length_o := length_i + length_i := 0.U + address_i := address_i + length_i * dataBytes.U + } else { + val bytesToBarrier = barrierBytes.U - address_i % barrierBytes.U + when(bytesToBarrier < length_i * dataBytes.U) { + length_o := bytesToBarrier / dataBytes.U + length_i := length_i - bytesToBarrier / dataBytes.U + address_i := address_i + bytesToBarrier + }.otherwise { + length_o := length_i + length_i := 0.U + address_i := address_i + length_i * dataBytes.U + } + } + } + } + is(sSplitWait) { + valid := false.B + first_i := false.B + when(io.xferOut.done) { + when(length_i > 0.U) { + state := sSplit + }.otherwise { + state := sIdle + done := true.B + } + } + } + } + } else { + io.xferOut <> io.xferIn + } +}
diff --git a/hw/top_matcha/ip/dma/chisel/src/worker/WorkerCSRWrapper.scala b/hw/top_matcha/ip/dma/chisel/src/worker/WorkerCSRWrapper.scala new file mode 100644 index 0000000..8c05120 --- /dev/null +++ b/hw/top_matcha/ip/dma/chisel/src/worker/WorkerCSRWrapper.scala
@@ -0,0 +1,96 @@ +/* +Copyright 2024 Google LLC +Copyright (C) 2019-2022 Antmicro + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +SPDX-License-Identifier: Apache-2.0 +*/ + +package DMAController.Worker + +import DMAController.CSR._ +import DMAController.DMAConfig._ +import chisel3._ +import chisel3.util.Cat + +class WorkerCSRWrapper(addrWidth : Int, readerDataWidth : Int, writerDataWidth : Int, readerMaxBurst : Int, + writerMaxBurst : Int, reader4KBarrier : Boolean, writer4KBarrier : Boolean) extends Module{ + val io = IO(new Bundle{ + val csr: Vec[CSRRegBundle] = Vec(DMAConfig.controlRegCount, Flipped(new CSRRegBundle())) + val irq = new InterruptBundle + val sync = new SyncBundle + val xferRead = new XferDescBundle(addrWidth) + val xferWrite = new XferDescBundle(addrWidth) + }) + + val addressGeneratorRead = Module(new AddressGenerator(addrWidth, readerDataWidth)) + val transferSplitterRead = Module(new TransferSplitter(addrWidth, readerDataWidth, readerMaxBurst, reader4KBarrier)) + + val addressGeneratorWrite = Module(new AddressGenerator(addrWidth, writerDataWidth)) + val transferSplitterWrite = Module(new TransferSplitter(addrWidth, writerDataWidth, writerMaxBurst, writer4KBarrier)) + + val status = RegNext(Cat(addressGeneratorRead.io.ctl.busy, addressGeneratorWrite.io.ctl.busy)) + + val readerSync = RegNext(io.sync.readerSync) + val readerSyncOld = RegNext(readerSync) + + val writerSync = RegNext(io.sync.writerSync) + val writerSyncOld = RegNext(writerSync) + + val readerStart = RegInit(false.B) + val writerStart = RegInit(false.B) + + val control = Wire(UInt()) + val clear = Wire(UInt()) + + // TODO(hoangm): Consider versioning for future revisions of DMA. + val version = RegInit(0.U) + // 0x555 value does not conflict with prior bus configs. + val (in, csr, out) = (5,5,5) + val config = RegInit((in << 8 | csr << 4 | out).U(addrWidth.W)) + + control := ClearCSR(clear, io.csr(0)) + + StatusCSR(status, io.csr(1)) + + io.irq <> InterruptController(addressGeneratorRead.io.ctl.busy, addressGeneratorWrite.io.ctl.busy, + io.csr(2), io.csr(3)) + + clear := Cat(readerStart, writerStart) & ~Cat(control(5), control(4)) + + readerStart := ((!readerSyncOld && readerSync) || control(3)) && control(1) + writerStart := ((!writerSyncOld && writerSync) || control(2)) && control(0) + + addressGeneratorRead.io.ctl.start := readerStart + addressGeneratorRead.io.ctl.startAddress := SimpleCSR(io.csr(4)) + addressGeneratorRead.io.ctl.lineLength := SimpleCSR(io.csr(5)) + addressGeneratorRead.io.ctl.lineCount := SimpleCSR(io.csr(6)) + addressGeneratorRead.io.ctl.lineGap := SimpleCSR(io.csr(7)) + + addressGeneratorWrite.io.ctl.start := writerStart + addressGeneratorWrite.io.ctl.startAddress := SimpleCSR(io.csr(8)) + addressGeneratorWrite.io.ctl.lineLength := SimpleCSR(io.csr(9)) + addressGeneratorWrite.io.ctl.lineCount := SimpleCSR(io.csr(10)) + addressGeneratorWrite.io.ctl.lineGap := SimpleCSR(io.csr(11)) + + StatusCSR(version, io.csr(12)) + StatusCSR(config, io.csr(13)) + + for(i <- 14 until DMAConfig.controlRegCount){ + SimpleCSR(io.csr(i)) + } + + transferSplitterRead.io.xferIn <> addressGeneratorRead.io.xfer + io.xferRead <> transferSplitterRead.io.xferOut + + transferSplitterWrite.io.xferIn <> addressGeneratorWrite.io.xfer + io.xferWrite <> transferSplitterWrite.io.xferOut + +}
diff --git a/hw/top_matcha/ip/dma/chisel/src/worker/XferDescBundle.scala b/hw/top_matcha/ip/dma/chisel/src/worker/XferDescBundle.scala new file mode 100644 index 0000000..1e2762f --- /dev/null +++ b/hw/top_matcha/ip/dma/chisel/src/worker/XferDescBundle.scala
@@ -0,0 +1,25 @@ +/* +Copyright (C) 2019-2022 Antmicro + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +SPDX-License-Identifier: Apache-2.0 +*/ + +package DMAController.Worker + +import chisel3._ + +class XferDescBundle(val addrWidth : Int) extends Bundle{ + val done = Input(Bool()) + val address = Output(UInt(addrWidth.W)) + val length = Output(UInt(addrWidth.W)) + val valid = Output(Bool()) + val first = Output(Bool()) +}
diff --git a/hw/top_matcha/ip/dma/dma.core b/hw/top_matcha/ip/dma/dma.core index 27ab4b6..a293642 100644 --- a/hw/top_matcha/ip/dma/dma.core +++ b/hw/top_matcha/ip/dma/dma.core
@@ -9,10 +9,10 @@ depend: - lowrisc:ip:tlul - lowrisc:prim:all + - google:ip:fastvdma files: - rtl/dma.sv - - rtl/DMATopTL_TL_TL.v file_type: systemVerilogSource files_verilator_waiver:
diff --git a/hw/top_matcha/ip/dma/rtl/DMATopTL_TL_TL.v b/hw/top_matcha/ip/dma/rtl/DMATopTL_TL_TL.v deleted file mode 100644 index ee09b09..0000000 --- a/hw/top_matcha/ip/dma/rtl/DMATopTL_TL_TL.v +++ /dev/null
@@ -1,3188 +0,0 @@ -// Copyright 2023 Google LLC -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// SHA: f52a857f6167581412199b2fde43a4cb307cdada -module TLULCSRTL_TL_TL( // @[:@3.2] - input clock, // @[:@4.4] - input reset, // @[:@5.4] - input [2:0] io_ctl_a_opcode, // @[:@6.4] - input [1:0] io_ctl_a_size, // @[:@6.4] - input [9:0] io_ctl_a_source, // @[:@6.4] - input [31:0] io_ctl_a_address, // @[:@6.4] - input [31:0] io_ctl_a_data, // @[:@6.4] - input io_ctl_a_valid, // @[:@6.4] - output io_ctl_a_ready, // @[:@6.4] - output [2:0] io_ctl_d_opcode, // @[:@6.4] - output [1:0] io_ctl_d_size, // @[:@6.4] - output [9:0] io_ctl_d_source, // @[:@6.4] - output [31:0] io_ctl_d_data, // @[:@6.4] - output io_ctl_d_valid, // @[:@6.4] - input io_ctl_d_ready, // @[:@6.4] - output [3:0] io_bus_addr, // @[:@6.4] - output [31:0] io_bus_dataOut, // @[:@6.4] - input [31:0] io_bus_dataIn, // @[:@6.4] - output io_bus_write, // @[:@6.4] - output io_bus_read // @[:@6.4] -); - reg [1:0] state; // @[TLULCSR.scala 31:22:@8.4] - reg [31:0] _RAND_0; - reg [31:0] addr; // @[TLULCSR.scala 36:21:@13.4] - reg [31:0] _RAND_1; - reg [31:0] wdata; // @[TLULCSR.scala 37:22:@14.4] - reg [31:0] _RAND_2; - reg [9:0] sourceId; // @[TLULCSR.scala 38:25:@15.4] - reg [31:0] _RAND_3; - reg [1:0] size; // @[TLULCSR.scala 39:21:@16.4] - reg [31:0] _RAND_4; - wire _T_130; // @[Conditional.scala 37:30:@54.4] - wire [3:0] _T_134; // @[TLULCSR.scala 68:31:@59.6] - wire _T_138; // @[TLULCSR.scala 73:30:@64.8] - wire _T_140; // @[TLULCSR.scala 76:36:@71.10] - wire _T_141; // @[TLULCSR.scala 77:36:@72.10] - wire _T_142; // @[TLULCSR.scala 76:53:@73.10] - wire [3:0] _GEN_0; // @[TLULCSR.scala 77:57:@74.10] - wire [31:0] _GEN_1; // @[TLULCSR.scala 77:57:@74.10] - wire [1:0] _GEN_2; // @[TLULCSR.scala 77:57:@74.10] - wire [1:0] _GEN_3; // @[TLULCSR.scala 73:44:@65.8] - wire [3:0] _GEN_4; // @[TLULCSR.scala 73:44:@65.8] - wire [31:0] _GEN_5; // @[TLULCSR.scala 73:44:@65.8] - wire [1:0] _GEN_6; // @[TLULCSR.scala 69:28:@61.6] - wire [9:0] _GEN_7; // @[TLULCSR.scala 69:28:@61.6] - wire [1:0] _GEN_8; // @[TLULCSR.scala 69:28:@61.6] - wire [3:0] _GEN_9; // @[TLULCSR.scala 69:28:@61.6] - wire [31:0] _GEN_10; // @[TLULCSR.scala 69:28:@61.6] - wire _T_144; // @[Conditional.scala 37:30:@83.6] - wire [1:0] _GEN_11; // @[TLULCSR.scala 88:28:@88.8] - wire _T_146; // @[Conditional.scala 37:30:@93.8] - wire [1:0] _GEN_13; // @[TLULCSR.scala 96:28:@98.10] - wire [1:0] _GEN_14; // @[Conditional.scala 39:67:@94.8] - wire _GEN_17; // @[Conditional.scala 39:67:@94.8] - wire [1:0] _GEN_18; // @[Conditional.scala 39:67:@84.6] - wire _GEN_20; // @[Conditional.scala 39:67:@84.6] - wire _GEN_21; // @[Conditional.scala 39:67:@84.6] - wire [31:0] _GEN_25; // @[Conditional.scala 40:58:@55.4] - wire [1:0] _GEN_26; // @[Conditional.scala 40:58:@55.4] - wire [9:0] _GEN_27; // @[Conditional.scala 40:58:@55.4] - wire [1:0] _GEN_28; // @[Conditional.scala 40:58:@55.4] - wire [31:0] _GEN_29; // @[Conditional.scala 40:58:@55.4] - wire rsp; // @[Conditional.scala 40:58:@55.4] - assign _T_130 = 2'h0 == state; // @[Conditional.scala 37:30:@54.4] - assign _T_134 = io_ctl_a_address[5:2]; // @[TLULCSR.scala 68:31:@59.6] - assign _T_138 = io_ctl_a_opcode == 3'h4; // @[TLULCSR.scala 73:30:@64.8] - assign _T_140 = io_ctl_a_opcode == 3'h0; // @[TLULCSR.scala 76:36:@71.10] - assign _T_141 = io_ctl_a_opcode == 3'h1; // @[TLULCSR.scala 77:36:@72.10] - assign _T_142 = _T_140 | _T_141; // @[TLULCSR.scala 76:53:@73.10] - assign _GEN_0 = _T_142 ? _T_134 : _T_134; // @[TLULCSR.scala 77:57:@74.10] - assign _GEN_1 = _T_142 ? io_ctl_a_data : wdata; // @[TLULCSR.scala 77:57:@74.10] - assign _GEN_2 = _T_142 ? 2'h2 : state; // @[TLULCSR.scala 77:57:@74.10] - assign _GEN_3 = _T_138 ? 2'h1 : _GEN_2; // @[TLULCSR.scala 73:44:@65.8] - assign _GEN_4 = _T_138 ? _T_134 : _GEN_0; // @[TLULCSR.scala 73:44:@65.8] - assign _GEN_5 = _T_138 ? wdata : _GEN_1; // @[TLULCSR.scala 73:44:@65.8] - assign _GEN_6 = io_ctl_a_valid ? io_ctl_a_size : size; // @[TLULCSR.scala 69:28:@61.6] - assign _GEN_7 = io_ctl_a_valid ? io_ctl_a_source : sourceId; // @[TLULCSR.scala 69:28:@61.6] - assign _GEN_8 = io_ctl_a_valid ? _GEN_3 : state; // @[TLULCSR.scala 69:28:@61.6] - assign _GEN_9 = io_ctl_a_valid ? _GEN_4 : _T_134; // @[TLULCSR.scala 69:28:@61.6] - assign _GEN_10 = io_ctl_a_valid ? _GEN_5 : wdata; // @[TLULCSR.scala 69:28:@61.6] - assign _T_144 = 2'h1 == state; // @[Conditional.scala 37:30:@83.6] - assign _GEN_11 = io_ctl_d_ready ? 2'h0 : 2'h1; // @[TLULCSR.scala 88:28:@88.8] - assign _T_146 = 2'h2 == state; // @[Conditional.scala 37:30:@93.8] - assign _GEN_13 = io_ctl_d_ready ? 2'h0 : 2'h2; // @[TLULCSR.scala 96:28:@98.10] - assign _GEN_14 = _T_146 ? _GEN_13 : state; // @[Conditional.scala 39:67:@94.8] - assign _GEN_17 = _T_146 ? io_ctl_d_ready : 1'h0; // @[Conditional.scala 39:67:@94.8] - assign _GEN_18 = _T_144 ? _GEN_11 : _GEN_14; // @[Conditional.scala 39:67:@84.6] - assign _GEN_20 = _T_144 ? 1'h1 : _T_146; // @[Conditional.scala 39:67:@84.6] - assign _GEN_21 = _T_144 ? 1'h0 : _GEN_17; // @[Conditional.scala 39:67:@84.6] - assign _GEN_25 = _T_130 ? {{28'd0}, _GEN_9} : addr; // @[Conditional.scala 40:58:@55.4] - assign _GEN_26 = _T_130 ? _GEN_6 : size; // @[Conditional.scala 40:58:@55.4] - assign _GEN_27 = _T_130 ? _GEN_7 : sourceId; // @[Conditional.scala 40:58:@55.4] - assign _GEN_28 = _T_130 ? _GEN_8 : _GEN_18; // @[Conditional.scala 40:58:@55.4] - assign _GEN_29 = _T_130 ? _GEN_10 : wdata; // @[Conditional.scala 40:58:@55.4] - assign rsp = _T_130 ? 1'h0 : _T_144; // @[Conditional.scala 40:58:@55.4] - assign io_ctl_a_ready = 2'h0 == state; // @[TLULCSR.scala 43:12:@30.4 TLULCSR.scala 65:22:@56.6] - assign io_ctl_d_opcode = {{2'd0}, rsp}; // @[TLULCSR.scala 47:19:@41.4] - assign io_ctl_d_size = size; // @[TLULCSR.scala 50:17:@44.4] - assign io_ctl_d_source = sourceId; // @[TLULCSR.scala 53:19:@47.4] - assign io_ctl_d_data = io_bus_dataIn; // @[TLULCSR.scala 46:17:@40.4] - assign io_ctl_d_valid = _T_130 ? 1'h0 : _GEN_20; // @[TLULCSR.scala 48:18:@42.4] - assign io_bus_addr = addr[3:0]; // @[TLULCSR.scala 57:15:@49.4] - assign io_bus_dataOut = wdata; // @[TLULCSR.scala 58:18:@50.4] - assign io_bus_write = _T_130 ? 1'h0 : _GEN_21; // @[TLULCSR.scala 60:16:@51.4] - assign io_bus_read = state == 2'h1; // @[TLULCSR.scala 61:15:@53.4] -`ifdef RANDOMIZE_GARBAGE_ASSIGN -`define RANDOMIZE -`endif -`ifdef RANDOMIZE_INVALID_ASSIGN -`define RANDOMIZE -`endif -`ifdef RANDOMIZE_REG_INIT -`define RANDOMIZE -`endif -`ifdef RANDOMIZE_MEM_INIT -`define RANDOMIZE -`endif -`ifndef RANDOM -`define RANDOM $random -`endif -`ifdef RANDOMIZE - integer initvar; - initial begin - `ifdef INIT_RANDOM - `INIT_RANDOM - `endif - `ifndef VERILATOR - #0.002 begin end - `endif - `ifdef RANDOMIZE_REG_INIT - _RAND_0 = {1{`RANDOM}}; - state = _RAND_0[1:0]; - `endif // RANDOMIZE_REG_INIT - `ifdef RANDOMIZE_REG_INIT - _RAND_1 = {1{`RANDOM}}; - addr = _RAND_1[31:0]; - `endif // RANDOMIZE_REG_INIT - `ifdef RANDOMIZE_REG_INIT - _RAND_2 = {1{`RANDOM}}; - wdata = _RAND_2[31:0]; - `endif // RANDOMIZE_REG_INIT - `ifdef RANDOMIZE_REG_INIT - _RAND_3 = {1{`RANDOM}}; - sourceId = _RAND_3[9:0]; - `endif // RANDOMIZE_REG_INIT - `ifdef RANDOMIZE_REG_INIT - _RAND_4 = {1{`RANDOM}}; - size = _RAND_4[1:0]; - `endif // RANDOMIZE_REG_INIT - end -`endif // RANDOMIZE - always @(posedge clock) begin - if (reset) begin - state <= 2'h0; - end else begin - if (_T_130) begin - if (io_ctl_a_valid) begin - if (_T_138) begin - state <= 2'h1; - end else begin - if (_T_142) begin - state <= 2'h2; - end - end - end - end else begin - if (_T_144) begin - if (io_ctl_d_ready) begin - state <= 2'h0; - end else begin - state <= 2'h1; - end - end else begin - if (_T_146) begin - if (io_ctl_d_ready) begin - state <= 2'h0; - end else begin - state <= 2'h2; - end - end - end - end - end - if (reset) begin - addr <= 32'h0; - end else begin - if (_T_130) begin - addr <= {{28'd0}, _GEN_9}; - end - end - if (reset) begin - wdata <= 32'h0; - end else begin - if (_T_130) begin - if (io_ctl_a_valid) begin - if (!(_T_138)) begin - if (_T_142) begin - wdata <= io_ctl_a_data; - end - end - end - end - end - if (reset) begin - sourceId <= 10'h0; - end else begin - if (_T_130) begin - if (io_ctl_a_valid) begin - sourceId <= io_ctl_a_source; - end - end - end - if (reset) begin - size <= 2'h0; - end else begin - if (_T_130) begin - if (io_ctl_a_valid) begin - size <= io_ctl_a_size; - end - end - end - end -endmodule -module TLULReaderTL_TL_TL( // @[:@104.2] - input clock, // @[:@105.4] - input reset, // @[:@106.4] - output [31:0] io_bus_a_address, // @[:@107.4] - output io_bus_a_valid, // @[:@107.4] - input io_bus_a_ready, // @[:@107.4] - input [31:0] io_bus_d_data, // @[:@107.4] - input io_bus_d_valid, // @[:@107.4] - output io_bus_d_ready, // @[:@107.4] - input io_dataIO_ready, // @[:@107.4] - output io_dataIO_valid, // @[:@107.4] - output [31:0] io_dataIO_bits, // @[:@107.4] - output io_xfer_done, // @[:@107.4] - input [31:0] io_xfer_address, // @[:@107.4] - input [31:0] io_xfer_length, // @[:@107.4] - input io_xfer_valid // @[:@107.4] -); - reg [1:0] state; // @[TLULReader.scala 32:22:@109.4] - reg [31:0] _RAND_0; - reg [31:0] xferCnt; // @[TLULReader.scala 34:24:@110.4] - reg [31:0] _RAND_1; - reg [31:0] addr; // @[TLULReader.scala 35:21:@111.4] - reg [31:0] _RAND_2; - reg valid; // @[TLULReader.scala 36:22:@112.4] - reg [31:0] _RAND_3; - wire xfer; // @[TLULReader.scala 40:39:@117.4] - wire _T_146; // @[Conditional.scala 37:30:@153.4] - wire [1:0] _GEN_1; // @[TLULReader.scala 67:18:@159.6] - wire [31:0] _GEN_2; // @[TLULReader.scala 67:18:@159.6] - wire [31:0] _GEN_3; // @[TLULReader.scala 67:18:@159.6] - wire _T_152; // @[Conditional.scala 37:30:@167.6] - wire _T_157; // @[TLULReader.scala 81:22:@174.10] - wire [32:0] _T_159; // @[TLULReader.scala 82:24:@176.12] - wire [31:0] _T_160; // @[TLULReader.scala 82:24:@177.12] - wire [32:0] _T_162; // @[TLULReader.scala 83:30:@179.12] - wire [32:0] _T_163; // @[TLULReader.scala 83:30:@180.12] - wire [31:0] _T_164; // @[TLULReader.scala 83:30:@181.12] - wire [31:0] _GEN_4; // @[TLULReader.scala 81:31:@175.10] - wire [31:0] _GEN_5; // @[TLULReader.scala 81:31:@175.10] - wire _T_167; // @[TLULReader.scala 90:24:@186.12] - wire [1:0] _GEN_6; // @[TLULReader.scala 90:33:@187.12] - wire _GEN_8; // @[TLULReader.scala 90:33:@187.12] - wire [1:0] _GEN_10; // @[TLULReader.scala 87:30:@184.10] - wire _GEN_11; // @[TLULReader.scala 87:30:@184.10] - wire _GEN_12; // @[TLULReader.scala 87:30:@184.10] - wire _GEN_13; // @[TLULReader.scala 77:28:@171.8] - wire [1:0] _GEN_14; // @[TLULReader.scala 77:28:@171.8] - wire [31:0] _GEN_15; // @[TLULReader.scala 77:28:@171.8] - wire [31:0] _GEN_16; // @[TLULReader.scala 77:28:@171.8] - wire _GEN_17; // @[TLULReader.scala 77:28:@171.8] - wire _GEN_18; // @[TLULReader.scala 77:28:@171.8] - wire _T_170; // @[Conditional.scala 37:30:@199.8] - wire _T_176; // @[TLULReader.scala 106:22:@206.12] - wire [1:0] _GEN_19; // @[TLULReader.scala 106:31:@207.12] - wire _GEN_21; // @[TLULReader.scala 106:31:@207.12] - wire [1:0] _GEN_22; // @[TLULReader.scala 104:28:@204.10] - wire _GEN_23; // @[TLULReader.scala 104:28:@204.10] - wire _GEN_24; // @[TLULReader.scala 104:28:@204.10] - wire _GEN_25; // @[Conditional.scala 39:67:@200.8] - wire _GEN_26; // @[Conditional.scala 39:67:@200.8] - wire [1:0] _GEN_28; // @[Conditional.scala 39:67:@200.8] - wire _GEN_29; // @[Conditional.scala 39:67:@200.8] - wire _GEN_30; // @[Conditional.scala 39:67:@168.6] - wire _GEN_31; // @[Conditional.scala 39:67:@168.6] - wire _GEN_32; // @[Conditional.scala 39:67:@168.6] - wire [1:0] _GEN_33; // @[Conditional.scala 39:67:@168.6] - wire [31:0] _GEN_34; // @[Conditional.scala 39:67:@168.6] - wire [31:0] _GEN_35; // @[Conditional.scala 39:67:@168.6] - wire _GEN_36; // @[Conditional.scala 39:67:@168.6] - wire _GEN_37; // @[Conditional.scala 40:58:@154.4] - wire [1:0] _GEN_41; // @[Conditional.scala 40:58:@154.4] - wire [31:0] _GEN_42; // @[Conditional.scala 40:58:@154.4] - wire [31:0] _GEN_43; // @[Conditional.scala 40:58:@154.4] - assign xfer = io_dataIO_ready & io_xfer_valid; // @[TLULReader.scala 40:39:@117.4] - assign _T_146 = 2'h0 == state; // @[Conditional.scala 37:30:@153.4] - assign _GEN_1 = xfer ? 2'h1 : state; // @[TLULReader.scala 67:18:@159.6] - assign _GEN_2 = xfer ? io_xfer_length : xferCnt; // @[TLULReader.scala 67:18:@159.6] - assign _GEN_3 = xfer ? io_xfer_address : addr; // @[TLULReader.scala 67:18:@159.6] - assign _T_152 = 2'h1 == state; // @[Conditional.scala 37:30:@167.6] - assign _T_157 = xferCnt != 32'h0; // @[TLULReader.scala 81:22:@174.10] - assign _T_159 = addr + 32'h4; // @[TLULReader.scala 82:24:@176.12] - assign _T_160 = addr + 32'h4; // @[TLULReader.scala 82:24:@177.12] - assign _T_162 = xferCnt - 32'h1; // @[TLULReader.scala 83:30:@179.12] - assign _T_163 = $unsigned(_T_162); // @[TLULReader.scala 83:30:@180.12] - assign _T_164 = _T_163[31:0]; // @[TLULReader.scala 83:30:@181.12] - assign _GEN_4 = _T_157 ? _T_160 : addr; // @[TLULReader.scala 81:31:@175.10] - assign _GEN_5 = _T_157 ? _T_164 : xferCnt; // @[TLULReader.scala 81:31:@175.10] - assign _T_167 = xferCnt == 32'h1; // @[TLULReader.scala 90:24:@186.12] - assign _GEN_6 = _T_167 ? 2'h0 : 2'h1; // @[TLULReader.scala 90:33:@187.12] - assign _GEN_8 = _T_167 ? 1'h0 : 1'h1; // @[TLULReader.scala 90:33:@187.12] - assign _GEN_10 = io_bus_d_valid ? _GEN_6 : 2'h2; // @[TLULReader.scala 87:30:@184.10] - assign _GEN_11 = io_bus_d_valid ? _T_167 : 1'h0; // @[TLULReader.scala 87:30:@184.10] - assign _GEN_12 = io_bus_d_valid ? _GEN_8 : 1'h0; // @[TLULReader.scala 87:30:@184.10] - assign _GEN_13 = io_bus_a_ready ? _GEN_12 : valid; // @[TLULReader.scala 77:28:@171.8] - assign _GEN_14 = io_bus_a_ready ? _GEN_10 : state; // @[TLULReader.scala 77:28:@171.8] - assign _GEN_15 = io_bus_a_ready ? _GEN_4 : addr; // @[TLULReader.scala 77:28:@171.8] - assign _GEN_16 = io_bus_a_ready ? _GEN_5 : xferCnt; // @[TLULReader.scala 77:28:@171.8] - assign _GEN_17 = io_bus_a_ready ? io_bus_d_valid : 1'h0; // @[TLULReader.scala 77:28:@171.8] - assign _GEN_18 = io_bus_a_ready ? _GEN_11 : 1'h0; // @[TLULReader.scala 77:28:@171.8] - assign _T_170 = 2'h2 == state; // @[Conditional.scala 37:30:@199.8] - assign _T_176 = xferCnt == 32'h0; // @[TLULReader.scala 106:22:@206.12] - assign _GEN_19 = _T_176 ? 2'h0 : 2'h1; // @[TLULReader.scala 106:31:@207.12] - assign _GEN_21 = _T_176 ? 1'h0 : 1'h1; // @[TLULReader.scala 106:31:@207.12] - assign _GEN_22 = io_bus_d_valid ? _GEN_19 : state; // @[TLULReader.scala 104:28:@204.10] - assign _GEN_23 = io_bus_d_valid ? _T_176 : 1'h0; // @[TLULReader.scala 104:28:@204.10] - assign _GEN_24 = io_bus_d_valid ? _GEN_21 : 1'h0; // @[TLULReader.scala 104:28:@204.10] - assign _GEN_25 = _T_170 ? _GEN_24 : valid; // @[Conditional.scala 39:67:@200.8] - assign _GEN_26 = _T_170 ? io_bus_d_valid : 1'h0; // @[Conditional.scala 39:67:@200.8] - assign _GEN_28 = _T_170 ? _GEN_22 : state; // @[Conditional.scala 39:67:@200.8] - assign _GEN_29 = _T_170 ? _GEN_23 : 1'h0; // @[Conditional.scala 39:67:@200.8] - assign _GEN_30 = _T_152 ? 1'h1 : _T_170; // @[Conditional.scala 39:67:@168.6] - assign _GEN_31 = _T_152 ? _GEN_17 : _GEN_26; // @[Conditional.scala 39:67:@168.6] - assign _GEN_32 = _T_152 ? _GEN_13 : _GEN_25; // @[Conditional.scala 39:67:@168.6] - assign _GEN_33 = _T_152 ? _GEN_14 : _GEN_28; // @[Conditional.scala 39:67:@168.6] - assign _GEN_34 = _T_152 ? _GEN_15 : addr; // @[Conditional.scala 39:67:@168.6] - assign _GEN_35 = _T_152 ? _GEN_16 : xferCnt; // @[Conditional.scala 39:67:@168.6] - assign _GEN_36 = _T_152 ? _GEN_18 : _GEN_29; // @[Conditional.scala 39:67:@168.6] - assign _GEN_37 = _T_146 ? xfer : _GEN_32; // @[Conditional.scala 40:58:@154.4] - assign _GEN_41 = _T_146 ? _GEN_1 : _GEN_33; // @[Conditional.scala 40:58:@154.4] - assign _GEN_42 = _T_146 ? _GEN_2 : _GEN_35; // @[Conditional.scala 40:58:@154.4] - assign _GEN_43 = _T_146 ? _GEN_3 : _GEN_34; // @[Conditional.scala 40:58:@154.4] - assign io_bus_a_address = addr; // @[TLULReader.scala 55:20:@149.4] - assign io_bus_a_valid = valid; // @[TLULReader.scala 48:18:@143.4] - assign io_bus_d_ready = _T_146 ? 1'h0 : _GEN_30; // @[TLULReader.scala 42:12:@131.4 TLULReader.scala 64:22:@156.6 TLULReader.scala 75:22:@169.8 TLULReader.scala 103:22:@203.10] - assign io_dataIO_valid = _T_146 ? 1'h0 : _GEN_31; // @[TLULReader.scala 46:19:@142.4] - assign io_dataIO_bits = io_bus_d_data; // @[TLULReader.scala 45:18:@141.4] - assign io_xfer_done = _T_146 ? 1'h0 : _GEN_36; // @[TLULReader.scala 59:16:@152.4] -`ifdef RANDOMIZE_GARBAGE_ASSIGN -`define RANDOMIZE -`endif -`ifdef RANDOMIZE_INVALID_ASSIGN -`define RANDOMIZE -`endif -`ifdef RANDOMIZE_REG_INIT -`define RANDOMIZE -`endif -`ifdef RANDOMIZE_MEM_INIT -`define RANDOMIZE -`endif -`ifndef RANDOM -`define RANDOM $random -`endif -`ifdef RANDOMIZE - integer initvar; - initial begin - `ifdef INIT_RANDOM - `INIT_RANDOM - `endif - `ifndef VERILATOR - #0.002 begin end - `endif - `ifdef RANDOMIZE_REG_INIT - _RAND_0 = {1{`RANDOM}}; - state = _RAND_0[1:0]; - `endif // RANDOMIZE_REG_INIT - `ifdef RANDOMIZE_REG_INIT - _RAND_1 = {1{`RANDOM}}; - xferCnt = _RAND_1[31:0]; - `endif // RANDOMIZE_REG_INIT - `ifdef RANDOMIZE_REG_INIT - _RAND_2 = {1{`RANDOM}}; - addr = _RAND_2[31:0]; - `endif // RANDOMIZE_REG_INIT - `ifdef RANDOMIZE_REG_INIT - _RAND_3 = {1{`RANDOM}}; - valid = _RAND_3[0:0]; - `endif // RANDOMIZE_REG_INIT - end -`endif // RANDOMIZE - always @(posedge clock) begin - if (reset) begin - state <= 2'h0; - end else begin - if (_T_146) begin - if (xfer) begin - state <= 2'h1; - end - end else begin - if (_T_152) begin - if (io_bus_a_ready) begin - if (io_bus_d_valid) begin - if (_T_167) begin - state <= 2'h0; - end else begin - state <= 2'h1; - end - end else begin - state <= 2'h2; - end - end - end else begin - if (_T_170) begin - if (io_bus_d_valid) begin - if (_T_176) begin - state <= 2'h0; - end else begin - state <= 2'h1; - end - end - end - end - end - end - if (reset) begin - xferCnt <= 32'h0; - end else begin - if (_T_146) begin - if (xfer) begin - xferCnt <= io_xfer_length; - end - end else begin - if (_T_152) begin - if (io_bus_a_ready) begin - if (_T_157) begin - xferCnt <= _T_164; - end - end - end - end - end - if (reset) begin - addr <= 32'h0; - end else begin - if (_T_146) begin - if (xfer) begin - addr <= io_xfer_address; - end - end else begin - if (_T_152) begin - if (io_bus_a_ready) begin - if (_T_157) begin - addr <= _T_160; - end - end - end - end - end - if (reset) begin - valid <= 1'h0; - end else begin - if (_T_146) begin - valid <= xfer; - end else begin - if (_T_152) begin - if (io_bus_a_ready) begin - if (io_bus_d_valid) begin - if (_T_167) begin - valid <= 1'h0; - end else begin - valid <= 1'h1; - end - end else begin - valid <= 1'h0; - end - end - end else begin - if (_T_170) begin - if (io_bus_d_valid) begin - if (_T_176) begin - valid <= 1'h0; - end else begin - valid <= 1'h1; - end - end else begin - valid <= 1'h0; - end - end - end - end - end - end -endmodule -module TLULWriterTL_TL_TL( // @[:@218.2] - input clock, // @[:@219.4] - input reset, // @[:@220.4] - output [31:0] io_bus_a_address, // @[:@221.4] - output [31:0] io_bus_a_data, // @[:@221.4] - output io_bus_a_valid, // @[:@221.4] - input io_bus_a_ready, // @[:@221.4] - input io_bus_d_valid, // @[:@221.4] - output io_bus_d_ready, // @[:@221.4] - output io_dataIO_ready, // @[:@221.4] - input io_dataIO_valid, // @[:@221.4] - input [31:0] io_dataIO_bits, // @[:@221.4] - output io_xfer_done, // @[:@221.4] - input [31:0] io_xfer_address, // @[:@221.4] - input [31:0] io_xfer_length, // @[:@221.4] - input io_xfer_valid // @[:@221.4] -); - reg [1:0] state; // @[TLULWriter.scala 32:22:@223.4] - reg [31:0] _RAND_0; - reg [31:0] xferCnt; // @[TLULWriter.scala 34:24:@224.4] - reg [31:0] _RAND_1; - reg [31:0] addr; // @[TLULWriter.scala 35:21:@225.4] - reg [31:0] _RAND_2; - reg addrValid; // @[TLULWriter.scala 36:26:@226.4] - reg [31:0] _RAND_3; - reg valid; // @[TLULWriter.scala 37:22:@227.4] - reg [31:0] _RAND_4; - wire _T_151; // @[Conditional.scala 37:30:@264.4] - wire _GEN_0; // @[TLULWriter.scala 70:27:@270.6] - wire _T_157; // @[TLULWriter.scala 74:28:@273.6] - wire [1:0] _GEN_2; // @[TLULWriter.scala 74:42:@274.6] - wire [31:0] _GEN_3; // @[TLULWriter.scala 74:42:@274.6] - wire [31:0] _GEN_4; // @[TLULWriter.scala 74:42:@274.6] - wire _GEN_5; // @[TLULWriter.scala 74:42:@274.6] - wire _T_160; // @[Conditional.scala 37:30:@283.6] - wire _T_165; // @[TLULWriter.scala 89:22:@290.10] - wire [32:0] _T_167; // @[TLULWriter.scala 90:24:@292.12] - wire [31:0] _T_168; // @[TLULWriter.scala 90:24:@293.12] - wire [32:0] _T_170; // @[TLULWriter.scala 91:30:@295.12] - wire [32:0] _T_171; // @[TLULWriter.scala 91:30:@296.12] - wire [31:0] _T_172; // @[TLULWriter.scala 91:30:@297.12] - wire [31:0] _GEN_6; // @[TLULWriter.scala 89:31:@291.10] - wire [31:0] _GEN_7; // @[TLULWriter.scala 89:31:@291.10] - wire _T_175; // @[TLULWriter.scala 98:24:@302.12] - wire [1:0] _GEN_8; // @[TLULWriter.scala 98:33:@303.12] - wire _GEN_10; // @[TLULWriter.scala 98:33:@303.12] - wire [1:0] _GEN_12; // @[TLULWriter.scala 95:30:@300.10] - wire _GEN_13; // @[TLULWriter.scala 95:30:@300.10] - wire _GEN_14; // @[TLULWriter.scala 95:30:@300.10] - wire _GEN_15; // @[TLULWriter.scala 85:28:@287.8] - wire [1:0] _GEN_16; // @[TLULWriter.scala 85:28:@287.8] - wire [31:0] _GEN_17; // @[TLULWriter.scala 85:28:@287.8] - wire [31:0] _GEN_18; // @[TLULWriter.scala 85:28:@287.8] - wire _GEN_19; // @[TLULWriter.scala 85:28:@287.8] - wire _GEN_20; // @[TLULWriter.scala 85:28:@287.8] - wire _T_178; // @[Conditional.scala 37:30:@315.8] - wire _T_184; // @[TLULWriter.scala 114:22:@322.12] - wire [1:0] _GEN_21; // @[TLULWriter.scala 114:31:@323.12] - wire _GEN_23; // @[TLULWriter.scala 114:31:@323.12] - wire [1:0] _GEN_24; // @[TLULWriter.scala 112:28:@320.10] - wire _GEN_25; // @[TLULWriter.scala 112:28:@320.10] - wire _GEN_26; // @[TLULWriter.scala 112:28:@320.10] - wire _GEN_27; // @[Conditional.scala 39:67:@316.8] - wire _GEN_28; // @[Conditional.scala 39:67:@316.8] - wire [1:0] _GEN_30; // @[Conditional.scala 39:67:@316.8] - wire _GEN_31; // @[Conditional.scala 39:67:@316.8] - wire _GEN_32; // @[Conditional.scala 39:67:@284.6] - wire _GEN_33; // @[Conditional.scala 39:67:@284.6] - wire _GEN_34; // @[Conditional.scala 39:67:@284.6] - wire [1:0] _GEN_35; // @[Conditional.scala 39:67:@284.6] - wire [31:0] _GEN_36; // @[Conditional.scala 39:67:@284.6] - wire [31:0] _GEN_37; // @[Conditional.scala 39:67:@284.6] - wire _GEN_38; // @[Conditional.scala 39:67:@284.6] - wire _GEN_39; // @[Conditional.scala 40:58:@265.4] - wire _GEN_43; // @[Conditional.scala 40:58:@265.4] - wire [1:0] _GEN_44; // @[Conditional.scala 40:58:@265.4] - wire [31:0] _GEN_45; // @[Conditional.scala 40:58:@265.4] - wire [31:0] _GEN_46; // @[Conditional.scala 40:58:@265.4] - assign _T_151 = 2'h0 == state; // @[Conditional.scala 37:30:@264.4] - assign _GEN_0 = io_xfer_valid ? 1'h1 : addrValid; // @[TLULWriter.scala 70:27:@270.6] - assign _T_157 = io_dataIO_valid & addrValid; // @[TLULWriter.scala 74:28:@273.6] - assign _GEN_2 = _T_157 ? 2'h1 : state; // @[TLULWriter.scala 74:42:@274.6] - assign _GEN_3 = _T_157 ? io_xfer_length : xferCnt; // @[TLULWriter.scala 74:42:@274.6] - assign _GEN_4 = _T_157 ? io_xfer_address : addr; // @[TLULWriter.scala 74:42:@274.6] - assign _GEN_5 = _T_157 ? 1'h0 : _GEN_0; // @[TLULWriter.scala 74:42:@274.6] - assign _T_160 = 2'h1 == state; // @[Conditional.scala 37:30:@283.6] - assign _T_165 = xferCnt != 32'h0; // @[TLULWriter.scala 89:22:@290.10] - assign _T_167 = addr + 32'h4; // @[TLULWriter.scala 90:24:@292.12] - assign _T_168 = addr + 32'h4; // @[TLULWriter.scala 90:24:@293.12] - assign _T_170 = xferCnt - 32'h1; // @[TLULWriter.scala 91:30:@295.12] - assign _T_171 = $unsigned(_T_170); // @[TLULWriter.scala 91:30:@296.12] - assign _T_172 = _T_171[31:0]; // @[TLULWriter.scala 91:30:@297.12] - assign _GEN_6 = _T_165 ? _T_168 : addr; // @[TLULWriter.scala 89:31:@291.10] - assign _GEN_7 = _T_165 ? _T_172 : xferCnt; // @[TLULWriter.scala 89:31:@291.10] - assign _T_175 = xferCnt == 32'h1; // @[TLULWriter.scala 98:24:@302.12] - assign _GEN_8 = _T_175 ? 2'h0 : 2'h1; // @[TLULWriter.scala 98:33:@303.12] - assign _GEN_10 = _T_175 ? 1'h0 : 1'h1; // @[TLULWriter.scala 98:33:@303.12] - assign _GEN_12 = io_bus_d_valid ? _GEN_8 : 2'h2; // @[TLULWriter.scala 95:30:@300.10] - assign _GEN_13 = io_bus_d_valid ? _T_175 : 1'h0; // @[TLULWriter.scala 95:30:@300.10] - assign _GEN_14 = io_bus_d_valid ? _GEN_10 : 1'h0; // @[TLULWriter.scala 95:30:@300.10] - assign _GEN_15 = io_bus_a_ready ? _GEN_14 : valid; // @[TLULWriter.scala 85:28:@287.8] - assign _GEN_16 = io_bus_a_ready ? _GEN_12 : state; // @[TLULWriter.scala 85:28:@287.8] - assign _GEN_17 = io_bus_a_ready ? _GEN_6 : addr; // @[TLULWriter.scala 85:28:@287.8] - assign _GEN_18 = io_bus_a_ready ? _GEN_7 : xferCnt; // @[TLULWriter.scala 85:28:@287.8] - assign _GEN_19 = io_bus_a_ready ? io_bus_d_valid : 1'h0; // @[TLULWriter.scala 85:28:@287.8] - assign _GEN_20 = io_bus_a_ready ? _GEN_13 : 1'h0; // @[TLULWriter.scala 85:28:@287.8] - assign _T_178 = 2'h2 == state; // @[Conditional.scala 37:30:@315.8] - assign _T_184 = xferCnt == 32'h0; // @[TLULWriter.scala 114:22:@322.12] - assign _GEN_21 = _T_184 ? 2'h0 : 2'h1; // @[TLULWriter.scala 114:31:@323.12] - assign _GEN_23 = _T_184 ? 1'h0 : 1'h1; // @[TLULWriter.scala 114:31:@323.12] - assign _GEN_24 = io_bus_d_valid ? _GEN_21 : state; // @[TLULWriter.scala 112:28:@320.10] - assign _GEN_25 = io_bus_d_valid ? _T_184 : 1'h0; // @[TLULWriter.scala 112:28:@320.10] - assign _GEN_26 = io_bus_d_valid ? _GEN_23 : 1'h0; // @[TLULWriter.scala 112:28:@320.10] - assign _GEN_27 = _T_178 ? _GEN_26 : valid; // @[Conditional.scala 39:67:@316.8] - assign _GEN_28 = _T_178 ? io_bus_d_valid : 1'h0; // @[Conditional.scala 39:67:@316.8] - assign _GEN_30 = _T_178 ? _GEN_24 : state; // @[Conditional.scala 39:67:@316.8] - assign _GEN_31 = _T_178 ? _GEN_25 : 1'h0; // @[Conditional.scala 39:67:@316.8] - assign _GEN_32 = _T_160 ? 1'h1 : _T_178; // @[Conditional.scala 39:67:@284.6] - assign _GEN_33 = _T_160 ? _GEN_19 : _GEN_28; // @[Conditional.scala 39:67:@284.6] - assign _GEN_34 = _T_160 ? _GEN_15 : _GEN_27; // @[Conditional.scala 39:67:@284.6] - assign _GEN_35 = _T_160 ? _GEN_16 : _GEN_30; // @[Conditional.scala 39:67:@284.6] - assign _GEN_36 = _T_160 ? _GEN_17 : addr; // @[Conditional.scala 39:67:@284.6] - assign _GEN_37 = _T_160 ? _GEN_18 : xferCnt; // @[Conditional.scala 39:67:@284.6] - assign _GEN_38 = _T_160 ? _GEN_20 : _GEN_31; // @[Conditional.scala 39:67:@284.6] - assign _GEN_39 = _T_151 ? _T_157 : _GEN_34; // @[Conditional.scala 40:58:@265.4] - assign _GEN_43 = _T_151 ? _GEN_5 : addrValid; // @[Conditional.scala 40:58:@265.4] - assign _GEN_44 = _T_151 ? _GEN_2 : _GEN_35; // @[Conditional.scala 40:58:@265.4] - assign _GEN_45 = _T_151 ? _GEN_3 : _GEN_37; // @[Conditional.scala 40:58:@265.4] - assign _GEN_46 = _T_151 ? _GEN_4 : _GEN_36; // @[Conditional.scala 40:58:@265.4] - assign io_bus_a_address = addr; // @[TLULWriter.scala 55:20:@260.4] - assign io_bus_a_data = io_dataIO_bits; // @[TLULWriter.scala 48:17:@255.4] - assign io_bus_a_valid = valid; // @[TLULWriter.scala 47:18:@254.4] - assign io_bus_d_ready = _T_151 ? 1'h0 : _GEN_32; // @[TLULWriter.scala 42:12:@243.4 TLULWriter.scala 64:22:@267.6 TLULWriter.scala 83:22:@285.8 TLULWriter.scala 111:22:@319.10] - assign io_dataIO_ready = _T_151 ? 1'h0 : _GEN_33; // @[TLULWriter.scala 45:19:@253.4] - assign io_xfer_done = _T_151 ? 1'h0 : _GEN_38; // @[TLULWriter.scala 59:16:@263.4] -`ifdef RANDOMIZE_GARBAGE_ASSIGN -`define RANDOMIZE -`endif -`ifdef RANDOMIZE_INVALID_ASSIGN -`define RANDOMIZE -`endif -`ifdef RANDOMIZE_REG_INIT -`define RANDOMIZE -`endif -`ifdef RANDOMIZE_MEM_INIT -`define RANDOMIZE -`endif -`ifndef RANDOM -`define RANDOM $random -`endif -`ifdef RANDOMIZE - integer initvar; - initial begin - `ifdef INIT_RANDOM - `INIT_RANDOM - `endif - `ifndef VERILATOR - #0.002 begin end - `endif - `ifdef RANDOMIZE_REG_INIT - _RAND_0 = {1{`RANDOM}}; - state = _RAND_0[1:0]; - `endif // RANDOMIZE_REG_INIT - `ifdef RANDOMIZE_REG_INIT - _RAND_1 = {1{`RANDOM}}; - xferCnt = _RAND_1[31:0]; - `endif // RANDOMIZE_REG_INIT - `ifdef RANDOMIZE_REG_INIT - _RAND_2 = {1{`RANDOM}}; - addr = _RAND_2[31:0]; - `endif // RANDOMIZE_REG_INIT - `ifdef RANDOMIZE_REG_INIT - _RAND_3 = {1{`RANDOM}}; - addrValid = _RAND_3[0:0]; - `endif // RANDOMIZE_REG_INIT - `ifdef RANDOMIZE_REG_INIT - _RAND_4 = {1{`RANDOM}}; - valid = _RAND_4[0:0]; - `endif // RANDOMIZE_REG_INIT - end -`endif // RANDOMIZE - always @(posedge clock) begin - if (reset) begin - state <= 2'h0; - end else begin - if (_T_151) begin - if (_T_157) begin - state <= 2'h1; - end - end else begin - if (_T_160) begin - if (io_bus_a_ready) begin - if (io_bus_d_valid) begin - if (_T_175) begin - state <= 2'h0; - end else begin - state <= 2'h1; - end - end else begin - state <= 2'h2; - end - end - end else begin - if (_T_178) begin - if (io_bus_d_valid) begin - if (_T_184) begin - state <= 2'h0; - end else begin - state <= 2'h1; - end - end - end - end - end - end - if (reset) begin - xferCnt <= 32'h0; - end else begin - if (_T_151) begin - if (_T_157) begin - xferCnt <= io_xfer_length; - end - end else begin - if (_T_160) begin - if (io_bus_a_ready) begin - if (_T_165) begin - xferCnt <= _T_172; - end - end - end - end - end - if (reset) begin - addr <= 32'h0; - end else begin - if (_T_151) begin - if (_T_157) begin - addr <= io_xfer_address; - end - end else begin - if (_T_160) begin - if (io_bus_a_ready) begin - if (_T_165) begin - addr <= _T_168; - end - end - end - end - end - if (reset) begin - addrValid <= 1'h0; - end else begin - if (_T_151) begin - if (_T_157) begin - addrValid <= 1'h0; - end else begin - if (io_xfer_valid) begin - addrValid <= 1'h1; - end - end - end - end - if (reset) begin - valid <= 1'h0; - end else begin - if (_T_151) begin - valid <= _T_157; - end else begin - if (_T_160) begin - if (io_bus_a_ready) begin - if (io_bus_d_valid) begin - if (_T_175) begin - valid <= 1'h0; - end else begin - valid <= 1'h1; - end - end else begin - valid <= 1'h0; - end - end - end else begin - if (_T_178) begin - if (io_bus_d_valid) begin - if (_T_184) begin - valid <= 1'h0; - end else begin - valid <= 1'h1; - end - end else begin - valid <= 1'h0; - end - end - end - end - end - end -endmodule -module CSRTL_TL_TL( // @[:@334.2] - output [31:0] io_csr_0_dataOut, // @[:@337.4] - output io_csr_0_dataWrite, // @[:@337.4] - input [31:0] io_csr_0_dataIn, // @[:@337.4] - input [31:0] io_csr_1_dataIn, // @[:@337.4] - output [31:0] io_csr_2_dataOut, // @[:@337.4] - output io_csr_2_dataWrite, // @[:@337.4] - input [31:0] io_csr_2_dataIn, // @[:@337.4] - output [31:0] io_csr_3_dataOut, // @[:@337.4] - output io_csr_3_dataWrite, // @[:@337.4] - input [31:0] io_csr_3_dataIn, // @[:@337.4] - output [31:0] io_csr_4_dataOut, // @[:@337.4] - output io_csr_4_dataWrite, // @[:@337.4] - input [31:0] io_csr_4_dataIn, // @[:@337.4] - output [31:0] io_csr_5_dataOut, // @[:@337.4] - output io_csr_5_dataWrite, // @[:@337.4] - input [31:0] io_csr_5_dataIn, // @[:@337.4] - output [31:0] io_csr_6_dataOut, // @[:@337.4] - output io_csr_6_dataWrite, // @[:@337.4] - input [31:0] io_csr_6_dataIn, // @[:@337.4] - output [31:0] io_csr_7_dataOut, // @[:@337.4] - output io_csr_7_dataWrite, // @[:@337.4] - input [31:0] io_csr_7_dataIn, // @[:@337.4] - output [31:0] io_csr_8_dataOut, // @[:@337.4] - output io_csr_8_dataWrite, // @[:@337.4] - input [31:0] io_csr_8_dataIn, // @[:@337.4] - output [31:0] io_csr_9_dataOut, // @[:@337.4] - output io_csr_9_dataWrite, // @[:@337.4] - input [31:0] io_csr_9_dataIn, // @[:@337.4] - output [31:0] io_csr_10_dataOut, // @[:@337.4] - output io_csr_10_dataWrite, // @[:@337.4] - input [31:0] io_csr_10_dataIn, // @[:@337.4] - output [31:0] io_csr_11_dataOut, // @[:@337.4] - output io_csr_11_dataWrite, // @[:@337.4] - input [31:0] io_csr_11_dataIn, // @[:@337.4] - input [31:0] io_csr_12_dataIn, // @[:@337.4] - input [31:0] io_csr_13_dataIn, // @[:@337.4] - output [31:0] io_csr_14_dataOut, // @[:@337.4] - output io_csr_14_dataWrite, // @[:@337.4] - input [31:0] io_csr_14_dataIn, // @[:@337.4] - output [31:0] io_csr_15_dataOut, // @[:@337.4] - output io_csr_15_dataWrite, // @[:@337.4] - input [31:0] io_csr_15_dataIn, // @[:@337.4] - input [3:0] io_bus_addr, // @[:@337.4] - input [31:0] io_bus_dataOut, // @[:@337.4] - output [31:0] io_bus_dataIn, // @[:@337.4] - input io_bus_write, // @[:@337.4] - input io_bus_read // @[:@337.4] -); - wire _T_178; // @[CSR.scala 32:22:@342.4] - wire _T_179; // @[CSR.scala 32:30:@343.4] - wire [31:0] _GEN_0; // @[CSR.scala 32:45:@344.4] - wire _T_184; // @[CSR.scala 39:30:@352.4] - wire _T_189; // @[CSR.scala 32:22:@361.4] - wire _T_190; // @[CSR.scala 32:30:@362.4] - wire [31:0] _GEN_4; // @[CSR.scala 32:45:@363.4] - wire _T_200; // @[CSR.scala 32:22:@380.4] - wire _T_201; // @[CSR.scala 32:30:@381.4] - wire [31:0] _GEN_8; // @[CSR.scala 32:45:@382.4] - wire _T_206; // @[CSR.scala 39:30:@390.4] - wire _T_211; // @[CSR.scala 32:22:@399.4] - wire _T_212; // @[CSR.scala 32:30:@400.4] - wire [31:0] _GEN_12; // @[CSR.scala 32:45:@401.4] - wire _T_217; // @[CSR.scala 39:30:@409.4] - wire _T_222; // @[CSR.scala 32:22:@418.4] - wire _T_223; // @[CSR.scala 32:30:@419.4] - wire [31:0] _GEN_16; // @[CSR.scala 32:45:@420.4] - wire _T_228; // @[CSR.scala 39:30:@428.4] - wire _T_233; // @[CSR.scala 32:22:@437.4] - wire _T_234; // @[CSR.scala 32:30:@438.4] - wire [31:0] _GEN_20; // @[CSR.scala 32:45:@439.4] - wire _T_239; // @[CSR.scala 39:30:@447.4] - wire _T_244; // @[CSR.scala 32:22:@456.4] - wire _T_245; // @[CSR.scala 32:30:@457.4] - wire [31:0] _GEN_24; // @[CSR.scala 32:45:@458.4] - wire _T_250; // @[CSR.scala 39:30:@466.4] - wire _T_255; // @[CSR.scala 32:22:@475.4] - wire _T_256; // @[CSR.scala 32:30:@476.4] - wire [31:0] _GEN_28; // @[CSR.scala 32:45:@477.4] - wire _T_261; // @[CSR.scala 39:30:@485.4] - wire _T_266; // @[CSR.scala 32:22:@494.4] - wire _T_267; // @[CSR.scala 32:30:@495.4] - wire [31:0] _GEN_32; // @[CSR.scala 32:45:@496.4] - wire _T_272; // @[CSR.scala 39:30:@504.4] - wire _T_277; // @[CSR.scala 32:22:@513.4] - wire _T_278; // @[CSR.scala 32:30:@514.4] - wire [31:0] _GEN_36; // @[CSR.scala 32:45:@515.4] - wire _T_283; // @[CSR.scala 39:30:@523.4] - wire _T_288; // @[CSR.scala 32:22:@532.4] - wire _T_289; // @[CSR.scala 32:30:@533.4] - wire [31:0] _GEN_40; // @[CSR.scala 32:45:@534.4] - wire _T_294; // @[CSR.scala 39:30:@542.4] - wire _T_299; // @[CSR.scala 32:22:@551.4] - wire _T_300; // @[CSR.scala 32:30:@552.4] - wire [31:0] _GEN_44; // @[CSR.scala 32:45:@553.4] - wire _T_305; // @[CSR.scala 39:30:@561.4] - wire _T_310; // @[CSR.scala 32:22:@570.4] - wire _T_311; // @[CSR.scala 32:30:@571.4] - wire [31:0] _GEN_48; // @[CSR.scala 32:45:@572.4] - wire _T_321; // @[CSR.scala 32:22:@589.4] - wire _T_322; // @[CSR.scala 32:30:@590.4] - wire [31:0] _GEN_52; // @[CSR.scala 32:45:@591.4] - wire _T_332; // @[CSR.scala 32:22:@608.4] - wire _T_333; // @[CSR.scala 32:30:@609.4] - wire [31:0] _GEN_56; // @[CSR.scala 32:45:@610.4] - wire _T_338; // @[CSR.scala 39:30:@618.4] - wire _T_343; // @[CSR.scala 32:22:@627.4] - wire _T_344; // @[CSR.scala 32:30:@628.4] - wire _T_349; // @[CSR.scala 39:30:@637.4] - assign _T_178 = io_bus_addr == 4'h0; // @[CSR.scala 32:22:@342.4] - assign _T_179 = _T_178 & io_bus_read; // @[CSR.scala 32:30:@343.4] - assign _GEN_0 = _T_179 ? io_csr_0_dataIn : 32'h0; // @[CSR.scala 32:45:@344.4] - assign _T_184 = _T_178 & io_bus_write; // @[CSR.scala 39:30:@352.4] - assign _T_189 = io_bus_addr == 4'h1; // @[CSR.scala 32:22:@361.4] - assign _T_190 = _T_189 & io_bus_read; // @[CSR.scala 32:30:@362.4] - assign _GEN_4 = _T_190 ? io_csr_1_dataIn : _GEN_0; // @[CSR.scala 32:45:@363.4] - assign _T_200 = io_bus_addr == 4'h2; // @[CSR.scala 32:22:@380.4] - assign _T_201 = _T_200 & io_bus_read; // @[CSR.scala 32:30:@381.4] - assign _GEN_8 = _T_201 ? io_csr_2_dataIn : _GEN_4; // @[CSR.scala 32:45:@382.4] - assign _T_206 = _T_200 & io_bus_write; // @[CSR.scala 39:30:@390.4] - assign _T_211 = io_bus_addr == 4'h3; // @[CSR.scala 32:22:@399.4] - assign _T_212 = _T_211 & io_bus_read; // @[CSR.scala 32:30:@400.4] - assign _GEN_12 = _T_212 ? io_csr_3_dataIn : _GEN_8; // @[CSR.scala 32:45:@401.4] - assign _T_217 = _T_211 & io_bus_write; // @[CSR.scala 39:30:@409.4] - assign _T_222 = io_bus_addr == 4'h4; // @[CSR.scala 32:22:@418.4] - assign _T_223 = _T_222 & io_bus_read; // @[CSR.scala 32:30:@419.4] - assign _GEN_16 = _T_223 ? io_csr_4_dataIn : _GEN_12; // @[CSR.scala 32:45:@420.4] - assign _T_228 = _T_222 & io_bus_write; // @[CSR.scala 39:30:@428.4] - assign _T_233 = io_bus_addr == 4'h5; // @[CSR.scala 32:22:@437.4] - assign _T_234 = _T_233 & io_bus_read; // @[CSR.scala 32:30:@438.4] - assign _GEN_20 = _T_234 ? io_csr_5_dataIn : _GEN_16; // @[CSR.scala 32:45:@439.4] - assign _T_239 = _T_233 & io_bus_write; // @[CSR.scala 39:30:@447.4] - assign _T_244 = io_bus_addr == 4'h6; // @[CSR.scala 32:22:@456.4] - assign _T_245 = _T_244 & io_bus_read; // @[CSR.scala 32:30:@457.4] - assign _GEN_24 = _T_245 ? io_csr_6_dataIn : _GEN_20; // @[CSR.scala 32:45:@458.4] - assign _T_250 = _T_244 & io_bus_write; // @[CSR.scala 39:30:@466.4] - assign _T_255 = io_bus_addr == 4'h7; // @[CSR.scala 32:22:@475.4] - assign _T_256 = _T_255 & io_bus_read; // @[CSR.scala 32:30:@476.4] - assign _GEN_28 = _T_256 ? io_csr_7_dataIn : _GEN_24; // @[CSR.scala 32:45:@477.4] - assign _T_261 = _T_255 & io_bus_write; // @[CSR.scala 39:30:@485.4] - assign _T_266 = io_bus_addr == 4'h8; // @[CSR.scala 32:22:@494.4] - assign _T_267 = _T_266 & io_bus_read; // @[CSR.scala 32:30:@495.4] - assign _GEN_32 = _T_267 ? io_csr_8_dataIn : _GEN_28; // @[CSR.scala 32:45:@496.4] - assign _T_272 = _T_266 & io_bus_write; // @[CSR.scala 39:30:@504.4] - assign _T_277 = io_bus_addr == 4'h9; // @[CSR.scala 32:22:@513.4] - assign _T_278 = _T_277 & io_bus_read; // @[CSR.scala 32:30:@514.4] - assign _GEN_36 = _T_278 ? io_csr_9_dataIn : _GEN_32; // @[CSR.scala 32:45:@515.4] - assign _T_283 = _T_277 & io_bus_write; // @[CSR.scala 39:30:@523.4] - assign _T_288 = io_bus_addr == 4'ha; // @[CSR.scala 32:22:@532.4] - assign _T_289 = _T_288 & io_bus_read; // @[CSR.scala 32:30:@533.4] - assign _GEN_40 = _T_289 ? io_csr_10_dataIn : _GEN_36; // @[CSR.scala 32:45:@534.4] - assign _T_294 = _T_288 & io_bus_write; // @[CSR.scala 39:30:@542.4] - assign _T_299 = io_bus_addr == 4'hb; // @[CSR.scala 32:22:@551.4] - assign _T_300 = _T_299 & io_bus_read; // @[CSR.scala 32:30:@552.4] - assign _GEN_44 = _T_300 ? io_csr_11_dataIn : _GEN_40; // @[CSR.scala 32:45:@553.4] - assign _T_305 = _T_299 & io_bus_write; // @[CSR.scala 39:30:@561.4] - assign _T_310 = io_bus_addr == 4'hc; // @[CSR.scala 32:22:@570.4] - assign _T_311 = _T_310 & io_bus_read; // @[CSR.scala 32:30:@571.4] - assign _GEN_48 = _T_311 ? io_csr_12_dataIn : _GEN_44; // @[CSR.scala 32:45:@572.4] - assign _T_321 = io_bus_addr == 4'hd; // @[CSR.scala 32:22:@589.4] - assign _T_322 = _T_321 & io_bus_read; // @[CSR.scala 32:30:@590.4] - assign _GEN_52 = _T_322 ? io_csr_13_dataIn : _GEN_48; // @[CSR.scala 32:45:@591.4] - assign _T_332 = io_bus_addr == 4'he; // @[CSR.scala 32:22:@608.4] - assign _T_333 = _T_332 & io_bus_read; // @[CSR.scala 32:30:@609.4] - assign _GEN_56 = _T_333 ? io_csr_14_dataIn : _GEN_52; // @[CSR.scala 32:45:@610.4] - assign _T_338 = _T_332 & io_bus_write; // @[CSR.scala 39:30:@618.4] - assign _T_343 = io_bus_addr == 4'hf; // @[CSR.scala 32:22:@627.4] - assign _T_344 = _T_343 & io_bus_read; // @[CSR.scala 32:30:@628.4] - assign _T_349 = _T_343 & io_bus_write; // @[CSR.scala 39:30:@637.4] - assign io_csr_0_dataOut = _T_184 ? io_bus_dataOut : 32'h0; // @[CSR.scala 40:25:@354.6 CSR.scala 44:25:@359.6] - assign io_csr_0_dataWrite = _T_178 & io_bus_write; // @[CSR.scala 41:27:@355.6 CSR.scala 43:27:@358.6] - assign io_csr_2_dataOut = _T_206 ? io_bus_dataOut : 32'h0; // @[CSR.scala 40:25:@392.6 CSR.scala 44:25:@397.6] - assign io_csr_2_dataWrite = _T_200 & io_bus_write; // @[CSR.scala 41:27:@393.6 CSR.scala 43:27:@396.6] - assign io_csr_3_dataOut = _T_217 ? io_bus_dataOut : 32'h0; // @[CSR.scala 40:25:@411.6 CSR.scala 44:25:@416.6] - assign io_csr_3_dataWrite = _T_211 & io_bus_write; // @[CSR.scala 41:27:@412.6 CSR.scala 43:27:@415.6] - assign io_csr_4_dataOut = _T_228 ? io_bus_dataOut : 32'h0; // @[CSR.scala 40:25:@430.6 CSR.scala 44:25:@435.6] - assign io_csr_4_dataWrite = _T_222 & io_bus_write; // @[CSR.scala 41:27:@431.6 CSR.scala 43:27:@434.6] - assign io_csr_5_dataOut = _T_239 ? io_bus_dataOut : 32'h0; // @[CSR.scala 40:25:@449.6 CSR.scala 44:25:@454.6] - assign io_csr_5_dataWrite = _T_233 & io_bus_write; // @[CSR.scala 41:27:@450.6 CSR.scala 43:27:@453.6] - assign io_csr_6_dataOut = _T_250 ? io_bus_dataOut : 32'h0; // @[CSR.scala 40:25:@468.6 CSR.scala 44:25:@473.6] - assign io_csr_6_dataWrite = _T_244 & io_bus_write; // @[CSR.scala 41:27:@469.6 CSR.scala 43:27:@472.6] - assign io_csr_7_dataOut = _T_261 ? io_bus_dataOut : 32'h0; // @[CSR.scala 40:25:@487.6 CSR.scala 44:25:@492.6] - assign io_csr_7_dataWrite = _T_255 & io_bus_write; // @[CSR.scala 41:27:@488.6 CSR.scala 43:27:@491.6] - assign io_csr_8_dataOut = _T_272 ? io_bus_dataOut : 32'h0; // @[CSR.scala 40:25:@506.6 CSR.scala 44:25:@511.6] - assign io_csr_8_dataWrite = _T_266 & io_bus_write; // @[CSR.scala 41:27:@507.6 CSR.scala 43:27:@510.6] - assign io_csr_9_dataOut = _T_283 ? io_bus_dataOut : 32'h0; // @[CSR.scala 40:25:@525.6 CSR.scala 44:25:@530.6] - assign io_csr_9_dataWrite = _T_277 & io_bus_write; // @[CSR.scala 41:27:@526.6 CSR.scala 43:27:@529.6] - assign io_csr_10_dataOut = _T_294 ? io_bus_dataOut : 32'h0; // @[CSR.scala 40:25:@544.6 CSR.scala 44:25:@549.6] - assign io_csr_10_dataWrite = _T_288 & io_bus_write; // @[CSR.scala 41:27:@545.6 CSR.scala 43:27:@548.6] - assign io_csr_11_dataOut = _T_305 ? io_bus_dataOut : 32'h0; // @[CSR.scala 40:25:@563.6 CSR.scala 44:25:@568.6] - assign io_csr_11_dataWrite = _T_299 & io_bus_write; // @[CSR.scala 41:27:@564.6 CSR.scala 43:27:@567.6] - assign io_csr_14_dataOut = _T_338 ? io_bus_dataOut : 32'h0; // @[CSR.scala 40:25:@620.6 CSR.scala 44:25:@625.6] - assign io_csr_14_dataWrite = _T_332 & io_bus_write; // @[CSR.scala 41:27:@621.6 CSR.scala 43:27:@624.6] - assign io_csr_15_dataOut = _T_349 ? io_bus_dataOut : 32'h0; // @[CSR.scala 40:25:@639.6 CSR.scala 44:25:@644.6] - assign io_csr_15_dataWrite = _T_343 & io_bus_write; // @[CSR.scala 41:27:@640.6 CSR.scala 43:27:@643.6] - assign io_bus_dataIn = _T_344 ? io_csr_15_dataIn : _GEN_56; // @[CSR.scala 29:17:@341.4] -endmodule -module AddressGeneratorTL_TL_TL( // @[:@647.2] - input clock, // @[:@648.4] - input reset, // @[:@649.4] - input io_ctl_start, // @[:@650.4] - output io_ctl_busy, // @[:@650.4] - input [31:0] io_ctl_startAddress, // @[:@650.4] - input [31:0] io_ctl_lineLength, // @[:@650.4] - input [31:0] io_ctl_lineCount, // @[:@650.4] - input [31:0] io_ctl_lineGap, // @[:@650.4] - input io_xfer_done, // @[:@650.4] - output [31:0] io_xfer_address, // @[:@650.4] - output [31:0] io_xfer_length, // @[:@650.4] - output io_xfer_valid // @[:@650.4] -); - reg [1:0] state; // @[AddressGenerator.scala 29:22:@652.4] - reg [31:0] _RAND_0; - reg [31:0] lineCount; // @[AddressGenerator.scala 31:26:@653.4] - reg [31:0] _RAND_1; - reg [31:0] lineGap; // @[AddressGenerator.scala 32:24:@654.4] - reg [31:0] _RAND_2; - reg [31:0] address_o; // @[AddressGenerator.scala 34:26:@655.4] - reg [31:0] _RAND_3; - reg [31:0] address_i; // @[AddressGenerator.scala 35:26:@656.4] - reg [31:0] _RAND_4; - reg [31:0] length_o; // @[AddressGenerator.scala 36:25:@657.4] - reg [31:0] _RAND_5; - reg [31:0] length_i; // @[AddressGenerator.scala 37:25:@658.4] - reg [31:0] _RAND_6; - reg valid; // @[AddressGenerator.scala 38:22:@659.4] - reg [31:0] _RAND_7; - reg busy; // @[AddressGenerator.scala 40:21:@661.4] - reg [31:0] _RAND_8; - wire _T_46; // @[AddressGenerator.scala 48:14:@667.4] - wire _GEN_0; // @[AddressGenerator.scala 48:24:@668.4] - wire _T_49; // @[Conditional.scala 37:30:@674.4] - wire [1:0] _GEN_1; // @[AddressGenerator.scala 56:25:@676.6] - wire [31:0] _GEN_2; // @[AddressGenerator.scala 56:25:@676.6] - wire [31:0] _GEN_3; // @[AddressGenerator.scala 56:25:@676.6] - wire [31:0] _GEN_4; // @[AddressGenerator.scala 56:25:@676.6] - wire [31:0] _GEN_5; // @[AddressGenerator.scala 56:25:@676.6] - wire _T_51; // @[Conditional.scala 37:30:@686.6] - wire [34:0] _T_54; // @[AddressGenerator.scala 71:42:@691.8] - wire [34:0] _GEN_28; // @[AddressGenerator.scala 71:30:@692.8] - wire [35:0] _T_55; // @[AddressGenerator.scala 71:30:@692.8] - wire [34:0] _T_56; // @[AddressGenerator.scala 71:30:@693.8] - wire [34:0] _T_58; // @[AddressGenerator.scala 71:74:@694.8] - wire [35:0] _T_59; // @[AddressGenerator.scala 71:63:@695.8] - wire [34:0] _T_60; // @[AddressGenerator.scala 71:63:@696.8] - wire [32:0] _T_62; // @[AddressGenerator.scala 73:30:@698.8] - wire [32:0] _T_63; // @[AddressGenerator.scala 73:30:@699.8] - wire [31:0] _T_64; // @[AddressGenerator.scala 73:30:@700.8] - wire _T_65; // @[Conditional.scala 37:30:@705.8] - wire _T_69; // @[AddressGenerator.scala 80:24:@710.12] - wire [1:0] _GEN_7; // @[AddressGenerator.scala 80:30:@711.12] - wire [1:0] _GEN_8; // @[AddressGenerator.scala 79:25:@709.10] - wire _GEN_9; // @[Conditional.scala 39:67:@706.8] - wire [1:0] _GEN_11; // @[Conditional.scala 39:67:@706.8] - wire _GEN_12; // @[Conditional.scala 39:67:@687.6] - wire [31:0] _GEN_13; // @[Conditional.scala 39:67:@687.6] - wire [31:0] _GEN_14; // @[Conditional.scala 39:67:@687.6] - wire [34:0] _GEN_15; // @[Conditional.scala 39:67:@687.6] - wire [31:0] _GEN_16; // @[Conditional.scala 39:67:@687.6] - wire [1:0] _GEN_17; // @[Conditional.scala 39:67:@687.6] - wire [1:0] _GEN_19; // @[Conditional.scala 40:58:@675.4] - wire [34:0] _GEN_20; // @[Conditional.scala 40:58:@675.4] - wire [31:0] _GEN_21; // @[Conditional.scala 40:58:@675.4] - wire [31:0] _GEN_22; // @[Conditional.scala 40:58:@675.4] - wire [31:0] _GEN_23; // @[Conditional.scala 40:58:@675.4] - wire _GEN_25; // @[Conditional.scala 40:58:@675.4] - wire [31:0] _GEN_26; // @[Conditional.scala 40:58:@675.4] - wire [31:0] _GEN_27; // @[Conditional.scala 40:58:@675.4] - assign _T_46 = state == 2'h0; // @[AddressGenerator.scala 48:14:@667.4] - assign _GEN_0 = _T_46 ? 1'h0 : 1'h1; // @[AddressGenerator.scala 48:24:@668.4] - assign _T_49 = 2'h0 == state; // @[Conditional.scala 37:30:@674.4] - assign _GEN_1 = io_ctl_start ? 2'h1 : state; // @[AddressGenerator.scala 56:25:@676.6] - assign _GEN_2 = io_ctl_start ? io_ctl_startAddress : address_i; // @[AddressGenerator.scala 56:25:@676.6] - assign _GEN_3 = io_ctl_start ? io_ctl_lineLength : length_i; // @[AddressGenerator.scala 56:25:@676.6] - assign _GEN_4 = io_ctl_start ? io_ctl_lineCount : lineCount; // @[AddressGenerator.scala 56:25:@676.6] - assign _GEN_5 = io_ctl_start ? io_ctl_lineGap : lineGap; // @[AddressGenerator.scala 56:25:@676.6] - assign _T_51 = 2'h1 == state; // @[Conditional.scala 37:30:@686.6] - assign _T_54 = length_i * 32'h4; // @[AddressGenerator.scala 71:42:@691.8] - assign _GEN_28 = {{3'd0}, address_i}; // @[AddressGenerator.scala 71:30:@692.8] - assign _T_55 = _GEN_28 + _T_54; // @[AddressGenerator.scala 71:30:@692.8] - assign _T_56 = _GEN_28 + _T_54; // @[AddressGenerator.scala 71:30:@693.8] - assign _T_58 = lineGap * 32'h4; // @[AddressGenerator.scala 71:74:@694.8] - assign _T_59 = _T_56 + _T_58; // @[AddressGenerator.scala 71:63:@695.8] - assign _T_60 = _T_56 + _T_58; // @[AddressGenerator.scala 71:63:@696.8] - assign _T_62 = lineCount - 32'h1; // @[AddressGenerator.scala 73:30:@698.8] - assign _T_63 = $unsigned(_T_62); // @[AddressGenerator.scala 73:30:@699.8] - assign _T_64 = _T_63[31:0]; // @[AddressGenerator.scala 73:30:@700.8] - assign _T_65 = 2'h2 == state; // @[Conditional.scala 37:30:@705.8] - assign _T_69 = lineCount > 32'h0; // @[AddressGenerator.scala 80:24:@710.12] - assign _GEN_7 = _T_69 ? 2'h1 : 2'h0; // @[AddressGenerator.scala 80:30:@711.12] - assign _GEN_8 = io_xfer_done ? _GEN_7 : state; // @[AddressGenerator.scala 79:25:@709.10] - assign _GEN_9 = _T_65 ? 1'h0 : valid; // @[Conditional.scala 39:67:@706.8] - assign _GEN_11 = _T_65 ? _GEN_8 : state; // @[Conditional.scala 39:67:@706.8] - assign _GEN_12 = _T_51 ? 1'h1 : _GEN_9; // @[Conditional.scala 39:67:@687.6] - assign _GEN_13 = _T_51 ? address_i : address_o; // @[Conditional.scala 39:67:@687.6] - assign _GEN_14 = _T_51 ? length_i : length_o; // @[Conditional.scala 39:67:@687.6] - assign _GEN_15 = _T_51 ? _T_60 : {{3'd0}, address_i}; // @[Conditional.scala 39:67:@687.6] - assign _GEN_16 = _T_51 ? _T_64 : lineCount; // @[Conditional.scala 39:67:@687.6] - assign _GEN_17 = _T_51 ? 2'h2 : _GEN_11; // @[Conditional.scala 39:67:@687.6] - assign _GEN_19 = _T_49 ? _GEN_1 : _GEN_17; // @[Conditional.scala 40:58:@675.4] - assign _GEN_20 = _T_49 ? {{3'd0}, _GEN_2} : _GEN_15; // @[Conditional.scala 40:58:@675.4] - assign _GEN_21 = _T_49 ? _GEN_3 : length_i; // @[Conditional.scala 40:58:@675.4] - assign _GEN_22 = _T_49 ? _GEN_4 : _GEN_16; // @[Conditional.scala 40:58:@675.4] - assign _GEN_23 = _T_49 ? _GEN_5 : lineGap; // @[Conditional.scala 40:58:@675.4] - assign _GEN_25 = _T_49 ? valid : _GEN_12; // @[Conditional.scala 40:58:@675.4] - assign _GEN_26 = _T_49 ? address_o : _GEN_13; // @[Conditional.scala 40:58:@675.4] - assign _GEN_27 = _T_49 ? length_o : _GEN_14; // @[Conditional.scala 40:58:@675.4] - assign io_ctl_busy = busy; // @[AddressGenerator.scala 46:15:@666.4] - assign io_xfer_address = address_o; // @[AddressGenerator.scala 42:19:@662.4] - assign io_xfer_length = length_o; // @[AddressGenerator.scala 43:18:@663.4] - assign io_xfer_valid = valid; // @[AddressGenerator.scala 44:17:@664.4] -`ifdef RANDOMIZE_GARBAGE_ASSIGN -`define RANDOMIZE -`endif -`ifdef RANDOMIZE_INVALID_ASSIGN -`define RANDOMIZE -`endif -`ifdef RANDOMIZE_REG_INIT -`define RANDOMIZE -`endif -`ifdef RANDOMIZE_MEM_INIT -`define RANDOMIZE -`endif -`ifndef RANDOM -`define RANDOM $random -`endif -`ifdef RANDOMIZE - integer initvar; - initial begin - `ifdef INIT_RANDOM - `INIT_RANDOM - `endif - `ifndef VERILATOR - #0.002 begin end - `endif - `ifdef RANDOMIZE_REG_INIT - _RAND_0 = {1{`RANDOM}}; - state = _RAND_0[1:0]; - `endif // RANDOMIZE_REG_INIT - `ifdef RANDOMIZE_REG_INIT - _RAND_1 = {1{`RANDOM}}; - lineCount = _RAND_1[31:0]; - `endif // RANDOMIZE_REG_INIT - `ifdef RANDOMIZE_REG_INIT - _RAND_2 = {1{`RANDOM}}; - lineGap = _RAND_2[31:0]; - `endif // RANDOMIZE_REG_INIT - `ifdef RANDOMIZE_REG_INIT - _RAND_3 = {1{`RANDOM}}; - address_o = _RAND_3[31:0]; - `endif // RANDOMIZE_REG_INIT - `ifdef RANDOMIZE_REG_INIT - _RAND_4 = {1{`RANDOM}}; - address_i = _RAND_4[31:0]; - `endif // RANDOMIZE_REG_INIT - `ifdef RANDOMIZE_REG_INIT - _RAND_5 = {1{`RANDOM}}; - length_o = _RAND_5[31:0]; - `endif // RANDOMIZE_REG_INIT - `ifdef RANDOMIZE_REG_INIT - _RAND_6 = {1{`RANDOM}}; - length_i = _RAND_6[31:0]; - `endif // RANDOMIZE_REG_INIT - `ifdef RANDOMIZE_REG_INIT - _RAND_7 = {1{`RANDOM}}; - valid = _RAND_7[0:0]; - `endif // RANDOMIZE_REG_INIT - `ifdef RANDOMIZE_REG_INIT - _RAND_8 = {1{`RANDOM}}; - busy = _RAND_8[0:0]; - `endif // RANDOMIZE_REG_INIT - end -`endif // RANDOMIZE - always @(posedge clock) begin - if (reset) begin - state <= 2'h0; - end else begin - if (_T_49) begin - if (io_ctl_start) begin - state <= 2'h1; - end - end else begin - if (_T_51) begin - state <= 2'h2; - end else begin - if (_T_65) begin - if (io_xfer_done) begin - if (_T_69) begin - state <= 2'h1; - end else begin - state <= 2'h0; - end - end - end - end - end - end - if (reset) begin - lineCount <= 32'h0; - end else begin - if (_T_49) begin - if (io_ctl_start) begin - lineCount <= io_ctl_lineCount; - end - end else begin - if (_T_51) begin - lineCount <= _T_64; - end - end - end - if (reset) begin - lineGap <= 32'h0; - end else begin - if (_T_49) begin - if (io_ctl_start) begin - lineGap <= io_ctl_lineGap; - end - end - end - if (reset) begin - address_o <= 32'h0; - end else begin - if (!(_T_49)) begin - if (_T_51) begin - address_o <= address_i; - end - end - end - if (reset) begin - address_i <= 32'h0; - end else begin - address_i <= _GEN_20[31:0]; - end - if (reset) begin - length_o <= 32'h0; - end else begin - if (!(_T_49)) begin - if (_T_51) begin - length_o <= length_i; - end - end - end - if (reset) begin - length_i <= 32'h0; - end else begin - if (_T_49) begin - if (io_ctl_start) begin - length_i <= io_ctl_lineLength; - end - end - end - if (reset) begin - valid <= 1'h0; - end else begin - if (!(_T_49)) begin - if (_T_51) begin - valid <= 1'h1; - end else begin - if (_T_65) begin - valid <= 1'h0; - end - end - end - end - if (reset) begin - busy <= 1'h0; - end else begin - if (_T_46) begin - busy <= 1'h0; - end else begin - busy <= 1'h1; - end - end - end -endmodule -module TransferSplitterTL_TL_TL( // @[:@720.2] - output io_xferIn_done, // @[:@723.4] - input [31:0] io_xferIn_address, // @[:@723.4] - input [31:0] io_xferIn_length, // @[:@723.4] - input io_xferIn_valid, // @[:@723.4] - input io_xferOut_done, // @[:@723.4] - output [31:0] io_xferOut_address, // @[:@723.4] - output [31:0] io_xferOut_length, // @[:@723.4] - output io_xferOut_valid // @[:@723.4] -); - assign io_xferIn_done = io_xferOut_done; // @[TransferSplitter.scala 124:16:@729.4] - assign io_xferOut_address = io_xferIn_address; // @[TransferSplitter.scala 124:16:@728.4] - assign io_xferOut_length = io_xferIn_length; // @[TransferSplitter.scala 124:16:@727.4] - assign io_xferOut_valid = io_xferIn_valid; // @[TransferSplitter.scala 124:16:@726.4] -endmodule -module TransferSplitterTL_TL_TL_1( // @[:@804.2] - input clock, // @[:@805.4] - input reset, // @[:@806.4] - output io_xferIn_done, // @[:@807.4] - input [31:0] io_xferIn_address, // @[:@807.4] - input [31:0] io_xferIn_length, // @[:@807.4] - input io_xferIn_valid, // @[:@807.4] - input io_xferOut_done, // @[:@807.4] - output [31:0] io_xferOut_address, // @[:@807.4] - output [31:0] io_xferOut_length, // @[:@807.4] - output io_xferOut_valid // @[:@807.4] -); - reg [31:0] _T_42; // @[TransferSplitter.scala 35:28:@809.4] - reg [31:0] _RAND_0; - reg [31:0] _T_45; // @[TransferSplitter.scala 36:27:@810.4] - reg [31:0] _RAND_1; - reg [31:0] _T_48; // @[TransferSplitter.scala 38:28:@811.4] - reg [31:0] _RAND_2; - reg [31:0] _T_51; // @[TransferSplitter.scala 39:27:@812.4] - reg [31:0] _RAND_3; - reg _T_60; // @[TransferSplitter.scala 44:23:@815.4] - reg [31:0] _RAND_4; - reg _T_63; // @[TransferSplitter.scala 45:24:@816.4] - reg [31:0] _RAND_5; - reg [1:0] _T_65; // @[TransferSplitter.scala 47:24:@817.4] - reg [31:0] _RAND_6; - wire _T_66; // @[Conditional.scala 37:30:@823.4] - wire [31:0] _GEN_0; // @[TransferSplitter.scala 60:31:@826.6] - wire [31:0] _GEN_1; // @[TransferSplitter.scala 60:31:@826.6] - wire [1:0] _GEN_3; // @[TransferSplitter.scala 60:31:@826.6] - wire _T_68; // @[Conditional.scala 37:30:@834.6] - wire _T_71; // @[TransferSplitter.scala 73:23:@840.8] - wire [32:0] _T_74; // @[TransferSplitter.scala 76:34:@843.10] - wire [32:0] _T_75; // @[TransferSplitter.scala 76:34:@844.10] - wire [31:0] _T_76; // @[TransferSplitter.scala 76:34:@845.10] - wire [11:0] _T_79; // @[TransferSplitter.scala 77:50:@847.10] - wire [31:0] _GEN_33; // @[TransferSplitter.scala 77:36:@848.10] - wire [32:0] _T_80; // @[TransferSplitter.scala 77:36:@848.10] - wire [31:0] _T_81; // @[TransferSplitter.scala 77:36:@849.10] - wire [34:0] _T_84; // @[TransferSplitter.scala 95:47:@855.10] - wire [34:0] _GEN_34; // @[TransferSplitter.scala 95:36:@856.10] - wire [35:0] _T_85; // @[TransferSplitter.scala 95:36:@856.10] - wire [34:0] _T_86; // @[TransferSplitter.scala 95:36:@857.10] - wire [31:0] _GEN_4; // @[TransferSplitter.scala 73:38:@841.8] - wire [31:0] _GEN_5; // @[TransferSplitter.scala 73:38:@841.8] - wire [34:0] _GEN_6; // @[TransferSplitter.scala 73:38:@841.8] - wire _T_87; // @[Conditional.scala 37:30:@862.8] - wire _T_91; // @[TransferSplitter.scala 114:25:@867.12] - wire [1:0] _GEN_7; // @[TransferSplitter.scala 114:32:@868.12] - wire _GEN_8; // @[TransferSplitter.scala 114:32:@868.12] - wire [1:0] _GEN_9; // @[TransferSplitter.scala 113:31:@866.10] - wire _GEN_10; // @[TransferSplitter.scala 113:31:@866.10] - wire _GEN_11; // @[Conditional.scala 39:67:@863.8] - wire [1:0] _GEN_13; // @[Conditional.scala 39:67:@863.8] - wire _GEN_14; // @[Conditional.scala 39:67:@863.8] - wire [31:0] _GEN_15; // @[Conditional.scala 39:67:@835.6] - wire _GEN_17; // @[Conditional.scala 39:67:@835.6] - wire [1:0] _GEN_18; // @[Conditional.scala 39:67:@835.6] - wire [31:0] _GEN_19; // @[Conditional.scala 39:67:@835.6] - wire [31:0] _GEN_20; // @[Conditional.scala 39:67:@835.6] - wire [34:0] _GEN_21; // @[Conditional.scala 39:67:@835.6] - wire _GEN_23; // @[Conditional.scala 39:67:@835.6] - wire _GEN_24; // @[Conditional.scala 40:58:@824.4] - wire [34:0] _GEN_25; // @[Conditional.scala 40:58:@824.4] - wire [31:0] _GEN_26; // @[Conditional.scala 40:58:@824.4] - wire [1:0] _GEN_28; // @[Conditional.scala 40:58:@824.4] - wire [31:0] _GEN_29; // @[Conditional.scala 40:58:@824.4] - wire _GEN_31; // @[Conditional.scala 40:58:@824.4] - wire [31:0] _GEN_32; // @[Conditional.scala 40:58:@824.4] - assign _T_66 = 2'h0 == _T_65; // @[Conditional.scala 37:30:@823.4] - assign _GEN_0 = io_xferIn_valid ? io_xferIn_address : _T_42; // @[TransferSplitter.scala 60:31:@826.6] - assign _GEN_1 = io_xferIn_valid ? io_xferIn_length : _T_45; // @[TransferSplitter.scala 60:31:@826.6] - assign _GEN_3 = io_xferIn_valid ? 2'h1 : _T_65; // @[TransferSplitter.scala 60:31:@826.6] - assign _T_68 = 2'h1 == _T_65; // @[Conditional.scala 37:30:@834.6] - assign _T_71 = _T_45 > 32'h100; // @[TransferSplitter.scala 73:23:@840.8] - assign _T_74 = _T_45 - 32'h100; // @[TransferSplitter.scala 76:34:@843.10] - assign _T_75 = $unsigned(_T_74); // @[TransferSplitter.scala 76:34:@844.10] - assign _T_76 = _T_75[31:0]; // @[TransferSplitter.scala 76:34:@845.10] - assign _T_79 = 9'h100 * 9'h4; // @[TransferSplitter.scala 77:50:@847.10] - assign _GEN_33 = {{20'd0}, _T_79}; // @[TransferSplitter.scala 77:36:@848.10] - assign _T_80 = _T_42 + _GEN_33; // @[TransferSplitter.scala 77:36:@848.10] - assign _T_81 = _T_42 + _GEN_33; // @[TransferSplitter.scala 77:36:@849.10] - assign _T_84 = _T_45 * 32'h4; // @[TransferSplitter.scala 95:47:@855.10] - assign _GEN_34 = {{3'd0}, _T_42}; // @[TransferSplitter.scala 95:36:@856.10] - assign _T_85 = _GEN_34 + _T_84; // @[TransferSplitter.scala 95:36:@856.10] - assign _T_86 = _GEN_34 + _T_84; // @[TransferSplitter.scala 95:36:@857.10] - assign _GEN_4 = _T_71 ? 32'h100 : _T_45; // @[TransferSplitter.scala 73:38:@841.8] - assign _GEN_5 = _T_71 ? _T_76 : 32'h0; // @[TransferSplitter.scala 73:38:@841.8] - assign _GEN_6 = _T_71 ? {{3'd0}, _T_81} : _T_86; // @[TransferSplitter.scala 73:38:@841.8] - assign _T_87 = 2'h2 == _T_65; // @[Conditional.scala 37:30:@862.8] - assign _T_91 = _T_45 > 32'h0; // @[TransferSplitter.scala 114:25:@867.12] - assign _GEN_7 = _T_91 ? 2'h1 : 2'h0; // @[TransferSplitter.scala 114:32:@868.12] - assign _GEN_8 = _T_91 ? _T_60 : 1'h1; // @[TransferSplitter.scala 114:32:@868.12] - assign _GEN_9 = io_xferOut_done ? _GEN_7 : _T_65; // @[TransferSplitter.scala 113:31:@866.10] - assign _GEN_10 = io_xferOut_done ? _GEN_8 : _T_60; // @[TransferSplitter.scala 113:31:@866.10] - assign _GEN_11 = _T_87 ? 1'h0 : _T_63; // @[Conditional.scala 39:67:@863.8] - assign _GEN_13 = _T_87 ? _GEN_9 : _T_65; // @[Conditional.scala 39:67:@863.8] - assign _GEN_14 = _T_87 ? _GEN_10 : _T_60; // @[Conditional.scala 39:67:@863.8] - assign _GEN_15 = _T_68 ? _T_42 : _T_48; // @[Conditional.scala 39:67:@835.6] - assign _GEN_17 = _T_68 ? 1'h1 : _GEN_11; // @[Conditional.scala 39:67:@835.6] - assign _GEN_18 = _T_68 ? 2'h2 : _GEN_13; // @[Conditional.scala 39:67:@835.6] - assign _GEN_19 = _T_68 ? _GEN_4 : _T_51; // @[Conditional.scala 39:67:@835.6] - assign _GEN_20 = _T_68 ? _GEN_5 : _T_45; // @[Conditional.scala 39:67:@835.6] - assign _GEN_21 = _T_68 ? _GEN_6 : {{3'd0}, _T_42}; // @[Conditional.scala 39:67:@835.6] - assign _GEN_23 = _T_68 ? _T_60 : _GEN_14; // @[Conditional.scala 39:67:@835.6] - assign _GEN_24 = _T_66 ? 1'h0 : _GEN_23; // @[Conditional.scala 40:58:@824.4] - assign _GEN_25 = _T_66 ? {{3'd0}, _GEN_0} : _GEN_21; // @[Conditional.scala 40:58:@824.4] - assign _GEN_26 = _T_66 ? _GEN_1 : _GEN_20; // @[Conditional.scala 40:58:@824.4] - assign _GEN_28 = _T_66 ? _GEN_3 : _GEN_18; // @[Conditional.scala 40:58:@824.4] - assign _GEN_29 = _T_66 ? _T_48 : _GEN_15; // @[Conditional.scala 40:58:@824.4] - assign _GEN_31 = _T_66 ? _T_63 : _GEN_17; // @[Conditional.scala 40:58:@824.4] - assign _GEN_32 = _T_66 ? _T_51 : _GEN_19; // @[Conditional.scala 40:58:@824.4] - assign io_xferIn_done = _T_60; // @[TransferSplitter.scala 49:20:@818.4] - assign io_xferOut_address = _T_48; // @[TransferSplitter.scala 53:24:@821.4] - assign io_xferOut_length = _T_51; // @[TransferSplitter.scala 54:23:@822.4] - assign io_xferOut_valid = _T_63; // @[TransferSplitter.scala 50:22:@819.4] -`ifdef RANDOMIZE_GARBAGE_ASSIGN -`define RANDOMIZE -`endif -`ifdef RANDOMIZE_INVALID_ASSIGN -`define RANDOMIZE -`endif -`ifdef RANDOMIZE_REG_INIT -`define RANDOMIZE -`endif -`ifdef RANDOMIZE_MEM_INIT -`define RANDOMIZE -`endif -`ifndef RANDOM -`define RANDOM $random -`endif -`ifdef RANDOMIZE - integer initvar; - initial begin - `ifdef INIT_RANDOM - `INIT_RANDOM - `endif - `ifndef VERILATOR - #0.002 begin end - `endif - `ifdef RANDOMIZE_REG_INIT - _RAND_0 = {1{`RANDOM}}; - _T_42 = _RAND_0[31:0]; - `endif // RANDOMIZE_REG_INIT - `ifdef RANDOMIZE_REG_INIT - _RAND_1 = {1{`RANDOM}}; - _T_45 = _RAND_1[31:0]; - `endif // RANDOMIZE_REG_INIT - `ifdef RANDOMIZE_REG_INIT - _RAND_2 = {1{`RANDOM}}; - _T_48 = _RAND_2[31:0]; - `endif // RANDOMIZE_REG_INIT - `ifdef RANDOMIZE_REG_INIT - _RAND_3 = {1{`RANDOM}}; - _T_51 = _RAND_3[31:0]; - `endif // RANDOMIZE_REG_INIT - `ifdef RANDOMIZE_REG_INIT - _RAND_4 = {1{`RANDOM}}; - _T_60 = _RAND_4[0:0]; - `endif // RANDOMIZE_REG_INIT - `ifdef RANDOMIZE_REG_INIT - _RAND_5 = {1{`RANDOM}}; - _T_63 = _RAND_5[0:0]; - `endif // RANDOMIZE_REG_INIT - `ifdef RANDOMIZE_REG_INIT - _RAND_6 = {1{`RANDOM}}; - _T_65 = _RAND_6[1:0]; - `endif // RANDOMIZE_REG_INIT - end -`endif // RANDOMIZE - always @(posedge clock) begin - if (reset) begin - _T_42 <= 32'h0; - end else begin - _T_42 <= _GEN_25[31:0]; - end - if (reset) begin - _T_45 <= 32'h0; - end else begin - if (_T_66) begin - if (io_xferIn_valid) begin - _T_45 <= io_xferIn_length; - end - end else begin - if (_T_68) begin - if (_T_71) begin - _T_45 <= _T_76; - end else begin - _T_45 <= 32'h0; - end - end - end - end - if (reset) begin - _T_48 <= 32'h0; - end else begin - if (!(_T_66)) begin - if (_T_68) begin - _T_48 <= _T_42; - end - end - end - if (reset) begin - _T_51 <= 32'h0; - end else begin - if (!(_T_66)) begin - if (_T_68) begin - if (_T_71) begin - _T_51 <= 32'h100; - end else begin - _T_51 <= _T_45; - end - end - end - end - if (reset) begin - _T_60 <= 1'h0; - end else begin - if (_T_66) begin - _T_60 <= 1'h0; - end else begin - if (!(_T_68)) begin - if (_T_87) begin - if (io_xferOut_done) begin - if (!(_T_91)) begin - _T_60 <= 1'h1; - end - end - end - end - end - end - if (reset) begin - _T_63 <= 1'h0; - end else begin - if (!(_T_66)) begin - if (_T_68) begin - _T_63 <= 1'h1; - end else begin - if (_T_87) begin - _T_63 <= 1'h0; - end - end - end - end - if (reset) begin - _T_65 <= 2'h0; - end else begin - if (_T_66) begin - if (io_xferIn_valid) begin - _T_65 <= 2'h1; - end - end else begin - if (_T_68) begin - _T_65 <= 2'h2; - end else begin - if (_T_87) begin - if (io_xferOut_done) begin - if (_T_91) begin - _T_65 <= 2'h1; - end else begin - _T_65 <= 2'h0; - end - end - end - end - end - end - end -endmodule -module ClearCSRTL_TL_TL( // @[:@878.2] - input clock, // @[:@879.4] - input reset, // @[:@880.4] - input [31:0] io_csr_dataOut, // @[:@881.4] - input io_csr_dataWrite, // @[:@881.4] - output [31:0] io_csr_dataIn, // @[:@881.4] - output [31:0] io_value, // @[:@881.4] - input [31:0] io_clear // @[:@881.4] -); - reg [31:0] reg$; // @[ClearCSR.scala 28:20:@883.4] - reg [31:0] _RAND_0; - wire [31:0] _T_29; // @[ClearCSR.scala 36:19:@890.6] - wire [31:0] _T_30; // @[ClearCSR.scala 36:16:@891.6] - wire [31:0] _GEN_0; // @[ClearCSR.scala 33:25:@886.4] - assign _T_29 = ~ io_clear; // @[ClearCSR.scala 36:19:@890.6] - assign _T_30 = reg$ & _T_29; // @[ClearCSR.scala 36:16:@891.6] - assign _GEN_0 = io_csr_dataWrite ? io_csr_dataOut : _T_30; // @[ClearCSR.scala 33:25:@886.4] - assign io_csr_dataIn = reg$; // @[ClearCSR.scala 30:17:@884.4] - assign io_value = reg$; // @[ClearCSR.scala 31:12:@885.4] -`ifdef RANDOMIZE_GARBAGE_ASSIGN -`define RANDOMIZE -`endif -`ifdef RANDOMIZE_INVALID_ASSIGN -`define RANDOMIZE -`endif -`ifdef RANDOMIZE_REG_INIT -`define RANDOMIZE -`endif -`ifdef RANDOMIZE_MEM_INIT -`define RANDOMIZE -`endif -`ifndef RANDOM -`define RANDOM $random -`endif -`ifdef RANDOMIZE - integer initvar; - initial begin - `ifdef INIT_RANDOM - `INIT_RANDOM - `endif - `ifndef VERILATOR - #0.002 begin end - `endif - `ifdef RANDOMIZE_REG_INIT - _RAND_0 = {1{`RANDOM}}; - reg$ = _RAND_0[31:0]; - `endif // RANDOMIZE_REG_INIT - end -`endif // RANDOMIZE - always @(posedge clock) begin - if (reset) begin - reg$ <= 32'h0; - end else begin - if (io_csr_dataWrite) begin - reg$ <= io_csr_dataOut; - end else begin - reg$ <= _T_30; - end - end - end -endmodule -module StatusCSRTL_TL_TL( // @[:@895.2] - input clock, // @[:@896.4] - output [31:0] io_csr_dataIn, // @[:@898.4] - input [31:0] io_value // @[:@898.4] -); - reg [31:0] reg$; // @[StatusCSR.scala 27:20:@900.4] - reg [31:0] _RAND_0; - assign io_csr_dataIn = reg$; // @[StatusCSR.scala 29:17:@902.4] -`ifdef RANDOMIZE_GARBAGE_ASSIGN -`define RANDOMIZE -`endif -`ifdef RANDOMIZE_INVALID_ASSIGN -`define RANDOMIZE -`endif -`ifdef RANDOMIZE_REG_INIT -`define RANDOMIZE -`endif -`ifdef RANDOMIZE_MEM_INIT -`define RANDOMIZE -`endif -`ifndef RANDOM -`define RANDOM $random -`endif -`ifdef RANDOMIZE - integer initvar; - initial begin - `ifdef INIT_RANDOM - `INIT_RANDOM - `endif - `ifndef VERILATOR - #0.002 begin end - `endif - `ifdef RANDOMIZE_REG_INIT - _RAND_0 = {1{`RANDOM}}; - reg$ = _RAND_0[31:0]; - `endif // RANDOMIZE_REG_INIT - end -`endif // RANDOMIZE - always @(posedge clock) begin - reg$ <= io_value; - end -endmodule -module SimpleCSRTL_TL_TL( // @[:@904.2] - input clock, // @[:@905.4] - input reset, // @[:@906.4] - input [31:0] io_csr_dataOut, // @[:@907.4] - input io_csr_dataWrite, // @[:@907.4] - output [31:0] io_csr_dataIn, // @[:@907.4] - output [31:0] io_value // @[:@907.4] -); - reg [31:0] reg$; // @[SimpleCSR.scala 27:20:@909.4] - reg [31:0] _RAND_0; - wire [31:0] _GEN_0; // @[SimpleCSR.scala 32:25:@912.4] - assign _GEN_0 = io_csr_dataWrite ? io_csr_dataOut : reg$; // @[SimpleCSR.scala 32:25:@912.4] - assign io_csr_dataIn = reg$; // @[SimpleCSR.scala 29:17:@910.4] - assign io_value = reg$; // @[SimpleCSR.scala 30:12:@911.4] -`ifdef RANDOMIZE_GARBAGE_ASSIGN -`define RANDOMIZE -`endif -`ifdef RANDOMIZE_INVALID_ASSIGN -`define RANDOMIZE -`endif -`ifdef RANDOMIZE_REG_INIT -`define RANDOMIZE -`endif -`ifdef RANDOMIZE_MEM_INIT -`define RANDOMIZE -`endif -`ifndef RANDOM -`define RANDOM $random -`endif -`ifdef RANDOMIZE - integer initvar; - initial begin - `ifdef INIT_RANDOM - `INIT_RANDOM - `endif - `ifndef VERILATOR - #0.002 begin end - `endif - `ifdef RANDOMIZE_REG_INIT - _RAND_0 = {1{`RANDOM}}; - reg$ = _RAND_0[31:0]; - `endif // RANDOMIZE_REG_INIT - end -`endif // RANDOMIZE - always @(posedge clock) begin - if (reset) begin - reg$ <= 32'h0; - end else begin - if (io_csr_dataWrite) begin - reg$ <= io_csr_dataOut; - end - end - end -endmodule -module SetCSRTL_TL_TL( // @[:@916.2] - input clock, // @[:@917.4] - input reset, // @[:@918.4] - input [31:0] io_csr_dataOut, // @[:@919.4] - input io_csr_dataWrite, // @[:@919.4] - output [31:0] io_csr_dataIn, // @[:@919.4] - output [31:0] io_value, // @[:@919.4] - input [31:0] io_set // @[:@919.4] -); - reg [31:0] reg$; // @[SetCSR.scala 28:20:@921.4] - reg [31:0] _RAND_0; - wire [31:0] _T_29; // @[SetCSR.scala 34:20:@925.6] - wire [31:0] _T_30; // @[SetCSR.scala 34:17:@926.6] - wire [31:0] _T_31; // @[SetCSR.scala 34:45:@927.6] - wire [31:0] _T_32; // @[SetCSR.scala 36:16:@931.6] - wire [31:0] _GEN_0; // @[SetCSR.scala 33:25:@924.4] - assign _T_29 = ~ io_csr_dataOut; // @[SetCSR.scala 34:20:@925.6] - assign _T_30 = reg$ & _T_29; // @[SetCSR.scala 34:17:@926.6] - assign _T_31 = _T_30 | io_set; // @[SetCSR.scala 34:45:@927.6] - assign _T_32 = reg$ | io_set; // @[SetCSR.scala 36:16:@931.6] - assign _GEN_0 = io_csr_dataWrite ? _T_31 : _T_32; // @[SetCSR.scala 33:25:@924.4] - assign io_csr_dataIn = reg$; // @[SetCSR.scala 30:17:@922.4] - assign io_value = reg$; // @[SetCSR.scala 31:12:@923.4] -`ifdef RANDOMIZE_GARBAGE_ASSIGN -`define RANDOMIZE -`endif -`ifdef RANDOMIZE_INVALID_ASSIGN -`define RANDOMIZE -`endif -`ifdef RANDOMIZE_REG_INIT -`define RANDOMIZE -`endif -`ifdef RANDOMIZE_MEM_INIT -`define RANDOMIZE -`endif -`ifndef RANDOM -`define RANDOM $random -`endif -`ifdef RANDOMIZE - integer initvar; - initial begin - `ifdef INIT_RANDOM - `INIT_RANDOM - `endif - `ifndef VERILATOR - #0.002 begin end - `endif - `ifdef RANDOMIZE_REG_INIT - _RAND_0 = {1{`RANDOM}}; - reg$ = _RAND_0[31:0]; - `endif // RANDOMIZE_REG_INIT - end -`endif // RANDOMIZE - always @(posedge clock) begin - if (reset) begin - reg$ <= 32'h0; - end else begin - if (io_csr_dataWrite) begin - reg$ <= _T_31; - end else begin - reg$ <= _T_32; - end - end - end -endmodule -module InterruptControllerTL_TL_TL( // @[:@935.2] - input clock, // @[:@936.4] - input reset, // @[:@937.4] - output io_irq_readerDone, // @[:@938.4] - output io_irq_writerDone, // @[:@938.4] - input io_readBusy, // @[:@938.4] - input io_writeBusy, // @[:@938.4] - input [31:0] io_imr_dataOut, // @[:@938.4] - input io_imr_dataWrite, // @[:@938.4] - output [31:0] io_imr_dataIn, // @[:@938.4] - input [31:0] io_isr_dataOut, // @[:@938.4] - input io_isr_dataWrite, // @[:@938.4] - output [31:0] io_isr_dataIn // @[:@938.4] -); - wire SimpleCSRTL_TL_TL_clock; // @[SimpleCSR.scala 40:21:@940.4] - wire SimpleCSRTL_TL_TL_reset; // @[SimpleCSR.scala 40:21:@940.4] - wire [31:0] SimpleCSRTL_TL_TL_io_csr_dataOut; // @[SimpleCSR.scala 40:21:@940.4] - wire SimpleCSRTL_TL_TL_io_csr_dataWrite; // @[SimpleCSR.scala 40:21:@940.4] - wire [31:0] SimpleCSRTL_TL_TL_io_csr_dataIn; // @[SimpleCSR.scala 40:21:@940.4] - wire [31:0] SimpleCSRTL_TL_TL_io_value; // @[SimpleCSR.scala 40:21:@940.4] - wire SetCSRTL_TL_TL_clock; // @[SetCSR.scala 43:21:@972.4] - wire SetCSRTL_TL_TL_reset; // @[SetCSR.scala 43:21:@972.4] - wire [31:0] SetCSRTL_TL_TL_io_csr_dataOut; // @[SetCSR.scala 43:21:@972.4] - wire SetCSRTL_TL_TL_io_csr_dataWrite; // @[SetCSR.scala 43:21:@972.4] - wire [31:0] SetCSRTL_TL_TL_io_csr_dataIn; // @[SetCSR.scala 43:21:@972.4] - wire [31:0] SetCSRTL_TL_TL_io_value; // @[SetCSR.scala 43:21:@972.4] - wire [31:0] SetCSRTL_TL_TL_io_set; // @[SetCSR.scala 43:21:@972.4] - reg readBusy; // @[InterruptController.scala 33:25:@949.4] - reg [31:0] _RAND_0; - reg readBusyOld; // @[InterruptController.scala 34:28:@951.4] - reg [31:0] _RAND_1; - reg writeBusy; // @[InterruptController.scala 36:26:@953.4] - reg [31:0] _RAND_2; - reg writeBusyOld; // @[InterruptController.scala 37:29:@955.4] - reg [31:0] _RAND_3; - reg writeBusyIrq; // @[InterruptController.scala 39:29:@957.4] - reg [31:0] _RAND_4; - reg readBusyIrq; // @[InterruptController.scala 40:28:@958.4] - reg [31:0] _RAND_5; - wire _T_59; // @[InterruptController.scala 42:35:@959.4] - wire _T_60; // @[InterruptController.scala 42:32:@960.4] - wire [31:0] mask; // @[:@947.4 :@948.4] - wire _T_61; // @[InterruptController.scala 42:53:@961.4] - wire _T_62; // @[InterruptController.scala 42:46:@962.4] - wire _T_64; // @[InterruptController.scala 43:33:@964.4] - wire _T_65; // @[InterruptController.scala 43:30:@965.4] - wire _T_66; // @[InterruptController.scala 43:50:@966.4] - wire _T_67; // @[InterruptController.scala 43:43:@967.4] - wire [1:0] irq; // @[Cat.scala 30:58:@969.4] - wire [31:0] isr; // @[:@980.4 :@981.4] - SimpleCSRTL_TL_TL SimpleCSRTL_TL_TL ( // @[SimpleCSR.scala 40:21:@940.4] - .clock(SimpleCSRTL_TL_TL_clock), - .reset(SimpleCSRTL_TL_TL_reset), - .io_csr_dataOut(SimpleCSRTL_TL_TL_io_csr_dataOut), - .io_csr_dataWrite(SimpleCSRTL_TL_TL_io_csr_dataWrite), - .io_csr_dataIn(SimpleCSRTL_TL_TL_io_csr_dataIn), - .io_value(SimpleCSRTL_TL_TL_io_value) - ); - SetCSRTL_TL_TL SetCSRTL_TL_TL ( // @[SetCSR.scala 43:21:@972.4] - .clock(SetCSRTL_TL_TL_clock), - .reset(SetCSRTL_TL_TL_reset), - .io_csr_dataOut(SetCSRTL_TL_TL_io_csr_dataOut), - .io_csr_dataWrite(SetCSRTL_TL_TL_io_csr_dataWrite), - .io_csr_dataIn(SetCSRTL_TL_TL_io_csr_dataIn), - .io_value(SetCSRTL_TL_TL_io_value), - .io_set(SetCSRTL_TL_TL_io_set) - ); - assign _T_59 = writeBusy == 1'h0; // @[InterruptController.scala 42:35:@959.4] - assign _T_60 = writeBusyOld & _T_59; // @[InterruptController.scala 42:32:@960.4] - assign mask = SimpleCSRTL_TL_TL_io_value; // @[:@947.4 :@948.4] - assign _T_61 = mask[0]; // @[InterruptController.scala 42:53:@961.4] - assign _T_62 = _T_60 & _T_61; // @[InterruptController.scala 42:46:@962.4] - assign _T_64 = readBusy == 1'h0; // @[InterruptController.scala 43:33:@964.4] - assign _T_65 = readBusyOld & _T_64; // @[InterruptController.scala 43:30:@965.4] - assign _T_66 = mask[1]; // @[InterruptController.scala 43:50:@966.4] - assign _T_67 = _T_65 & _T_66; // @[InterruptController.scala 43:43:@967.4] - assign irq = {readBusyIrq,writeBusyIrq}; // @[Cat.scala 30:58:@969.4] - assign isr = SetCSRTL_TL_TL_io_value; // @[:@980.4 :@981.4] - assign io_irq_readerDone = isr[1]; // @[InterruptController.scala 50:21:@985.4] - assign io_irq_writerDone = isr[0]; // @[InterruptController.scala 49:21:@983.4] - assign io_imr_dataIn = SimpleCSRTL_TL_TL_io_csr_dataIn; // @[SimpleCSR.scala 42:16:@943.4] - assign io_isr_dataIn = SetCSRTL_TL_TL_io_csr_dataIn; // @[SetCSR.scala 47:16:@976.4] - assign SimpleCSRTL_TL_TL_clock = clock; // @[:@941.4] - assign SimpleCSRTL_TL_TL_reset = reset; // @[:@942.4] - assign SimpleCSRTL_TL_TL_io_csr_dataOut = io_imr_dataOut; // @[SimpleCSR.scala 42:16:@945.4] - assign SimpleCSRTL_TL_TL_io_csr_dataWrite = io_imr_dataWrite; // @[SimpleCSR.scala 42:16:@944.4] - assign SetCSRTL_TL_TL_clock = clock; // @[:@973.4] - assign SetCSRTL_TL_TL_reset = reset; // @[:@974.4] - assign SetCSRTL_TL_TL_io_csr_dataOut = io_isr_dataOut; // @[SetCSR.scala 47:16:@978.4] - assign SetCSRTL_TL_TL_io_csr_dataWrite = io_isr_dataWrite; // @[SetCSR.scala 47:16:@977.4] - assign SetCSRTL_TL_TL_io_set = {{30'd0}, irq}; // @[SetCSR.scala 45:16:@975.4] -`ifdef RANDOMIZE_GARBAGE_ASSIGN -`define RANDOMIZE -`endif -`ifdef RANDOMIZE_INVALID_ASSIGN -`define RANDOMIZE -`endif -`ifdef RANDOMIZE_REG_INIT -`define RANDOMIZE -`endif -`ifdef RANDOMIZE_MEM_INIT -`define RANDOMIZE -`endif -`ifndef RANDOM -`define RANDOM $random -`endif -`ifdef RANDOMIZE - integer initvar; - initial begin - `ifdef INIT_RANDOM - `INIT_RANDOM - `endif - `ifndef VERILATOR - #0.002 begin end - `endif - `ifdef RANDOMIZE_REG_INIT - _RAND_0 = {1{`RANDOM}}; - readBusy = _RAND_0[0:0]; - `endif // RANDOMIZE_REG_INIT - `ifdef RANDOMIZE_REG_INIT - _RAND_1 = {1{`RANDOM}}; - readBusyOld = _RAND_1[0:0]; - `endif // RANDOMIZE_REG_INIT - `ifdef RANDOMIZE_REG_INIT - _RAND_2 = {1{`RANDOM}}; - writeBusy = _RAND_2[0:0]; - `endif // RANDOMIZE_REG_INIT - `ifdef RANDOMIZE_REG_INIT - _RAND_3 = {1{`RANDOM}}; - writeBusyOld = _RAND_3[0:0]; - `endif // RANDOMIZE_REG_INIT - `ifdef RANDOMIZE_REG_INIT - _RAND_4 = {1{`RANDOM}}; - writeBusyIrq = _RAND_4[0:0]; - `endif // RANDOMIZE_REG_INIT - `ifdef RANDOMIZE_REG_INIT - _RAND_5 = {1{`RANDOM}}; - readBusyIrq = _RAND_5[0:0]; - `endif // RANDOMIZE_REG_INIT - end -`endif // RANDOMIZE - always @(posedge clock) begin - readBusy <= io_readBusy; - readBusyOld <= readBusy; - writeBusy <= io_writeBusy; - writeBusyOld <= writeBusy; - if (reset) begin - writeBusyIrq <= 1'h0; - end else begin - writeBusyIrq <= _T_62; - end - if (reset) begin - readBusyIrq <= 1'h0; - end else begin - readBusyIrq <= _T_67; - end - end -endmodule -module WorkerCSRWrapperTL_TL_TL( // @[:@1125.2] - input clock, // @[:@1126.4] - input reset, // @[:@1127.4] - input [31:0] io_csr_0_dataOut, // @[:@1128.4] - input io_csr_0_dataWrite, // @[:@1128.4] - output [31:0] io_csr_0_dataIn, // @[:@1128.4] - output [31:0] io_csr_1_dataIn, // @[:@1128.4] - input [31:0] io_csr_2_dataOut, // @[:@1128.4] - input io_csr_2_dataWrite, // @[:@1128.4] - output [31:0] io_csr_2_dataIn, // @[:@1128.4] - input [31:0] io_csr_3_dataOut, // @[:@1128.4] - input io_csr_3_dataWrite, // @[:@1128.4] - output [31:0] io_csr_3_dataIn, // @[:@1128.4] - input [31:0] io_csr_4_dataOut, // @[:@1128.4] - input io_csr_4_dataWrite, // @[:@1128.4] - output [31:0] io_csr_4_dataIn, // @[:@1128.4] - input [31:0] io_csr_5_dataOut, // @[:@1128.4] - input io_csr_5_dataWrite, // @[:@1128.4] - output [31:0] io_csr_5_dataIn, // @[:@1128.4] - input [31:0] io_csr_6_dataOut, // @[:@1128.4] - input io_csr_6_dataWrite, // @[:@1128.4] - output [31:0] io_csr_6_dataIn, // @[:@1128.4] - input [31:0] io_csr_7_dataOut, // @[:@1128.4] - input io_csr_7_dataWrite, // @[:@1128.4] - output [31:0] io_csr_7_dataIn, // @[:@1128.4] - input [31:0] io_csr_8_dataOut, // @[:@1128.4] - input io_csr_8_dataWrite, // @[:@1128.4] - output [31:0] io_csr_8_dataIn, // @[:@1128.4] - input [31:0] io_csr_9_dataOut, // @[:@1128.4] - input io_csr_9_dataWrite, // @[:@1128.4] - output [31:0] io_csr_9_dataIn, // @[:@1128.4] - input [31:0] io_csr_10_dataOut, // @[:@1128.4] - input io_csr_10_dataWrite, // @[:@1128.4] - output [31:0] io_csr_10_dataIn, // @[:@1128.4] - input [31:0] io_csr_11_dataOut, // @[:@1128.4] - input io_csr_11_dataWrite, // @[:@1128.4] - output [31:0] io_csr_11_dataIn, // @[:@1128.4] - output [31:0] io_csr_12_dataIn, // @[:@1128.4] - output [31:0] io_csr_13_dataIn, // @[:@1128.4] - input [31:0] io_csr_14_dataOut, // @[:@1128.4] - input io_csr_14_dataWrite, // @[:@1128.4] - output [31:0] io_csr_14_dataIn, // @[:@1128.4] - input [31:0] io_csr_15_dataOut, // @[:@1128.4] - input io_csr_15_dataWrite, // @[:@1128.4] - output [31:0] io_csr_15_dataIn, // @[:@1128.4] - output io_irq_readerDone, // @[:@1128.4] - output io_irq_writerDone, // @[:@1128.4] - input io_sync_readerSync, // @[:@1128.4] - input io_sync_writerSync, // @[:@1128.4] - input io_xferRead_done, // @[:@1128.4] - output [31:0] io_xferRead_address, // @[:@1128.4] - output [31:0] io_xferRead_length, // @[:@1128.4] - output io_xferRead_valid, // @[:@1128.4] - input io_xferWrite_done, // @[:@1128.4] - output [31:0] io_xferWrite_address, // @[:@1128.4] - output [31:0] io_xferWrite_length, // @[:@1128.4] - output io_xferWrite_valid // @[:@1128.4] -); - wire addressGeneratorRead_clock; // @[WorkerCSRWrapper.scala 33:36:@1130.4] - wire addressGeneratorRead_reset; // @[WorkerCSRWrapper.scala 33:36:@1130.4] - wire addressGeneratorRead_io_ctl_start; // @[WorkerCSRWrapper.scala 33:36:@1130.4] - wire addressGeneratorRead_io_ctl_busy; // @[WorkerCSRWrapper.scala 33:36:@1130.4] - wire [31:0] addressGeneratorRead_io_ctl_startAddress; // @[WorkerCSRWrapper.scala 33:36:@1130.4] - wire [31:0] addressGeneratorRead_io_ctl_lineLength; // @[WorkerCSRWrapper.scala 33:36:@1130.4] - wire [31:0] addressGeneratorRead_io_ctl_lineCount; // @[WorkerCSRWrapper.scala 33:36:@1130.4] - wire [31:0] addressGeneratorRead_io_ctl_lineGap; // @[WorkerCSRWrapper.scala 33:36:@1130.4] - wire addressGeneratorRead_io_xfer_done; // @[WorkerCSRWrapper.scala 33:36:@1130.4] - wire [31:0] addressGeneratorRead_io_xfer_address; // @[WorkerCSRWrapper.scala 33:36:@1130.4] - wire [31:0] addressGeneratorRead_io_xfer_length; // @[WorkerCSRWrapper.scala 33:36:@1130.4] - wire addressGeneratorRead_io_xfer_valid; // @[WorkerCSRWrapper.scala 33:36:@1130.4] - wire transferSplitterRead_io_xferIn_done; // @[WorkerCSRWrapper.scala 34:36:@1133.4] - wire [31:0] transferSplitterRead_io_xferIn_address; // @[WorkerCSRWrapper.scala 34:36:@1133.4] - wire [31:0] transferSplitterRead_io_xferIn_length; // @[WorkerCSRWrapper.scala 34:36:@1133.4] - wire transferSplitterRead_io_xferIn_valid; // @[WorkerCSRWrapper.scala 34:36:@1133.4] - wire transferSplitterRead_io_xferOut_done; // @[WorkerCSRWrapper.scala 34:36:@1133.4] - wire [31:0] transferSplitterRead_io_xferOut_address; // @[WorkerCSRWrapper.scala 34:36:@1133.4] - wire [31:0] transferSplitterRead_io_xferOut_length; // @[WorkerCSRWrapper.scala 34:36:@1133.4] - wire transferSplitterRead_io_xferOut_valid; // @[WorkerCSRWrapper.scala 34:36:@1133.4] - wire addressGeneratorWrite_clock; // @[WorkerCSRWrapper.scala 36:37:@1136.4] - wire addressGeneratorWrite_reset; // @[WorkerCSRWrapper.scala 36:37:@1136.4] - wire addressGeneratorWrite_io_ctl_start; // @[WorkerCSRWrapper.scala 36:37:@1136.4] - wire addressGeneratorWrite_io_ctl_busy; // @[WorkerCSRWrapper.scala 36:37:@1136.4] - wire [31:0] addressGeneratorWrite_io_ctl_startAddress; // @[WorkerCSRWrapper.scala 36:37:@1136.4] - wire [31:0] addressGeneratorWrite_io_ctl_lineLength; // @[WorkerCSRWrapper.scala 36:37:@1136.4] - wire [31:0] addressGeneratorWrite_io_ctl_lineCount; // @[WorkerCSRWrapper.scala 36:37:@1136.4] - wire [31:0] addressGeneratorWrite_io_ctl_lineGap; // @[WorkerCSRWrapper.scala 36:37:@1136.4] - wire addressGeneratorWrite_io_xfer_done; // @[WorkerCSRWrapper.scala 36:37:@1136.4] - wire [31:0] addressGeneratorWrite_io_xfer_address; // @[WorkerCSRWrapper.scala 36:37:@1136.4] - wire [31:0] addressGeneratorWrite_io_xfer_length; // @[WorkerCSRWrapper.scala 36:37:@1136.4] - wire addressGeneratorWrite_io_xfer_valid; // @[WorkerCSRWrapper.scala 36:37:@1136.4] - wire transferSplitterWrite_clock; // @[WorkerCSRWrapper.scala 37:37:@1139.4] - wire transferSplitterWrite_reset; // @[WorkerCSRWrapper.scala 37:37:@1139.4] - wire transferSplitterWrite_io_xferIn_done; // @[WorkerCSRWrapper.scala 37:37:@1139.4] - wire [31:0] transferSplitterWrite_io_xferIn_address; // @[WorkerCSRWrapper.scala 37:37:@1139.4] - wire [31:0] transferSplitterWrite_io_xferIn_length; // @[WorkerCSRWrapper.scala 37:37:@1139.4] - wire transferSplitterWrite_io_xferIn_valid; // @[WorkerCSRWrapper.scala 37:37:@1139.4] - wire transferSplitterWrite_io_xferOut_done; // @[WorkerCSRWrapper.scala 37:37:@1139.4] - wire [31:0] transferSplitterWrite_io_xferOut_address; // @[WorkerCSRWrapper.scala 37:37:@1139.4] - wire [31:0] transferSplitterWrite_io_xferOut_length; // @[WorkerCSRWrapper.scala 37:37:@1139.4] - wire transferSplitterWrite_io_xferOut_valid; // @[WorkerCSRWrapper.scala 37:37:@1139.4] - wire ClearCSRTL_TL_TL_clock; // @[ClearCSR.scala 42:21:@1159.4] - wire ClearCSRTL_TL_TL_reset; // @[ClearCSR.scala 42:21:@1159.4] - wire [31:0] ClearCSRTL_TL_TL_io_csr_dataOut; // @[ClearCSR.scala 42:21:@1159.4] - wire ClearCSRTL_TL_TL_io_csr_dataWrite; // @[ClearCSR.scala 42:21:@1159.4] - wire [31:0] ClearCSRTL_TL_TL_io_csr_dataIn; // @[ClearCSR.scala 42:21:@1159.4] - wire [31:0] ClearCSRTL_TL_TL_io_value; // @[ClearCSR.scala 42:21:@1159.4] - wire [31:0] ClearCSRTL_TL_TL_io_clear; // @[ClearCSR.scala 42:21:@1159.4] - wire StatusCSRTL_TL_TL_clock; // @[StatusCSR.scala 34:21:@1168.4] - wire [31:0] StatusCSRTL_TL_TL_io_csr_dataIn; // @[StatusCSR.scala 34:21:@1168.4] - wire [31:0] StatusCSRTL_TL_TL_io_value; // @[StatusCSR.scala 34:21:@1168.4] - wire InterruptControllerTL_TL_TL_clock; // @[InterruptController.scala 55:22:@1176.4] - wire InterruptControllerTL_TL_TL_reset; // @[InterruptController.scala 55:22:@1176.4] - wire InterruptControllerTL_TL_TL_io_irq_readerDone; // @[InterruptController.scala 55:22:@1176.4] - wire InterruptControllerTL_TL_TL_io_irq_writerDone; // @[InterruptController.scala 55:22:@1176.4] - wire InterruptControllerTL_TL_TL_io_readBusy; // @[InterruptController.scala 55:22:@1176.4] - wire InterruptControllerTL_TL_TL_io_writeBusy; // @[InterruptController.scala 55:22:@1176.4] - wire [31:0] InterruptControllerTL_TL_TL_io_imr_dataOut; // @[InterruptController.scala 55:22:@1176.4] - wire InterruptControllerTL_TL_TL_io_imr_dataWrite; // @[InterruptController.scala 55:22:@1176.4] - wire [31:0] InterruptControllerTL_TL_TL_io_imr_dataIn; // @[InterruptController.scala 55:22:@1176.4] - wire [31:0] InterruptControllerTL_TL_TL_io_isr_dataOut; // @[InterruptController.scala 55:22:@1176.4] - wire InterruptControllerTL_TL_TL_io_isr_dataWrite; // @[InterruptController.scala 55:22:@1176.4] - wire [31:0] InterruptControllerTL_TL_TL_io_isr_dataIn; // @[InterruptController.scala 55:22:@1176.4] - wire SimpleCSRTL_TL_TL_clock; // @[SimpleCSR.scala 40:21:@1213.4] - wire SimpleCSRTL_TL_TL_reset; // @[SimpleCSR.scala 40:21:@1213.4] - wire [31:0] SimpleCSRTL_TL_TL_io_csr_dataOut; // @[SimpleCSR.scala 40:21:@1213.4] - wire SimpleCSRTL_TL_TL_io_csr_dataWrite; // @[SimpleCSR.scala 40:21:@1213.4] - wire [31:0] SimpleCSRTL_TL_TL_io_csr_dataIn; // @[SimpleCSR.scala 40:21:@1213.4] - wire [31:0] SimpleCSRTL_TL_TL_io_value; // @[SimpleCSR.scala 40:21:@1213.4] - wire SimpleCSRTL_TL_TL_1_clock; // @[SimpleCSR.scala 40:21:@1221.4] - wire SimpleCSRTL_TL_TL_1_reset; // @[SimpleCSR.scala 40:21:@1221.4] - wire [31:0] SimpleCSRTL_TL_TL_1_io_csr_dataOut; // @[SimpleCSR.scala 40:21:@1221.4] - wire SimpleCSRTL_TL_TL_1_io_csr_dataWrite; // @[SimpleCSR.scala 40:21:@1221.4] - wire [31:0] SimpleCSRTL_TL_TL_1_io_csr_dataIn; // @[SimpleCSR.scala 40:21:@1221.4] - wire [31:0] SimpleCSRTL_TL_TL_1_io_value; // @[SimpleCSR.scala 40:21:@1221.4] - wire SimpleCSRTL_TL_TL_2_clock; // @[SimpleCSR.scala 40:21:@1229.4] - wire SimpleCSRTL_TL_TL_2_reset; // @[SimpleCSR.scala 40:21:@1229.4] - wire [31:0] SimpleCSRTL_TL_TL_2_io_csr_dataOut; // @[SimpleCSR.scala 40:21:@1229.4] - wire SimpleCSRTL_TL_TL_2_io_csr_dataWrite; // @[SimpleCSR.scala 40:21:@1229.4] - wire [31:0] SimpleCSRTL_TL_TL_2_io_csr_dataIn; // @[SimpleCSR.scala 40:21:@1229.4] - wire [31:0] SimpleCSRTL_TL_TL_2_io_value; // @[SimpleCSR.scala 40:21:@1229.4] - wire SimpleCSRTL_TL_TL_3_clock; // @[SimpleCSR.scala 40:21:@1237.4] - wire SimpleCSRTL_TL_TL_3_reset; // @[SimpleCSR.scala 40:21:@1237.4] - wire [31:0] SimpleCSRTL_TL_TL_3_io_csr_dataOut; // @[SimpleCSR.scala 40:21:@1237.4] - wire SimpleCSRTL_TL_TL_3_io_csr_dataWrite; // @[SimpleCSR.scala 40:21:@1237.4] - wire [31:0] SimpleCSRTL_TL_TL_3_io_csr_dataIn; // @[SimpleCSR.scala 40:21:@1237.4] - wire [31:0] SimpleCSRTL_TL_TL_3_io_value; // @[SimpleCSR.scala 40:21:@1237.4] - wire SimpleCSRTL_TL_TL_4_clock; // @[SimpleCSR.scala 40:21:@1246.4] - wire SimpleCSRTL_TL_TL_4_reset; // @[SimpleCSR.scala 40:21:@1246.4] - wire [31:0] SimpleCSRTL_TL_TL_4_io_csr_dataOut; // @[SimpleCSR.scala 40:21:@1246.4] - wire SimpleCSRTL_TL_TL_4_io_csr_dataWrite; // @[SimpleCSR.scala 40:21:@1246.4] - wire [31:0] SimpleCSRTL_TL_TL_4_io_csr_dataIn; // @[SimpleCSR.scala 40:21:@1246.4] - wire [31:0] SimpleCSRTL_TL_TL_4_io_value; // @[SimpleCSR.scala 40:21:@1246.4] - wire SimpleCSRTL_TL_TL_5_clock; // @[SimpleCSR.scala 40:21:@1254.4] - wire SimpleCSRTL_TL_TL_5_reset; // @[SimpleCSR.scala 40:21:@1254.4] - wire [31:0] SimpleCSRTL_TL_TL_5_io_csr_dataOut; // @[SimpleCSR.scala 40:21:@1254.4] - wire SimpleCSRTL_TL_TL_5_io_csr_dataWrite; // @[SimpleCSR.scala 40:21:@1254.4] - wire [31:0] SimpleCSRTL_TL_TL_5_io_csr_dataIn; // @[SimpleCSR.scala 40:21:@1254.4] - wire [31:0] SimpleCSRTL_TL_TL_5_io_value; // @[SimpleCSR.scala 40:21:@1254.4] - wire SimpleCSRTL_TL_TL_6_clock; // @[SimpleCSR.scala 40:21:@1262.4] - wire SimpleCSRTL_TL_TL_6_reset; // @[SimpleCSR.scala 40:21:@1262.4] - wire [31:0] SimpleCSRTL_TL_TL_6_io_csr_dataOut; // @[SimpleCSR.scala 40:21:@1262.4] - wire SimpleCSRTL_TL_TL_6_io_csr_dataWrite; // @[SimpleCSR.scala 40:21:@1262.4] - wire [31:0] SimpleCSRTL_TL_TL_6_io_csr_dataIn; // @[SimpleCSR.scala 40:21:@1262.4] - wire [31:0] SimpleCSRTL_TL_TL_6_io_value; // @[SimpleCSR.scala 40:21:@1262.4] - wire SimpleCSRTL_TL_TL_7_clock; // @[SimpleCSR.scala 40:21:@1270.4] - wire SimpleCSRTL_TL_TL_7_reset; // @[SimpleCSR.scala 40:21:@1270.4] - wire [31:0] SimpleCSRTL_TL_TL_7_io_csr_dataOut; // @[SimpleCSR.scala 40:21:@1270.4] - wire SimpleCSRTL_TL_TL_7_io_csr_dataWrite; // @[SimpleCSR.scala 40:21:@1270.4] - wire [31:0] SimpleCSRTL_TL_TL_7_io_csr_dataIn; // @[SimpleCSR.scala 40:21:@1270.4] - wire [31:0] SimpleCSRTL_TL_TL_7_io_value; // @[SimpleCSR.scala 40:21:@1270.4] - wire StatusCSRTL_TL_TL_1_clock; // @[StatusCSR.scala 34:21:@1278.4] - wire [31:0] StatusCSRTL_TL_TL_1_io_csr_dataIn; // @[StatusCSR.scala 34:21:@1278.4] - wire [31:0] StatusCSRTL_TL_TL_1_io_value; // @[StatusCSR.scala 34:21:@1278.4] - wire StatusCSRTL_TL_TL_2_clock; // @[StatusCSR.scala 34:21:@1286.4] - wire [31:0] StatusCSRTL_TL_TL_2_io_csr_dataIn; // @[StatusCSR.scala 34:21:@1286.4] - wire [31:0] StatusCSRTL_TL_TL_2_io_value; // @[StatusCSR.scala 34:21:@1286.4] - wire SimpleCSRTL_TL_TL_8_clock; // @[SimpleCSR.scala 40:21:@1294.4] - wire SimpleCSRTL_TL_TL_8_reset; // @[SimpleCSR.scala 40:21:@1294.4] - wire [31:0] SimpleCSRTL_TL_TL_8_io_csr_dataOut; // @[SimpleCSR.scala 40:21:@1294.4] - wire SimpleCSRTL_TL_TL_8_io_csr_dataWrite; // @[SimpleCSR.scala 40:21:@1294.4] - wire [31:0] SimpleCSRTL_TL_TL_8_io_csr_dataIn; // @[SimpleCSR.scala 40:21:@1294.4] - wire [31:0] SimpleCSRTL_TL_TL_8_io_value; // @[SimpleCSR.scala 40:21:@1294.4] - wire SimpleCSRTL_TL_TL_9_clock; // @[SimpleCSR.scala 40:21:@1301.4] - wire SimpleCSRTL_TL_TL_9_reset; // @[SimpleCSR.scala 40:21:@1301.4] - wire [31:0] SimpleCSRTL_TL_TL_9_io_csr_dataOut; // @[SimpleCSR.scala 40:21:@1301.4] - wire SimpleCSRTL_TL_TL_9_io_csr_dataWrite; // @[SimpleCSR.scala 40:21:@1301.4] - wire [31:0] SimpleCSRTL_TL_TL_9_io_csr_dataIn; // @[SimpleCSR.scala 40:21:@1301.4] - wire [31:0] SimpleCSRTL_TL_TL_9_io_value; // @[SimpleCSR.scala 40:21:@1301.4] - reg [1:0] status; // @[WorkerCSRWrapper.scala 39:23:@1143.4] - reg [31:0] _RAND_0; - reg readerSync; // @[WorkerCSRWrapper.scala 41:27:@1145.4] - reg [31:0] _RAND_1; - reg readerSyncOld; // @[WorkerCSRWrapper.scala 42:30:@1147.4] - reg [31:0] _RAND_2; - reg writerSync; // @[WorkerCSRWrapper.scala 44:27:@1149.4] - reg [31:0] _RAND_3; - reg writerSyncOld; // @[WorkerCSRWrapper.scala 45:30:@1151.4] - reg [31:0] _RAND_4; - reg readerStart; // @[WorkerCSRWrapper.scala 47:28:@1153.4] - reg [31:0] _RAND_5; - reg writerStart; // @[WorkerCSRWrapper.scala 48:28:@1154.4] - reg [31:0] _RAND_6; - wire [1:0] _T_207; // @[Cat.scala 30:58:@1191.4] - wire [31:0] control; // @[WorkerCSRWrapper.scala 50:21:@1155.4 WorkerCSRWrapper.scala 59:11:@1167.4] - wire _T_208; // @[WorkerCSRWrapper.scala 66:56:@1192.4] - wire _T_209; // @[WorkerCSRWrapper.scala 66:68:@1193.4] - wire [1:0] _T_210; // @[Cat.scala 30:58:@1194.4] - wire [1:0] _T_211; // @[WorkerCSRWrapper.scala 66:44:@1195.4] - wire [1:0] clear; // @[WorkerCSRWrapper.scala 66:42:@1196.4] - wire _T_214; // @[WorkerCSRWrapper.scala 68:20:@1198.4] - wire _T_215; // @[WorkerCSRWrapper.scala 68:35:@1199.4] - wire _T_216; // @[WorkerCSRWrapper.scala 68:60:@1200.4] - wire _T_217; // @[WorkerCSRWrapper.scala 68:50:@1201.4] - wire _T_218; // @[WorkerCSRWrapper.scala 68:75:@1202.4] - wire _T_219; // @[WorkerCSRWrapper.scala 68:65:@1203.4] - wire _T_221; // @[WorkerCSRWrapper.scala 69:20:@1205.4] - wire _T_222; // @[WorkerCSRWrapper.scala 69:35:@1206.4] - wire _T_223; // @[WorkerCSRWrapper.scala 69:60:@1207.4] - wire _T_224; // @[WorkerCSRWrapper.scala 69:50:@1208.4] - wire _T_225; // @[WorkerCSRWrapper.scala 69:75:@1209.4] - wire _T_226; // @[WorkerCSRWrapper.scala 69:65:@1210.4] - AddressGeneratorTL_TL_TL addressGeneratorRead ( // @[WorkerCSRWrapper.scala 33:36:@1130.4] - .clock(addressGeneratorRead_clock), - .reset(addressGeneratorRead_reset), - .io_ctl_start(addressGeneratorRead_io_ctl_start), - .io_ctl_busy(addressGeneratorRead_io_ctl_busy), - .io_ctl_startAddress(addressGeneratorRead_io_ctl_startAddress), - .io_ctl_lineLength(addressGeneratorRead_io_ctl_lineLength), - .io_ctl_lineCount(addressGeneratorRead_io_ctl_lineCount), - .io_ctl_lineGap(addressGeneratorRead_io_ctl_lineGap), - .io_xfer_done(addressGeneratorRead_io_xfer_done), - .io_xfer_address(addressGeneratorRead_io_xfer_address), - .io_xfer_length(addressGeneratorRead_io_xfer_length), - .io_xfer_valid(addressGeneratorRead_io_xfer_valid) - ); - TransferSplitterTL_TL_TL transferSplitterRead ( // @[WorkerCSRWrapper.scala 34:36:@1133.4] - .io_xferIn_done(transferSplitterRead_io_xferIn_done), - .io_xferIn_address(transferSplitterRead_io_xferIn_address), - .io_xferIn_length(transferSplitterRead_io_xferIn_length), - .io_xferIn_valid(transferSplitterRead_io_xferIn_valid), - .io_xferOut_done(transferSplitterRead_io_xferOut_done), - .io_xferOut_address(transferSplitterRead_io_xferOut_address), - .io_xferOut_length(transferSplitterRead_io_xferOut_length), - .io_xferOut_valid(transferSplitterRead_io_xferOut_valid) - ); - AddressGeneratorTL_TL_TL addressGeneratorWrite ( // @[WorkerCSRWrapper.scala 36:37:@1136.4] - .clock(addressGeneratorWrite_clock), - .reset(addressGeneratorWrite_reset), - .io_ctl_start(addressGeneratorWrite_io_ctl_start), - .io_ctl_busy(addressGeneratorWrite_io_ctl_busy), - .io_ctl_startAddress(addressGeneratorWrite_io_ctl_startAddress), - .io_ctl_lineLength(addressGeneratorWrite_io_ctl_lineLength), - .io_ctl_lineCount(addressGeneratorWrite_io_ctl_lineCount), - .io_ctl_lineGap(addressGeneratorWrite_io_ctl_lineGap), - .io_xfer_done(addressGeneratorWrite_io_xfer_done), - .io_xfer_address(addressGeneratorWrite_io_xfer_address), - .io_xfer_length(addressGeneratorWrite_io_xfer_length), - .io_xfer_valid(addressGeneratorWrite_io_xfer_valid) - ); - TransferSplitterTL_TL_TL_1 transferSplitterWrite ( // @[WorkerCSRWrapper.scala 37:37:@1139.4] - .clock(transferSplitterWrite_clock), - .reset(transferSplitterWrite_reset), - .io_xferIn_done(transferSplitterWrite_io_xferIn_done), - .io_xferIn_address(transferSplitterWrite_io_xferIn_address), - .io_xferIn_length(transferSplitterWrite_io_xferIn_length), - .io_xferIn_valid(transferSplitterWrite_io_xferIn_valid), - .io_xferOut_done(transferSplitterWrite_io_xferOut_done), - .io_xferOut_address(transferSplitterWrite_io_xferOut_address), - .io_xferOut_length(transferSplitterWrite_io_xferOut_length), - .io_xferOut_valid(transferSplitterWrite_io_xferOut_valid) - ); - ClearCSRTL_TL_TL ClearCSRTL_TL_TL ( // @[ClearCSR.scala 42:21:@1159.4] - .clock(ClearCSRTL_TL_TL_clock), - .reset(ClearCSRTL_TL_TL_reset), - .io_csr_dataOut(ClearCSRTL_TL_TL_io_csr_dataOut), - .io_csr_dataWrite(ClearCSRTL_TL_TL_io_csr_dataWrite), - .io_csr_dataIn(ClearCSRTL_TL_TL_io_csr_dataIn), - .io_value(ClearCSRTL_TL_TL_io_value), - .io_clear(ClearCSRTL_TL_TL_io_clear) - ); - StatusCSRTL_TL_TL StatusCSRTL_TL_TL ( // @[StatusCSR.scala 34:21:@1168.4] - .clock(StatusCSRTL_TL_TL_clock), - .io_csr_dataIn(StatusCSRTL_TL_TL_io_csr_dataIn), - .io_value(StatusCSRTL_TL_TL_io_value) - ); - InterruptControllerTL_TL_TL InterruptControllerTL_TL_TL ( // @[InterruptController.scala 55:22:@1176.4] - .clock(InterruptControllerTL_TL_TL_clock), - .reset(InterruptControllerTL_TL_TL_reset), - .io_irq_readerDone(InterruptControllerTL_TL_TL_io_irq_readerDone), - .io_irq_writerDone(InterruptControllerTL_TL_TL_io_irq_writerDone), - .io_readBusy(InterruptControllerTL_TL_TL_io_readBusy), - .io_writeBusy(InterruptControllerTL_TL_TL_io_writeBusy), - .io_imr_dataOut(InterruptControllerTL_TL_TL_io_imr_dataOut), - .io_imr_dataWrite(InterruptControllerTL_TL_TL_io_imr_dataWrite), - .io_imr_dataIn(InterruptControllerTL_TL_TL_io_imr_dataIn), - .io_isr_dataOut(InterruptControllerTL_TL_TL_io_isr_dataOut), - .io_isr_dataWrite(InterruptControllerTL_TL_TL_io_isr_dataWrite), - .io_isr_dataIn(InterruptControllerTL_TL_TL_io_isr_dataIn) - ); - SimpleCSRTL_TL_TL SimpleCSRTL_TL_TL ( // @[SimpleCSR.scala 40:21:@1213.4] - .clock(SimpleCSRTL_TL_TL_clock), - .reset(SimpleCSRTL_TL_TL_reset), - .io_csr_dataOut(SimpleCSRTL_TL_TL_io_csr_dataOut), - .io_csr_dataWrite(SimpleCSRTL_TL_TL_io_csr_dataWrite), - .io_csr_dataIn(SimpleCSRTL_TL_TL_io_csr_dataIn), - .io_value(SimpleCSRTL_TL_TL_io_value) - ); - SimpleCSRTL_TL_TL SimpleCSRTL_TL_TL_1 ( // @[SimpleCSR.scala 40:21:@1221.4] - .clock(SimpleCSRTL_TL_TL_1_clock), - .reset(SimpleCSRTL_TL_TL_1_reset), - .io_csr_dataOut(SimpleCSRTL_TL_TL_1_io_csr_dataOut), - .io_csr_dataWrite(SimpleCSRTL_TL_TL_1_io_csr_dataWrite), - .io_csr_dataIn(SimpleCSRTL_TL_TL_1_io_csr_dataIn), - .io_value(SimpleCSRTL_TL_TL_1_io_value) - ); - SimpleCSRTL_TL_TL SimpleCSRTL_TL_TL_2 ( // @[SimpleCSR.scala 40:21:@1229.4] - .clock(SimpleCSRTL_TL_TL_2_clock), - .reset(SimpleCSRTL_TL_TL_2_reset), - .io_csr_dataOut(SimpleCSRTL_TL_TL_2_io_csr_dataOut), - .io_csr_dataWrite(SimpleCSRTL_TL_TL_2_io_csr_dataWrite), - .io_csr_dataIn(SimpleCSRTL_TL_TL_2_io_csr_dataIn), - .io_value(SimpleCSRTL_TL_TL_2_io_value) - ); - SimpleCSRTL_TL_TL SimpleCSRTL_TL_TL_3 ( // @[SimpleCSR.scala 40:21:@1237.4] - .clock(SimpleCSRTL_TL_TL_3_clock), - .reset(SimpleCSRTL_TL_TL_3_reset), - .io_csr_dataOut(SimpleCSRTL_TL_TL_3_io_csr_dataOut), - .io_csr_dataWrite(SimpleCSRTL_TL_TL_3_io_csr_dataWrite), - .io_csr_dataIn(SimpleCSRTL_TL_TL_3_io_csr_dataIn), - .io_value(SimpleCSRTL_TL_TL_3_io_value) - ); - SimpleCSRTL_TL_TL SimpleCSRTL_TL_TL_4 ( // @[SimpleCSR.scala 40:21:@1246.4] - .clock(SimpleCSRTL_TL_TL_4_clock), - .reset(SimpleCSRTL_TL_TL_4_reset), - .io_csr_dataOut(SimpleCSRTL_TL_TL_4_io_csr_dataOut), - .io_csr_dataWrite(SimpleCSRTL_TL_TL_4_io_csr_dataWrite), - .io_csr_dataIn(SimpleCSRTL_TL_TL_4_io_csr_dataIn), - .io_value(SimpleCSRTL_TL_TL_4_io_value) - ); - SimpleCSRTL_TL_TL SimpleCSRTL_TL_TL_5 ( // @[SimpleCSR.scala 40:21:@1254.4] - .clock(SimpleCSRTL_TL_TL_5_clock), - .reset(SimpleCSRTL_TL_TL_5_reset), - .io_csr_dataOut(SimpleCSRTL_TL_TL_5_io_csr_dataOut), - .io_csr_dataWrite(SimpleCSRTL_TL_TL_5_io_csr_dataWrite), - .io_csr_dataIn(SimpleCSRTL_TL_TL_5_io_csr_dataIn), - .io_value(SimpleCSRTL_TL_TL_5_io_value) - ); - SimpleCSRTL_TL_TL SimpleCSRTL_TL_TL_6 ( // @[SimpleCSR.scala 40:21:@1262.4] - .clock(SimpleCSRTL_TL_TL_6_clock), - .reset(SimpleCSRTL_TL_TL_6_reset), - .io_csr_dataOut(SimpleCSRTL_TL_TL_6_io_csr_dataOut), - .io_csr_dataWrite(SimpleCSRTL_TL_TL_6_io_csr_dataWrite), - .io_csr_dataIn(SimpleCSRTL_TL_TL_6_io_csr_dataIn), - .io_value(SimpleCSRTL_TL_TL_6_io_value) - ); - SimpleCSRTL_TL_TL SimpleCSRTL_TL_TL_7 ( // @[SimpleCSR.scala 40:21:@1270.4] - .clock(SimpleCSRTL_TL_TL_7_clock), - .reset(SimpleCSRTL_TL_TL_7_reset), - .io_csr_dataOut(SimpleCSRTL_TL_TL_7_io_csr_dataOut), - .io_csr_dataWrite(SimpleCSRTL_TL_TL_7_io_csr_dataWrite), - .io_csr_dataIn(SimpleCSRTL_TL_TL_7_io_csr_dataIn), - .io_value(SimpleCSRTL_TL_TL_7_io_value) - ); - StatusCSRTL_TL_TL StatusCSRTL_TL_TL_1 ( // @[StatusCSR.scala 34:21:@1278.4] - .clock(StatusCSRTL_TL_TL_1_clock), - .io_csr_dataIn(StatusCSRTL_TL_TL_1_io_csr_dataIn), - .io_value(StatusCSRTL_TL_TL_1_io_value) - ); - StatusCSRTL_TL_TL StatusCSRTL_TL_TL_2 ( // @[StatusCSR.scala 34:21:@1286.4] - .clock(StatusCSRTL_TL_TL_2_clock), - .io_csr_dataIn(StatusCSRTL_TL_TL_2_io_csr_dataIn), - .io_value(StatusCSRTL_TL_TL_2_io_value) - ); - SimpleCSRTL_TL_TL SimpleCSRTL_TL_TL_8 ( // @[SimpleCSR.scala 40:21:@1294.4] - .clock(SimpleCSRTL_TL_TL_8_clock), - .reset(SimpleCSRTL_TL_TL_8_reset), - .io_csr_dataOut(SimpleCSRTL_TL_TL_8_io_csr_dataOut), - .io_csr_dataWrite(SimpleCSRTL_TL_TL_8_io_csr_dataWrite), - .io_csr_dataIn(SimpleCSRTL_TL_TL_8_io_csr_dataIn), - .io_value(SimpleCSRTL_TL_TL_8_io_value) - ); - SimpleCSRTL_TL_TL SimpleCSRTL_TL_TL_9 ( // @[SimpleCSR.scala 40:21:@1301.4] - .clock(SimpleCSRTL_TL_TL_9_clock), - .reset(SimpleCSRTL_TL_TL_9_reset), - .io_csr_dataOut(SimpleCSRTL_TL_TL_9_io_csr_dataOut), - .io_csr_dataWrite(SimpleCSRTL_TL_TL_9_io_csr_dataWrite), - .io_csr_dataIn(SimpleCSRTL_TL_TL_9_io_csr_dataIn), - .io_value(SimpleCSRTL_TL_TL_9_io_value) - ); - assign _T_207 = {readerStart,writerStart}; // @[Cat.scala 30:58:@1191.4] - assign control = ClearCSRTL_TL_TL_io_value; // @[WorkerCSRWrapper.scala 50:21:@1155.4 WorkerCSRWrapper.scala 59:11:@1167.4] - assign _T_208 = control[5]; // @[WorkerCSRWrapper.scala 66:56:@1192.4] - assign _T_209 = control[4]; // @[WorkerCSRWrapper.scala 66:68:@1193.4] - assign _T_210 = {_T_208,_T_209}; // @[Cat.scala 30:58:@1194.4] - assign _T_211 = ~ _T_210; // @[WorkerCSRWrapper.scala 66:44:@1195.4] - assign clear = _T_207 & _T_211; // @[WorkerCSRWrapper.scala 66:42:@1196.4] - assign _T_214 = readerSyncOld == 1'h0; // @[WorkerCSRWrapper.scala 68:20:@1198.4] - assign _T_215 = _T_214 & readerSync; // @[WorkerCSRWrapper.scala 68:35:@1199.4] - assign _T_216 = control[3]; // @[WorkerCSRWrapper.scala 68:60:@1200.4] - assign _T_217 = _T_215 | _T_216; // @[WorkerCSRWrapper.scala 68:50:@1201.4] - assign _T_218 = control[1]; // @[WorkerCSRWrapper.scala 68:75:@1202.4] - assign _T_219 = _T_217 & _T_218; // @[WorkerCSRWrapper.scala 68:65:@1203.4] - assign _T_221 = writerSyncOld == 1'h0; // @[WorkerCSRWrapper.scala 69:20:@1205.4] - assign _T_222 = _T_221 & writerSync; // @[WorkerCSRWrapper.scala 69:35:@1206.4] - assign _T_223 = control[2]; // @[WorkerCSRWrapper.scala 69:60:@1207.4] - assign _T_224 = _T_222 | _T_223; // @[WorkerCSRWrapper.scala 69:50:@1208.4] - assign _T_225 = control[0]; // @[WorkerCSRWrapper.scala 69:75:@1209.4] - assign _T_226 = _T_224 & _T_225; // @[WorkerCSRWrapper.scala 69:65:@1210.4] - assign io_csr_0_dataIn = ClearCSRTL_TL_TL_io_csr_dataIn; // @[ClearCSR.scala 46:16:@1163.4] - assign io_csr_1_dataIn = StatusCSRTL_TL_TL_io_csr_dataIn; // @[StatusCSR.scala 36:16:@1171.4] - assign io_csr_2_dataIn = InterruptControllerTL_TL_TL_io_imr_dataIn; // @[InterruptController.scala 60:17:@1181.4] - assign io_csr_3_dataIn = InterruptControllerTL_TL_TL_io_isr_dataIn; // @[InterruptController.scala 61:17:@1185.4] - assign io_csr_4_dataIn = SimpleCSRTL_TL_TL_io_csr_dataIn; // @[SimpleCSR.scala 42:16:@1216.4] - assign io_csr_5_dataIn = SimpleCSRTL_TL_TL_1_io_csr_dataIn; // @[SimpleCSR.scala 42:16:@1224.4] - assign io_csr_6_dataIn = SimpleCSRTL_TL_TL_2_io_csr_dataIn; // @[SimpleCSR.scala 42:16:@1232.4] - assign io_csr_7_dataIn = SimpleCSRTL_TL_TL_3_io_csr_dataIn; // @[SimpleCSR.scala 42:16:@1240.4] - assign io_csr_8_dataIn = SimpleCSRTL_TL_TL_4_io_csr_dataIn; // @[SimpleCSR.scala 42:16:@1249.4] - assign io_csr_9_dataIn = SimpleCSRTL_TL_TL_5_io_csr_dataIn; // @[SimpleCSR.scala 42:16:@1257.4] - assign io_csr_10_dataIn = SimpleCSRTL_TL_TL_6_io_csr_dataIn; // @[SimpleCSR.scala 42:16:@1265.4] - assign io_csr_11_dataIn = SimpleCSRTL_TL_TL_7_io_csr_dataIn; // @[SimpleCSR.scala 42:16:@1273.4] - assign io_csr_12_dataIn = StatusCSRTL_TL_TL_1_io_csr_dataIn; // @[StatusCSR.scala 36:16:@1281.4] - assign io_csr_13_dataIn = StatusCSRTL_TL_TL_2_io_csr_dataIn; // @[StatusCSR.scala 36:16:@1289.4] - assign io_csr_14_dataIn = SimpleCSRTL_TL_TL_8_io_csr_dataIn; // @[SimpleCSR.scala 42:16:@1297.4] - assign io_csr_15_dataIn = SimpleCSRTL_TL_TL_9_io_csr_dataIn; // @[SimpleCSR.scala 42:16:@1304.4] - assign io_irq_readerDone = InterruptControllerTL_TL_TL_io_irq_readerDone; // @[WorkerCSRWrapper.scala 63:10:@1190.4] - assign io_irq_writerDone = InterruptControllerTL_TL_TL_io_irq_writerDone; // @[WorkerCSRWrapper.scala 63:10:@1189.4] - assign io_xferRead_address = transferSplitterRead_io_xferOut_address; // @[WorkerCSRWrapper.scala 91:15:@1316.4] - assign io_xferRead_length = transferSplitterRead_io_xferOut_length; // @[WorkerCSRWrapper.scala 91:15:@1315.4] - assign io_xferRead_valid = transferSplitterRead_io_xferOut_valid; // @[WorkerCSRWrapper.scala 91:15:@1314.4] - assign io_xferWrite_address = transferSplitterWrite_io_xferOut_address; // @[WorkerCSRWrapper.scala 94:16:@1326.4] - assign io_xferWrite_length = transferSplitterWrite_io_xferOut_length; // @[WorkerCSRWrapper.scala 94:16:@1325.4] - assign io_xferWrite_valid = transferSplitterWrite_io_xferOut_valid; // @[WorkerCSRWrapper.scala 94:16:@1324.4] - assign addressGeneratorRead_clock = clock; // @[:@1131.4] - assign addressGeneratorRead_reset = reset; // @[:@1132.4] - assign addressGeneratorRead_io_ctl_start = readerStart; // @[WorkerCSRWrapper.scala 71:37:@1212.4] - assign addressGeneratorRead_io_ctl_startAddress = SimpleCSRTL_TL_TL_io_value; // @[WorkerCSRWrapper.scala 72:44:@1220.4] - assign addressGeneratorRead_io_ctl_lineLength = SimpleCSRTL_TL_TL_1_io_value; // @[WorkerCSRWrapper.scala 73:42:@1228.4] - assign addressGeneratorRead_io_ctl_lineCount = SimpleCSRTL_TL_TL_2_io_value; // @[WorkerCSRWrapper.scala 74:41:@1236.4] - assign addressGeneratorRead_io_ctl_lineGap = SimpleCSRTL_TL_TL_3_io_value; // @[WorkerCSRWrapper.scala 75:39:@1244.4] - assign addressGeneratorRead_io_xfer_done = transferSplitterRead_io_xferIn_done; // @[WorkerCSRWrapper.scala 90:34:@1312.4] - assign transferSplitterRead_io_xferIn_address = addressGeneratorRead_io_xfer_address; // @[WorkerCSRWrapper.scala 90:34:@1311.4] - assign transferSplitterRead_io_xferIn_length = addressGeneratorRead_io_xfer_length; // @[WorkerCSRWrapper.scala 90:34:@1310.4] - assign transferSplitterRead_io_xferIn_valid = addressGeneratorRead_io_xfer_valid; // @[WorkerCSRWrapper.scala 90:34:@1309.4] - assign transferSplitterRead_io_xferOut_done = io_xferRead_done; // @[WorkerCSRWrapper.scala 91:15:@1317.4] - assign addressGeneratorWrite_clock = clock; // @[:@1137.4] - assign addressGeneratorWrite_reset = reset; // @[:@1138.4] - assign addressGeneratorWrite_io_ctl_start = writerStart; // @[WorkerCSRWrapper.scala 77:38:@1245.4] - assign addressGeneratorWrite_io_ctl_startAddress = SimpleCSRTL_TL_TL_4_io_value; // @[WorkerCSRWrapper.scala 78:45:@1253.4] - assign addressGeneratorWrite_io_ctl_lineLength = SimpleCSRTL_TL_TL_5_io_value; // @[WorkerCSRWrapper.scala 79:43:@1261.4] - assign addressGeneratorWrite_io_ctl_lineCount = SimpleCSRTL_TL_TL_6_io_value; // @[WorkerCSRWrapper.scala 80:42:@1269.4] - assign addressGeneratorWrite_io_ctl_lineGap = SimpleCSRTL_TL_TL_7_io_value; // @[WorkerCSRWrapper.scala 81:40:@1277.4] - assign addressGeneratorWrite_io_xfer_done = transferSplitterWrite_io_xferIn_done; // @[WorkerCSRWrapper.scala 93:35:@1322.4] - assign transferSplitterWrite_clock = clock; // @[:@1140.4] - assign transferSplitterWrite_reset = reset; // @[:@1141.4] - assign transferSplitterWrite_io_xferIn_address = addressGeneratorWrite_io_xfer_address; // @[WorkerCSRWrapper.scala 93:35:@1321.4] - assign transferSplitterWrite_io_xferIn_length = addressGeneratorWrite_io_xfer_length; // @[WorkerCSRWrapper.scala 93:35:@1320.4] - assign transferSplitterWrite_io_xferIn_valid = addressGeneratorWrite_io_xfer_valid; // @[WorkerCSRWrapper.scala 93:35:@1319.4] - assign transferSplitterWrite_io_xferOut_done = io_xferWrite_done; // @[WorkerCSRWrapper.scala 94:16:@1327.4] - assign ClearCSRTL_TL_TL_clock = clock; // @[:@1160.4] - assign ClearCSRTL_TL_TL_reset = reset; // @[:@1161.4] - assign ClearCSRTL_TL_TL_io_csr_dataOut = io_csr_0_dataOut; // @[ClearCSR.scala 46:16:@1165.4] - assign ClearCSRTL_TL_TL_io_csr_dataWrite = io_csr_0_dataWrite; // @[ClearCSR.scala 46:16:@1164.4] - assign ClearCSRTL_TL_TL_io_clear = {{30'd0}, clear}; // @[ClearCSR.scala 44:18:@1162.4] - assign StatusCSRTL_TL_TL_clock = clock; // @[:@1169.4] - assign StatusCSRTL_TL_TL_io_value = {{30'd0}, status}; // @[StatusCSR.scala 38:18:@1175.4] - assign InterruptControllerTL_TL_TL_clock = clock; // @[:@1177.4] - assign InterruptControllerTL_TL_TL_reset = reset; // @[:@1178.4] - assign InterruptControllerTL_TL_TL_io_readBusy = addressGeneratorRead_io_ctl_busy; // @[InterruptController.scala 57:22:@1179.4] - assign InterruptControllerTL_TL_TL_io_writeBusy = addressGeneratorWrite_io_ctl_busy; // @[InterruptController.scala 58:23:@1180.4] - assign InterruptControllerTL_TL_TL_io_imr_dataOut = io_csr_2_dataOut; // @[InterruptController.scala 60:17:@1183.4] - assign InterruptControllerTL_TL_TL_io_imr_dataWrite = io_csr_2_dataWrite; // @[InterruptController.scala 60:17:@1182.4] - assign InterruptControllerTL_TL_TL_io_isr_dataOut = io_csr_3_dataOut; // @[InterruptController.scala 61:17:@1187.4] - assign InterruptControllerTL_TL_TL_io_isr_dataWrite = io_csr_3_dataWrite; // @[InterruptController.scala 61:17:@1186.4] - assign SimpleCSRTL_TL_TL_clock = clock; // @[:@1214.4] - assign SimpleCSRTL_TL_TL_reset = reset; // @[:@1215.4] - assign SimpleCSRTL_TL_TL_io_csr_dataOut = io_csr_4_dataOut; // @[SimpleCSR.scala 42:16:@1218.4] - assign SimpleCSRTL_TL_TL_io_csr_dataWrite = io_csr_4_dataWrite; // @[SimpleCSR.scala 42:16:@1217.4] - assign SimpleCSRTL_TL_TL_1_clock = clock; // @[:@1222.4] - assign SimpleCSRTL_TL_TL_1_reset = reset; // @[:@1223.4] - assign SimpleCSRTL_TL_TL_1_io_csr_dataOut = io_csr_5_dataOut; // @[SimpleCSR.scala 42:16:@1226.4] - assign SimpleCSRTL_TL_TL_1_io_csr_dataWrite = io_csr_5_dataWrite; // @[SimpleCSR.scala 42:16:@1225.4] - assign SimpleCSRTL_TL_TL_2_clock = clock; // @[:@1230.4] - assign SimpleCSRTL_TL_TL_2_reset = reset; // @[:@1231.4] - assign SimpleCSRTL_TL_TL_2_io_csr_dataOut = io_csr_6_dataOut; // @[SimpleCSR.scala 42:16:@1234.4] - assign SimpleCSRTL_TL_TL_2_io_csr_dataWrite = io_csr_6_dataWrite; // @[SimpleCSR.scala 42:16:@1233.4] - assign SimpleCSRTL_TL_TL_3_clock = clock; // @[:@1238.4] - assign SimpleCSRTL_TL_TL_3_reset = reset; // @[:@1239.4] - assign SimpleCSRTL_TL_TL_3_io_csr_dataOut = io_csr_7_dataOut; // @[SimpleCSR.scala 42:16:@1242.4] - assign SimpleCSRTL_TL_TL_3_io_csr_dataWrite = io_csr_7_dataWrite; // @[SimpleCSR.scala 42:16:@1241.4] - assign SimpleCSRTL_TL_TL_4_clock = clock; // @[:@1247.4] - assign SimpleCSRTL_TL_TL_4_reset = reset; // @[:@1248.4] - assign SimpleCSRTL_TL_TL_4_io_csr_dataOut = io_csr_8_dataOut; // @[SimpleCSR.scala 42:16:@1251.4] - assign SimpleCSRTL_TL_TL_4_io_csr_dataWrite = io_csr_8_dataWrite; // @[SimpleCSR.scala 42:16:@1250.4] - assign SimpleCSRTL_TL_TL_5_clock = clock; // @[:@1255.4] - assign SimpleCSRTL_TL_TL_5_reset = reset; // @[:@1256.4] - assign SimpleCSRTL_TL_TL_5_io_csr_dataOut = io_csr_9_dataOut; // @[SimpleCSR.scala 42:16:@1259.4] - assign SimpleCSRTL_TL_TL_5_io_csr_dataWrite = io_csr_9_dataWrite; // @[SimpleCSR.scala 42:16:@1258.4] - assign SimpleCSRTL_TL_TL_6_clock = clock; // @[:@1263.4] - assign SimpleCSRTL_TL_TL_6_reset = reset; // @[:@1264.4] - assign SimpleCSRTL_TL_TL_6_io_csr_dataOut = io_csr_10_dataOut; // @[SimpleCSR.scala 42:16:@1267.4] - assign SimpleCSRTL_TL_TL_6_io_csr_dataWrite = io_csr_10_dataWrite; // @[SimpleCSR.scala 42:16:@1266.4] - assign SimpleCSRTL_TL_TL_7_clock = clock; // @[:@1271.4] - assign SimpleCSRTL_TL_TL_7_reset = reset; // @[:@1272.4] - assign SimpleCSRTL_TL_TL_7_io_csr_dataOut = io_csr_11_dataOut; // @[SimpleCSR.scala 42:16:@1275.4] - assign SimpleCSRTL_TL_TL_7_io_csr_dataWrite = io_csr_11_dataWrite; // @[SimpleCSR.scala 42:16:@1274.4] - assign StatusCSRTL_TL_TL_1_clock = clock; // @[:@1279.4] - assign StatusCSRTL_TL_TL_1_io_value = 32'h0; // @[StatusCSR.scala 38:18:@1285.4] - assign StatusCSRTL_TL_TL_2_clock = clock; // @[:@1287.4] - assign StatusCSRTL_TL_TL_2_io_value = 32'h555; // @[StatusCSR.scala 38:18:@1293.4] - assign SimpleCSRTL_TL_TL_8_clock = clock; // @[:@1295.4] - assign SimpleCSRTL_TL_TL_8_reset = reset; // @[:@1296.4] - assign SimpleCSRTL_TL_TL_8_io_csr_dataOut = io_csr_14_dataOut; // @[SimpleCSR.scala 42:16:@1299.4] - assign SimpleCSRTL_TL_TL_8_io_csr_dataWrite = io_csr_14_dataWrite; // @[SimpleCSR.scala 42:16:@1298.4] - assign SimpleCSRTL_TL_TL_9_clock = clock; // @[:@1302.4] - assign SimpleCSRTL_TL_TL_9_reset = reset; // @[:@1303.4] - assign SimpleCSRTL_TL_TL_9_io_csr_dataOut = io_csr_15_dataOut; // @[SimpleCSR.scala 42:16:@1306.4] - assign SimpleCSRTL_TL_TL_9_io_csr_dataWrite = io_csr_15_dataWrite; // @[SimpleCSR.scala 42:16:@1305.4] -`ifdef RANDOMIZE_GARBAGE_ASSIGN -`define RANDOMIZE -`endif -`ifdef RANDOMIZE_INVALID_ASSIGN -`define RANDOMIZE -`endif -`ifdef RANDOMIZE_REG_INIT -`define RANDOMIZE -`endif -`ifdef RANDOMIZE_MEM_INIT -`define RANDOMIZE -`endif -`ifndef RANDOM -`define RANDOM $random -`endif -`ifdef RANDOMIZE - integer initvar; - initial begin - `ifdef INIT_RANDOM - `INIT_RANDOM - `endif - `ifndef VERILATOR - #0.002 begin end - `endif - `ifdef RANDOMIZE_REG_INIT - _RAND_0 = {1{`RANDOM}}; - status = _RAND_0[1:0]; - `endif // RANDOMIZE_REG_INIT - `ifdef RANDOMIZE_REG_INIT - _RAND_1 = {1{`RANDOM}}; - readerSync = _RAND_1[0:0]; - `endif // RANDOMIZE_REG_INIT - `ifdef RANDOMIZE_REG_INIT - _RAND_2 = {1{`RANDOM}}; - readerSyncOld = _RAND_2[0:0]; - `endif // RANDOMIZE_REG_INIT - `ifdef RANDOMIZE_REG_INIT - _RAND_3 = {1{`RANDOM}}; - writerSync = _RAND_3[0:0]; - `endif // RANDOMIZE_REG_INIT - `ifdef RANDOMIZE_REG_INIT - _RAND_4 = {1{`RANDOM}}; - writerSyncOld = _RAND_4[0:0]; - `endif // RANDOMIZE_REG_INIT - `ifdef RANDOMIZE_REG_INIT - _RAND_5 = {1{`RANDOM}}; - readerStart = _RAND_5[0:0]; - `endif // RANDOMIZE_REG_INIT - `ifdef RANDOMIZE_REG_INIT - _RAND_6 = {1{`RANDOM}}; - writerStart = _RAND_6[0:0]; - `endif // RANDOMIZE_REG_INIT - end -`endif // RANDOMIZE - always @(posedge clock) begin - status <= {addressGeneratorRead_io_ctl_busy,addressGeneratorWrite_io_ctl_busy}; - readerSync <= io_sync_readerSync; - readerSyncOld <= readerSync; - writerSync <= io_sync_writerSync; - writerSyncOld <= writerSync; - if (reset) begin - readerStart <= 1'h0; - end else begin - readerStart <= _T_219; - end - if (reset) begin - writerStart <= 1'h0; - end else begin - writerStart <= _T_226; - end - end -endmodule -module Queue( // @[:@1329.2] - input clock, // @[:@1330.4] - input reset, // @[:@1331.4] - output io_enq_ready, // @[:@1332.4] - input io_enq_valid, // @[:@1332.4] - input [31:0] io_enq_bits, // @[:@1332.4] - input io_deq_ready, // @[:@1332.4] - output io_deq_valid, // @[:@1332.4] - output [31:0] io_deq_bits // @[:@1332.4] -); - reg [31:0] ram [0:511]; // @[Decoupled.scala 215:24:@1334.4] - reg [31:0] _RAND_0; - wire [31:0] ram__T_63_data; // @[Decoupled.scala 215:24:@1334.4] - wire [8:0] ram__T_63_addr; // @[Decoupled.scala 215:24:@1334.4] - wire [31:0] ram__T_49_data; // @[Decoupled.scala 215:24:@1334.4] - wire [8:0] ram__T_49_addr; // @[Decoupled.scala 215:24:@1334.4] - wire ram__T_49_mask; // @[Decoupled.scala 215:24:@1334.4] - wire ram__T_49_en; // @[Decoupled.scala 215:24:@1334.4] - reg [8:0] value; // @[Counter.scala 26:33:@1335.4] - reg [31:0] _RAND_1; - reg [8:0] value_1; // @[Counter.scala 26:33:@1336.4] - reg [31:0] _RAND_2; - reg maybe_full; // @[Decoupled.scala 218:35:@1337.4] - reg [31:0] _RAND_3; - wire _T_41; // @[Decoupled.scala 220:41:@1338.4] - wire _T_43; // @[Decoupled.scala 221:36:@1339.4] - wire empty; // @[Decoupled.scala 221:33:@1340.4] - wire _T_44; // @[Decoupled.scala 222:32:@1341.4] - wire do_enq; // @[Decoupled.scala 37:37:@1342.4] - wire do_deq; // @[Decoupled.scala 37:37:@1345.4] - wire [9:0] _T_52; // @[Counter.scala 35:22:@1352.6] - wire [8:0] _T_53; // @[Counter.scala 35:22:@1353.6] - wire [8:0] _GEN_5; // @[Decoupled.scala 226:17:@1348.4] - wire [9:0] _T_56; // @[Counter.scala 35:22:@1358.6] - wire [8:0] _T_57; // @[Counter.scala 35:22:@1359.6] - wire [8:0] _GEN_6; // @[Decoupled.scala 230:17:@1356.4] - wire _T_58; // @[Decoupled.scala 233:16:@1362.4] - wire _GEN_7; // @[Decoupled.scala 233:28:@1363.4] - assign ram__T_63_addr = value_1; - assign ram__T_63_data = ram[ram__T_63_addr]; // @[Decoupled.scala 215:24:@1334.4] - assign ram__T_49_data = io_enq_bits; - assign ram__T_49_addr = value; - assign ram__T_49_mask = 1'h1; - assign ram__T_49_en = io_enq_ready & io_enq_valid; - assign _T_41 = value == value_1; // @[Decoupled.scala 220:41:@1338.4] - assign _T_43 = maybe_full == 1'h0; // @[Decoupled.scala 221:36:@1339.4] - assign empty = _T_41 & _T_43; // @[Decoupled.scala 221:33:@1340.4] - assign _T_44 = _T_41 & maybe_full; // @[Decoupled.scala 222:32:@1341.4] - assign do_enq = io_enq_ready & io_enq_valid; // @[Decoupled.scala 37:37:@1342.4] - assign do_deq = io_deq_ready & io_deq_valid; // @[Decoupled.scala 37:37:@1345.4] - assign _T_52 = value + 9'h1; // @[Counter.scala 35:22:@1352.6] - assign _T_53 = value + 9'h1; // @[Counter.scala 35:22:@1353.6] - assign _GEN_5 = do_enq ? _T_53 : value; // @[Decoupled.scala 226:17:@1348.4] - assign _T_56 = value_1 + 9'h1; // @[Counter.scala 35:22:@1358.6] - assign _T_57 = value_1 + 9'h1; // @[Counter.scala 35:22:@1359.6] - assign _GEN_6 = do_deq ? _T_57 : value_1; // @[Decoupled.scala 230:17:@1356.4] - assign _T_58 = do_enq != do_deq; // @[Decoupled.scala 233:16:@1362.4] - assign _GEN_7 = _T_58 ? do_enq : maybe_full; // @[Decoupled.scala 233:28:@1363.4] - assign io_enq_ready = _T_44 == 1'h0; // @[Decoupled.scala 238:16:@1369.4] - assign io_deq_valid = empty == 1'h0; // @[Decoupled.scala 237:16:@1367.4] - assign io_deq_bits = ram__T_63_data; // @[Decoupled.scala 239:15:@1371.4] -`ifdef RANDOMIZE_GARBAGE_ASSIGN -`define RANDOMIZE -`endif -`ifdef RANDOMIZE_INVALID_ASSIGN -`define RANDOMIZE -`endif -`ifdef RANDOMIZE_REG_INIT -`define RANDOMIZE -`endif -`ifdef RANDOMIZE_MEM_INIT -`define RANDOMIZE -`endif -`ifndef RANDOM -`define RANDOM $random -`endif -`ifdef RANDOMIZE - integer initvar; - initial begin - `ifdef INIT_RANDOM - `INIT_RANDOM - `endif - `ifndef VERILATOR - #0.002 begin end - `endif - _RAND_0 = {1{`RANDOM}}; - `ifdef RANDOMIZE_MEM_INIT - for (initvar = 0; initvar < 512; initvar = initvar+1) - ram[initvar] = _RAND_0[31:0]; - `endif // RANDOMIZE_MEM_INIT - `ifdef RANDOMIZE_REG_INIT - _RAND_1 = {1{`RANDOM}}; - value = _RAND_1[8:0]; - `endif // RANDOMIZE_REG_INIT - `ifdef RANDOMIZE_REG_INIT - _RAND_2 = {1{`RANDOM}}; - value_1 = _RAND_2[8:0]; - `endif // RANDOMIZE_REG_INIT - `ifdef RANDOMIZE_REG_INIT - _RAND_3 = {1{`RANDOM}}; - maybe_full = _RAND_3[0:0]; - `endif // RANDOMIZE_REG_INIT - end -`endif // RANDOMIZE - always @(posedge clock) begin - if(ram__T_49_en & ram__T_49_mask) begin - ram[ram__T_49_addr] <= ram__T_49_data; // @[Decoupled.scala 215:24:@1334.4] - end - if (reset) begin - value <= 9'h0; - end else begin - if (do_enq) begin - value <= _T_53; - end - end - if (reset) begin - value_1 <= 9'h0; - end else begin - if (do_deq) begin - value_1 <= _T_57; - end - end - if (reset) begin - maybe_full <= 1'h0; - end else begin - if (_T_58) begin - maybe_full <= do_enq; - end - end - end -endmodule -module DMATopTL_TL_TL( // @[:@1380.2] - input clock, // @[:@1381.4] - input reset, // @[:@1382.4] - input [2:0] io_control_a_opcode, // @[:@1383.4] - input [2:0] io_control_a_param, // @[:@1383.4] - input [1:0] io_control_a_size, // @[:@1383.4] - input [9:0] io_control_a_source, // @[:@1383.4] - input [31:0] io_control_a_address, // @[:@1383.4] - input [3:0] io_control_a_mask, // @[:@1383.4] - input [31:0] io_control_a_data, // @[:@1383.4] - input io_control_a_corrupt, // @[:@1383.4] - input io_control_a_valid, // @[:@1383.4] - output io_control_a_ready, // @[:@1383.4] - output [2:0] io_control_d_opcode, // @[:@1383.4] - output [2:0] io_control_d_param, // @[:@1383.4] - output [1:0] io_control_d_size, // @[:@1383.4] - output [9:0] io_control_d_source, // @[:@1383.4] - output io_control_d_sink, // @[:@1383.4] - output io_control_d_denied, // @[:@1383.4] - output [31:0] io_control_d_data, // @[:@1383.4] - output io_control_d_corrupt, // @[:@1383.4] - output io_control_d_valid, // @[:@1383.4] - input io_control_d_ready, // @[:@1383.4] - output [2:0] io_read_a_opcode, // @[:@1383.4] - output [2:0] io_read_a_param, // @[:@1383.4] - output [1:0] io_read_a_size, // @[:@1383.4] - output [9:0] io_read_a_source, // @[:@1383.4] - output [31:0] io_read_a_address, // @[:@1383.4] - output [3:0] io_read_a_mask, // @[:@1383.4] - output [31:0] io_read_a_data, // @[:@1383.4] - output io_read_a_corrupt, // @[:@1383.4] - output io_read_a_valid, // @[:@1383.4] - input io_read_a_ready, // @[:@1383.4] - input [2:0] io_read_d_opcode, // @[:@1383.4] - input [2:0] io_read_d_param, // @[:@1383.4] - input [1:0] io_read_d_size, // @[:@1383.4] - input [9:0] io_read_d_source, // @[:@1383.4] - input io_read_d_sink, // @[:@1383.4] - input io_read_d_denied, // @[:@1383.4] - input [31:0] io_read_d_data, // @[:@1383.4] - input io_read_d_corrupt, // @[:@1383.4] - input io_read_d_valid, // @[:@1383.4] - output io_read_d_ready, // @[:@1383.4] - output [2:0] io_write_a_opcode, // @[:@1383.4] - output [2:0] io_write_a_param, // @[:@1383.4] - output [1:0] io_write_a_size, // @[:@1383.4] - output [9:0] io_write_a_source, // @[:@1383.4] - output [31:0] io_write_a_address, // @[:@1383.4] - output [3:0] io_write_a_mask, // @[:@1383.4] - output [31:0] io_write_a_data, // @[:@1383.4] - output io_write_a_corrupt, // @[:@1383.4] - output io_write_a_valid, // @[:@1383.4] - input io_write_a_ready, // @[:@1383.4] - input [2:0] io_write_d_opcode, // @[:@1383.4] - input [2:0] io_write_d_param, // @[:@1383.4] - input [1:0] io_write_d_size, // @[:@1383.4] - input [9:0] io_write_d_source, // @[:@1383.4] - input io_write_d_sink, // @[:@1383.4] - input io_write_d_denied, // @[:@1383.4] - input [31:0] io_write_d_data, // @[:@1383.4] - input io_write_d_corrupt, // @[:@1383.4] - input io_write_d_valid, // @[:@1383.4] - output io_write_d_ready, // @[:@1383.4] - output io_irq_readerDone, // @[:@1383.4] - output io_irq_writerDone, // @[:@1383.4] - input io_sync_readerSync, // @[:@1383.4] - input io_sync_writerSync // @[:@1383.4] -); - wire csrFrontend_clock; // @[DMATop.scala 38:27:@1385.4] - wire csrFrontend_reset; // @[DMATop.scala 38:27:@1385.4] - wire [2:0] csrFrontend_io_ctl_a_opcode; // @[DMATop.scala 38:27:@1385.4] - wire [1:0] csrFrontend_io_ctl_a_size; // @[DMATop.scala 38:27:@1385.4] - wire [9:0] csrFrontend_io_ctl_a_source; // @[DMATop.scala 38:27:@1385.4] - wire [31:0] csrFrontend_io_ctl_a_address; // @[DMATop.scala 38:27:@1385.4] - wire [31:0] csrFrontend_io_ctl_a_data; // @[DMATop.scala 38:27:@1385.4] - wire csrFrontend_io_ctl_a_valid; // @[DMATop.scala 38:27:@1385.4] - wire csrFrontend_io_ctl_a_ready; // @[DMATop.scala 38:27:@1385.4] - wire [2:0] csrFrontend_io_ctl_d_opcode; // @[DMATop.scala 38:27:@1385.4] - wire [1:0] csrFrontend_io_ctl_d_size; // @[DMATop.scala 38:27:@1385.4] - wire [9:0] csrFrontend_io_ctl_d_source; // @[DMATop.scala 38:27:@1385.4] - wire [31:0] csrFrontend_io_ctl_d_data; // @[DMATop.scala 38:27:@1385.4] - wire csrFrontend_io_ctl_d_valid; // @[DMATop.scala 38:27:@1385.4] - wire csrFrontend_io_ctl_d_ready; // @[DMATop.scala 38:27:@1385.4] - wire [3:0] csrFrontend_io_bus_addr; // @[DMATop.scala 38:27:@1385.4] - wire [31:0] csrFrontend_io_bus_dataOut; // @[DMATop.scala 38:27:@1385.4] - wire [31:0] csrFrontend_io_bus_dataIn; // @[DMATop.scala 38:27:@1385.4] - wire csrFrontend_io_bus_write; // @[DMATop.scala 38:27:@1385.4] - wire csrFrontend_io_bus_read; // @[DMATop.scala 38:27:@1385.4] - wire readerFrontend_clock; // @[DMATop.scala 40:30:@1388.4] - wire readerFrontend_reset; // @[DMATop.scala 40:30:@1388.4] - wire [31:0] readerFrontend_io_bus_a_address; // @[DMATop.scala 40:30:@1388.4] - wire readerFrontend_io_bus_a_valid; // @[DMATop.scala 40:30:@1388.4] - wire readerFrontend_io_bus_a_ready; // @[DMATop.scala 40:30:@1388.4] - wire [31:0] readerFrontend_io_bus_d_data; // @[DMATop.scala 40:30:@1388.4] - wire readerFrontend_io_bus_d_valid; // @[DMATop.scala 40:30:@1388.4] - wire readerFrontend_io_bus_d_ready; // @[DMATop.scala 40:30:@1388.4] - wire readerFrontend_io_dataIO_ready; // @[DMATop.scala 40:30:@1388.4] - wire readerFrontend_io_dataIO_valid; // @[DMATop.scala 40:30:@1388.4] - wire [31:0] readerFrontend_io_dataIO_bits; // @[DMATop.scala 40:30:@1388.4] - wire readerFrontend_io_xfer_done; // @[DMATop.scala 40:30:@1388.4] - wire [31:0] readerFrontend_io_xfer_address; // @[DMATop.scala 40:30:@1388.4] - wire [31:0] readerFrontend_io_xfer_length; // @[DMATop.scala 40:30:@1388.4] - wire readerFrontend_io_xfer_valid; // @[DMATop.scala 40:30:@1388.4] - wire writerFrontend_clock; // @[DMATop.scala 42:30:@1391.4] - wire writerFrontend_reset; // @[DMATop.scala 42:30:@1391.4] - wire [31:0] writerFrontend_io_bus_a_address; // @[DMATop.scala 42:30:@1391.4] - wire [31:0] writerFrontend_io_bus_a_data; // @[DMATop.scala 42:30:@1391.4] - wire writerFrontend_io_bus_a_valid; // @[DMATop.scala 42:30:@1391.4] - wire writerFrontend_io_bus_a_ready; // @[DMATop.scala 42:30:@1391.4] - wire writerFrontend_io_bus_d_valid; // @[DMATop.scala 42:30:@1391.4] - wire writerFrontend_io_bus_d_ready; // @[DMATop.scala 42:30:@1391.4] - wire writerFrontend_io_dataIO_ready; // @[DMATop.scala 42:30:@1391.4] - wire writerFrontend_io_dataIO_valid; // @[DMATop.scala 42:30:@1391.4] - wire [31:0] writerFrontend_io_dataIO_bits; // @[DMATop.scala 42:30:@1391.4] - wire writerFrontend_io_xfer_done; // @[DMATop.scala 42:30:@1391.4] - wire [31:0] writerFrontend_io_xfer_address; // @[DMATop.scala 42:30:@1391.4] - wire [31:0] writerFrontend_io_xfer_length; // @[DMATop.scala 42:30:@1391.4] - wire writerFrontend_io_xfer_valid; // @[DMATop.scala 42:30:@1391.4] - wire [31:0] csr_io_csr_0_dataOut; // @[DMATop.scala 44:19:@1394.4] - wire csr_io_csr_0_dataWrite; // @[DMATop.scala 44:19:@1394.4] - wire [31:0] csr_io_csr_0_dataIn; // @[DMATop.scala 44:19:@1394.4] - wire [31:0] csr_io_csr_1_dataIn; // @[DMATop.scala 44:19:@1394.4] - wire [31:0] csr_io_csr_2_dataOut; // @[DMATop.scala 44:19:@1394.4] - wire csr_io_csr_2_dataWrite; // @[DMATop.scala 44:19:@1394.4] - wire [31:0] csr_io_csr_2_dataIn; // @[DMATop.scala 44:19:@1394.4] - wire [31:0] csr_io_csr_3_dataOut; // @[DMATop.scala 44:19:@1394.4] - wire csr_io_csr_3_dataWrite; // @[DMATop.scala 44:19:@1394.4] - wire [31:0] csr_io_csr_3_dataIn; // @[DMATop.scala 44:19:@1394.4] - wire [31:0] csr_io_csr_4_dataOut; // @[DMATop.scala 44:19:@1394.4] - wire csr_io_csr_4_dataWrite; // @[DMATop.scala 44:19:@1394.4] - wire [31:0] csr_io_csr_4_dataIn; // @[DMATop.scala 44:19:@1394.4] - wire [31:0] csr_io_csr_5_dataOut; // @[DMATop.scala 44:19:@1394.4] - wire csr_io_csr_5_dataWrite; // @[DMATop.scala 44:19:@1394.4] - wire [31:0] csr_io_csr_5_dataIn; // @[DMATop.scala 44:19:@1394.4] - wire [31:0] csr_io_csr_6_dataOut; // @[DMATop.scala 44:19:@1394.4] - wire csr_io_csr_6_dataWrite; // @[DMATop.scala 44:19:@1394.4] - wire [31:0] csr_io_csr_6_dataIn; // @[DMATop.scala 44:19:@1394.4] - wire [31:0] csr_io_csr_7_dataOut; // @[DMATop.scala 44:19:@1394.4] - wire csr_io_csr_7_dataWrite; // @[DMATop.scala 44:19:@1394.4] - wire [31:0] csr_io_csr_7_dataIn; // @[DMATop.scala 44:19:@1394.4] - wire [31:0] csr_io_csr_8_dataOut; // @[DMATop.scala 44:19:@1394.4] - wire csr_io_csr_8_dataWrite; // @[DMATop.scala 44:19:@1394.4] - wire [31:0] csr_io_csr_8_dataIn; // @[DMATop.scala 44:19:@1394.4] - wire [31:0] csr_io_csr_9_dataOut; // @[DMATop.scala 44:19:@1394.4] - wire csr_io_csr_9_dataWrite; // @[DMATop.scala 44:19:@1394.4] - wire [31:0] csr_io_csr_9_dataIn; // @[DMATop.scala 44:19:@1394.4] - wire [31:0] csr_io_csr_10_dataOut; // @[DMATop.scala 44:19:@1394.4] - wire csr_io_csr_10_dataWrite; // @[DMATop.scala 44:19:@1394.4] - wire [31:0] csr_io_csr_10_dataIn; // @[DMATop.scala 44:19:@1394.4] - wire [31:0] csr_io_csr_11_dataOut; // @[DMATop.scala 44:19:@1394.4] - wire csr_io_csr_11_dataWrite; // @[DMATop.scala 44:19:@1394.4] - wire [31:0] csr_io_csr_11_dataIn; // @[DMATop.scala 44:19:@1394.4] - wire [31:0] csr_io_csr_12_dataIn; // @[DMATop.scala 44:19:@1394.4] - wire [31:0] csr_io_csr_13_dataIn; // @[DMATop.scala 44:19:@1394.4] - wire [31:0] csr_io_csr_14_dataOut; // @[DMATop.scala 44:19:@1394.4] - wire csr_io_csr_14_dataWrite; // @[DMATop.scala 44:19:@1394.4] - wire [31:0] csr_io_csr_14_dataIn; // @[DMATop.scala 44:19:@1394.4] - wire [31:0] csr_io_csr_15_dataOut; // @[DMATop.scala 44:19:@1394.4] - wire csr_io_csr_15_dataWrite; // @[DMATop.scala 44:19:@1394.4] - wire [31:0] csr_io_csr_15_dataIn; // @[DMATop.scala 44:19:@1394.4] - wire [3:0] csr_io_bus_addr; // @[DMATop.scala 44:19:@1394.4] - wire [31:0] csr_io_bus_dataOut; // @[DMATop.scala 44:19:@1394.4] - wire [31:0] csr_io_bus_dataIn; // @[DMATop.scala 44:19:@1394.4] - wire csr_io_bus_write; // @[DMATop.scala 44:19:@1394.4] - wire csr_io_bus_read; // @[DMATop.scala 44:19:@1394.4] - wire ctl_clock; // @[DMATop.scala 46:19:@1397.4] - wire ctl_reset; // @[DMATop.scala 46:19:@1397.4] - wire [31:0] ctl_io_csr_0_dataOut; // @[DMATop.scala 46:19:@1397.4] - wire ctl_io_csr_0_dataWrite; // @[DMATop.scala 46:19:@1397.4] - wire [31:0] ctl_io_csr_0_dataIn; // @[DMATop.scala 46:19:@1397.4] - wire [31:0] ctl_io_csr_1_dataIn; // @[DMATop.scala 46:19:@1397.4] - wire [31:0] ctl_io_csr_2_dataOut; // @[DMATop.scala 46:19:@1397.4] - wire ctl_io_csr_2_dataWrite; // @[DMATop.scala 46:19:@1397.4] - wire [31:0] ctl_io_csr_2_dataIn; // @[DMATop.scala 46:19:@1397.4] - wire [31:0] ctl_io_csr_3_dataOut; // @[DMATop.scala 46:19:@1397.4] - wire ctl_io_csr_3_dataWrite; // @[DMATop.scala 46:19:@1397.4] - wire [31:0] ctl_io_csr_3_dataIn; // @[DMATop.scala 46:19:@1397.4] - wire [31:0] ctl_io_csr_4_dataOut; // @[DMATop.scala 46:19:@1397.4] - wire ctl_io_csr_4_dataWrite; // @[DMATop.scala 46:19:@1397.4] - wire [31:0] ctl_io_csr_4_dataIn; // @[DMATop.scala 46:19:@1397.4] - wire [31:0] ctl_io_csr_5_dataOut; // @[DMATop.scala 46:19:@1397.4] - wire ctl_io_csr_5_dataWrite; // @[DMATop.scala 46:19:@1397.4] - wire [31:0] ctl_io_csr_5_dataIn; // @[DMATop.scala 46:19:@1397.4] - wire [31:0] ctl_io_csr_6_dataOut; // @[DMATop.scala 46:19:@1397.4] - wire ctl_io_csr_6_dataWrite; // @[DMATop.scala 46:19:@1397.4] - wire [31:0] ctl_io_csr_6_dataIn; // @[DMATop.scala 46:19:@1397.4] - wire [31:0] ctl_io_csr_7_dataOut; // @[DMATop.scala 46:19:@1397.4] - wire ctl_io_csr_7_dataWrite; // @[DMATop.scala 46:19:@1397.4] - wire [31:0] ctl_io_csr_7_dataIn; // @[DMATop.scala 46:19:@1397.4] - wire [31:0] ctl_io_csr_8_dataOut; // @[DMATop.scala 46:19:@1397.4] - wire ctl_io_csr_8_dataWrite; // @[DMATop.scala 46:19:@1397.4] - wire [31:0] ctl_io_csr_8_dataIn; // @[DMATop.scala 46:19:@1397.4] - wire [31:0] ctl_io_csr_9_dataOut; // @[DMATop.scala 46:19:@1397.4] - wire ctl_io_csr_9_dataWrite; // @[DMATop.scala 46:19:@1397.4] - wire [31:0] ctl_io_csr_9_dataIn; // @[DMATop.scala 46:19:@1397.4] - wire [31:0] ctl_io_csr_10_dataOut; // @[DMATop.scala 46:19:@1397.4] - wire ctl_io_csr_10_dataWrite; // @[DMATop.scala 46:19:@1397.4] - wire [31:0] ctl_io_csr_10_dataIn; // @[DMATop.scala 46:19:@1397.4] - wire [31:0] ctl_io_csr_11_dataOut; // @[DMATop.scala 46:19:@1397.4] - wire ctl_io_csr_11_dataWrite; // @[DMATop.scala 46:19:@1397.4] - wire [31:0] ctl_io_csr_11_dataIn; // @[DMATop.scala 46:19:@1397.4] - wire [31:0] ctl_io_csr_12_dataIn; // @[DMATop.scala 46:19:@1397.4] - wire [31:0] ctl_io_csr_13_dataIn; // @[DMATop.scala 46:19:@1397.4] - wire [31:0] ctl_io_csr_14_dataOut; // @[DMATop.scala 46:19:@1397.4] - wire ctl_io_csr_14_dataWrite; // @[DMATop.scala 46:19:@1397.4] - wire [31:0] ctl_io_csr_14_dataIn; // @[DMATop.scala 46:19:@1397.4] - wire [31:0] ctl_io_csr_15_dataOut; // @[DMATop.scala 46:19:@1397.4] - wire ctl_io_csr_15_dataWrite; // @[DMATop.scala 46:19:@1397.4] - wire [31:0] ctl_io_csr_15_dataIn; // @[DMATop.scala 46:19:@1397.4] - wire ctl_io_irq_readerDone; // @[DMATop.scala 46:19:@1397.4] - wire ctl_io_irq_writerDone; // @[DMATop.scala 46:19:@1397.4] - wire ctl_io_sync_readerSync; // @[DMATop.scala 46:19:@1397.4] - wire ctl_io_sync_writerSync; // @[DMATop.scala 46:19:@1397.4] - wire ctl_io_xferRead_done; // @[DMATop.scala 46:19:@1397.4] - wire [31:0] ctl_io_xferRead_address; // @[DMATop.scala 46:19:@1397.4] - wire [31:0] ctl_io_xferRead_length; // @[DMATop.scala 46:19:@1397.4] - wire ctl_io_xferRead_valid; // @[DMATop.scala 46:19:@1397.4] - wire ctl_io_xferWrite_done; // @[DMATop.scala 46:19:@1397.4] - wire [31:0] ctl_io_xferWrite_address; // @[DMATop.scala 46:19:@1397.4] - wire [31:0] ctl_io_xferWrite_length; // @[DMATop.scala 46:19:@1397.4] - wire ctl_io_xferWrite_valid; // @[DMATop.scala 46:19:@1397.4] - wire queue_clock; // @[Decoupled.scala 294:21:@1400.4] - wire queue_reset; // @[Decoupled.scala 294:21:@1400.4] - wire queue_io_enq_ready; // @[Decoupled.scala 294:21:@1400.4] - wire queue_io_enq_valid; // @[Decoupled.scala 294:21:@1400.4] - wire [31:0] queue_io_enq_bits; // @[Decoupled.scala 294:21:@1400.4] - wire queue_io_deq_ready; // @[Decoupled.scala 294:21:@1400.4] - wire queue_io_deq_valid; // @[Decoupled.scala 294:21:@1400.4] - wire [31:0] queue_io_deq_bits; // @[Decoupled.scala 294:21:@1400.4] - TLULCSRTL_TL_TL csrFrontend ( // @[DMATop.scala 38:27:@1385.4] - .clock(csrFrontend_clock), - .reset(csrFrontend_reset), - .io_ctl_a_opcode(csrFrontend_io_ctl_a_opcode), - .io_ctl_a_size(csrFrontend_io_ctl_a_size), - .io_ctl_a_source(csrFrontend_io_ctl_a_source), - .io_ctl_a_address(csrFrontend_io_ctl_a_address), - .io_ctl_a_data(csrFrontend_io_ctl_a_data), - .io_ctl_a_valid(csrFrontend_io_ctl_a_valid), - .io_ctl_a_ready(csrFrontend_io_ctl_a_ready), - .io_ctl_d_opcode(csrFrontend_io_ctl_d_opcode), - .io_ctl_d_size(csrFrontend_io_ctl_d_size), - .io_ctl_d_source(csrFrontend_io_ctl_d_source), - .io_ctl_d_data(csrFrontend_io_ctl_d_data), - .io_ctl_d_valid(csrFrontend_io_ctl_d_valid), - .io_ctl_d_ready(csrFrontend_io_ctl_d_ready), - .io_bus_addr(csrFrontend_io_bus_addr), - .io_bus_dataOut(csrFrontend_io_bus_dataOut), - .io_bus_dataIn(csrFrontend_io_bus_dataIn), - .io_bus_write(csrFrontend_io_bus_write), - .io_bus_read(csrFrontend_io_bus_read) - ); - TLULReaderTL_TL_TL readerFrontend ( // @[DMATop.scala 40:30:@1388.4] - .clock(readerFrontend_clock), - .reset(readerFrontend_reset), - .io_bus_a_address(readerFrontend_io_bus_a_address), - .io_bus_a_valid(readerFrontend_io_bus_a_valid), - .io_bus_a_ready(readerFrontend_io_bus_a_ready), - .io_bus_d_data(readerFrontend_io_bus_d_data), - .io_bus_d_valid(readerFrontend_io_bus_d_valid), - .io_bus_d_ready(readerFrontend_io_bus_d_ready), - .io_dataIO_ready(readerFrontend_io_dataIO_ready), - .io_dataIO_valid(readerFrontend_io_dataIO_valid), - .io_dataIO_bits(readerFrontend_io_dataIO_bits), - .io_xfer_done(readerFrontend_io_xfer_done), - .io_xfer_address(readerFrontend_io_xfer_address), - .io_xfer_length(readerFrontend_io_xfer_length), - .io_xfer_valid(readerFrontend_io_xfer_valid) - ); - TLULWriterTL_TL_TL writerFrontend ( // @[DMATop.scala 42:30:@1391.4] - .clock(writerFrontend_clock), - .reset(writerFrontend_reset), - .io_bus_a_address(writerFrontend_io_bus_a_address), - .io_bus_a_data(writerFrontend_io_bus_a_data), - .io_bus_a_valid(writerFrontend_io_bus_a_valid), - .io_bus_a_ready(writerFrontend_io_bus_a_ready), - .io_bus_d_valid(writerFrontend_io_bus_d_valid), - .io_bus_d_ready(writerFrontend_io_bus_d_ready), - .io_dataIO_ready(writerFrontend_io_dataIO_ready), - .io_dataIO_valid(writerFrontend_io_dataIO_valid), - .io_dataIO_bits(writerFrontend_io_dataIO_bits), - .io_xfer_done(writerFrontend_io_xfer_done), - .io_xfer_address(writerFrontend_io_xfer_address), - .io_xfer_length(writerFrontend_io_xfer_length), - .io_xfer_valid(writerFrontend_io_xfer_valid) - ); - CSRTL_TL_TL csr ( // @[DMATop.scala 44:19:@1394.4] - .io_csr_0_dataOut(csr_io_csr_0_dataOut), - .io_csr_0_dataWrite(csr_io_csr_0_dataWrite), - .io_csr_0_dataIn(csr_io_csr_0_dataIn), - .io_csr_1_dataIn(csr_io_csr_1_dataIn), - .io_csr_2_dataOut(csr_io_csr_2_dataOut), - .io_csr_2_dataWrite(csr_io_csr_2_dataWrite), - .io_csr_2_dataIn(csr_io_csr_2_dataIn), - .io_csr_3_dataOut(csr_io_csr_3_dataOut), - .io_csr_3_dataWrite(csr_io_csr_3_dataWrite), - .io_csr_3_dataIn(csr_io_csr_3_dataIn), - .io_csr_4_dataOut(csr_io_csr_4_dataOut), - .io_csr_4_dataWrite(csr_io_csr_4_dataWrite), - .io_csr_4_dataIn(csr_io_csr_4_dataIn), - .io_csr_5_dataOut(csr_io_csr_5_dataOut), - .io_csr_5_dataWrite(csr_io_csr_5_dataWrite), - .io_csr_5_dataIn(csr_io_csr_5_dataIn), - .io_csr_6_dataOut(csr_io_csr_6_dataOut), - .io_csr_6_dataWrite(csr_io_csr_6_dataWrite), - .io_csr_6_dataIn(csr_io_csr_6_dataIn), - .io_csr_7_dataOut(csr_io_csr_7_dataOut), - .io_csr_7_dataWrite(csr_io_csr_7_dataWrite), - .io_csr_7_dataIn(csr_io_csr_7_dataIn), - .io_csr_8_dataOut(csr_io_csr_8_dataOut), - .io_csr_8_dataWrite(csr_io_csr_8_dataWrite), - .io_csr_8_dataIn(csr_io_csr_8_dataIn), - .io_csr_9_dataOut(csr_io_csr_9_dataOut), - .io_csr_9_dataWrite(csr_io_csr_9_dataWrite), - .io_csr_9_dataIn(csr_io_csr_9_dataIn), - .io_csr_10_dataOut(csr_io_csr_10_dataOut), - .io_csr_10_dataWrite(csr_io_csr_10_dataWrite), - .io_csr_10_dataIn(csr_io_csr_10_dataIn), - .io_csr_11_dataOut(csr_io_csr_11_dataOut), - .io_csr_11_dataWrite(csr_io_csr_11_dataWrite), - .io_csr_11_dataIn(csr_io_csr_11_dataIn), - .io_csr_12_dataIn(csr_io_csr_12_dataIn), - .io_csr_13_dataIn(csr_io_csr_13_dataIn), - .io_csr_14_dataOut(csr_io_csr_14_dataOut), - .io_csr_14_dataWrite(csr_io_csr_14_dataWrite), - .io_csr_14_dataIn(csr_io_csr_14_dataIn), - .io_csr_15_dataOut(csr_io_csr_15_dataOut), - .io_csr_15_dataWrite(csr_io_csr_15_dataWrite), - .io_csr_15_dataIn(csr_io_csr_15_dataIn), - .io_bus_addr(csr_io_bus_addr), - .io_bus_dataOut(csr_io_bus_dataOut), - .io_bus_dataIn(csr_io_bus_dataIn), - .io_bus_write(csr_io_bus_write), - .io_bus_read(csr_io_bus_read) - ); - WorkerCSRWrapperTL_TL_TL ctl ( // @[DMATop.scala 46:19:@1397.4] - .clock(ctl_clock), - .reset(ctl_reset), - .io_csr_0_dataOut(ctl_io_csr_0_dataOut), - .io_csr_0_dataWrite(ctl_io_csr_0_dataWrite), - .io_csr_0_dataIn(ctl_io_csr_0_dataIn), - .io_csr_1_dataIn(ctl_io_csr_1_dataIn), - .io_csr_2_dataOut(ctl_io_csr_2_dataOut), - .io_csr_2_dataWrite(ctl_io_csr_2_dataWrite), - .io_csr_2_dataIn(ctl_io_csr_2_dataIn), - .io_csr_3_dataOut(ctl_io_csr_3_dataOut), - .io_csr_3_dataWrite(ctl_io_csr_3_dataWrite), - .io_csr_3_dataIn(ctl_io_csr_3_dataIn), - .io_csr_4_dataOut(ctl_io_csr_4_dataOut), - .io_csr_4_dataWrite(ctl_io_csr_4_dataWrite), - .io_csr_4_dataIn(ctl_io_csr_4_dataIn), - .io_csr_5_dataOut(ctl_io_csr_5_dataOut), - .io_csr_5_dataWrite(ctl_io_csr_5_dataWrite), - .io_csr_5_dataIn(ctl_io_csr_5_dataIn), - .io_csr_6_dataOut(ctl_io_csr_6_dataOut), - .io_csr_6_dataWrite(ctl_io_csr_6_dataWrite), - .io_csr_6_dataIn(ctl_io_csr_6_dataIn), - .io_csr_7_dataOut(ctl_io_csr_7_dataOut), - .io_csr_7_dataWrite(ctl_io_csr_7_dataWrite), - .io_csr_7_dataIn(ctl_io_csr_7_dataIn), - .io_csr_8_dataOut(ctl_io_csr_8_dataOut), - .io_csr_8_dataWrite(ctl_io_csr_8_dataWrite), - .io_csr_8_dataIn(ctl_io_csr_8_dataIn), - .io_csr_9_dataOut(ctl_io_csr_9_dataOut), - .io_csr_9_dataWrite(ctl_io_csr_9_dataWrite), - .io_csr_9_dataIn(ctl_io_csr_9_dataIn), - .io_csr_10_dataOut(ctl_io_csr_10_dataOut), - .io_csr_10_dataWrite(ctl_io_csr_10_dataWrite), - .io_csr_10_dataIn(ctl_io_csr_10_dataIn), - .io_csr_11_dataOut(ctl_io_csr_11_dataOut), - .io_csr_11_dataWrite(ctl_io_csr_11_dataWrite), - .io_csr_11_dataIn(ctl_io_csr_11_dataIn), - .io_csr_12_dataIn(ctl_io_csr_12_dataIn), - .io_csr_13_dataIn(ctl_io_csr_13_dataIn), - .io_csr_14_dataOut(ctl_io_csr_14_dataOut), - .io_csr_14_dataWrite(ctl_io_csr_14_dataWrite), - .io_csr_14_dataIn(ctl_io_csr_14_dataIn), - .io_csr_15_dataOut(ctl_io_csr_15_dataOut), - .io_csr_15_dataWrite(ctl_io_csr_15_dataWrite), - .io_csr_15_dataIn(ctl_io_csr_15_dataIn), - .io_irq_readerDone(ctl_io_irq_readerDone), - .io_irq_writerDone(ctl_io_irq_writerDone), - .io_sync_readerSync(ctl_io_sync_readerSync), - .io_sync_writerSync(ctl_io_sync_writerSync), - .io_xferRead_done(ctl_io_xferRead_done), - .io_xferRead_address(ctl_io_xferRead_address), - .io_xferRead_length(ctl_io_xferRead_length), - .io_xferRead_valid(ctl_io_xferRead_valid), - .io_xferWrite_done(ctl_io_xferWrite_done), - .io_xferWrite_address(ctl_io_xferWrite_address), - .io_xferWrite_length(ctl_io_xferWrite_length), - .io_xferWrite_valid(ctl_io_xferWrite_valid) - ); - Queue queue ( // @[Decoupled.scala 294:21:@1400.4] - .clock(queue_clock), - .reset(queue_reset), - .io_enq_ready(queue_io_enq_ready), - .io_enq_valid(queue_io_enq_valid), - .io_enq_bits(queue_io_enq_bits), - .io_deq_ready(queue_io_deq_ready), - .io_deq_valid(queue_io_deq_valid), - .io_deq_bits(queue_io_deq_bits) - ); - assign io_control_a_ready = csrFrontend_io_ctl_a_ready; // @[DMATop.scala 52:22:@1419.4] - assign io_control_d_opcode = csrFrontend_io_ctl_d_opcode; // @[DMATop.scala 52:22:@1418.4] - assign io_control_d_param = 3'h0; // @[DMATop.scala 52:22:@1417.4] - assign io_control_d_size = csrFrontend_io_ctl_d_size; // @[DMATop.scala 52:22:@1416.4] - assign io_control_d_source = csrFrontend_io_ctl_d_source; // @[DMATop.scala 52:22:@1415.4] - assign io_control_d_sink = 1'h0; // @[DMATop.scala 52:22:@1414.4] - assign io_control_d_denied = 1'h0; // @[DMATop.scala 52:22:@1413.4] - assign io_control_d_data = csrFrontend_io_ctl_d_data; // @[DMATop.scala 52:22:@1412.4] - assign io_control_d_corrupt = 1'h0; // @[DMATop.scala 52:22:@1411.4] - assign io_control_d_valid = csrFrontend_io_ctl_d_valid; // @[DMATop.scala 52:22:@1410.4] - assign io_read_a_opcode = 3'h4; // @[DMATop.scala 58:11:@1527.4] - assign io_read_a_param = 3'h0; // @[DMATop.scala 58:11:@1526.4] - assign io_read_a_size = 2'h2; // @[DMATop.scala 58:11:@1525.4] - assign io_read_a_source = 10'h0; // @[DMATop.scala 58:11:@1524.4] - assign io_read_a_address = readerFrontend_io_bus_a_address; // @[DMATop.scala 58:11:@1523.4] - assign io_read_a_mask = 4'hf; // @[DMATop.scala 58:11:@1522.4] - assign io_read_a_data = 32'h0; // @[DMATop.scala 58:11:@1521.4] - assign io_read_a_corrupt = 1'h0; // @[DMATop.scala 58:11:@1520.4] - assign io_read_a_valid = readerFrontend_io_bus_a_valid; // @[DMATop.scala 58:11:@1519.4] - assign io_read_d_ready = readerFrontend_io_bus_d_ready; // @[DMATop.scala 58:11:@1508.4] - assign io_write_a_opcode = 3'h0; // @[DMATop.scala 59:12:@1547.4] - assign io_write_a_param = 3'h0; // @[DMATop.scala 59:12:@1546.4] - assign io_write_a_size = 2'h2; // @[DMATop.scala 59:12:@1545.4] - assign io_write_a_source = 10'h0; // @[DMATop.scala 59:12:@1544.4] - assign io_write_a_address = writerFrontend_io_bus_a_address; // @[DMATop.scala 59:12:@1543.4] - assign io_write_a_mask = 4'hf; // @[DMATop.scala 59:12:@1542.4] - assign io_write_a_data = writerFrontend_io_bus_a_data; // @[DMATop.scala 59:12:@1541.4] - assign io_write_a_corrupt = 1'h0; // @[DMATop.scala 59:12:@1540.4] - assign io_write_a_valid = writerFrontend_io_bus_a_valid; // @[DMATop.scala 59:12:@1539.4] - assign io_write_d_ready = writerFrontend_io_bus_d_ready; // @[DMATop.scala 59:12:@1528.4] - assign io_irq_readerDone = ctl_io_irq_readerDone; // @[DMATop.scala 61:10:@1549.4] - assign io_irq_writerDone = ctl_io_irq_writerDone; // @[DMATop.scala 61:10:@1548.4] - assign csrFrontend_clock = clock; // @[:@1386.4] - assign csrFrontend_reset = reset; // @[:@1387.4] - assign csrFrontend_io_ctl_a_opcode = io_control_a_opcode; // @[DMATop.scala 52:22:@1428.4] - assign csrFrontend_io_ctl_a_size = io_control_a_size; // @[DMATop.scala 52:22:@1426.4] - assign csrFrontend_io_ctl_a_source = io_control_a_source; // @[DMATop.scala 52:22:@1425.4] - assign csrFrontend_io_ctl_a_address = io_control_a_address; // @[DMATop.scala 52:22:@1424.4] - assign csrFrontend_io_ctl_a_data = io_control_a_data; // @[DMATop.scala 52:22:@1422.4] - assign csrFrontend_io_ctl_a_valid = io_control_a_valid; // @[DMATop.scala 52:22:@1420.4] - assign csrFrontend_io_ctl_d_ready = io_control_d_ready; // @[DMATop.scala 52:22:@1409.4] - assign csrFrontend_io_bus_dataIn = csr_io_bus_dataIn; // @[DMATop.scala 53:14:@1431.4] - assign readerFrontend_clock = clock; // @[:@1389.4] - assign readerFrontend_reset = reset; // @[:@1390.4] - assign readerFrontend_io_bus_a_ready = io_read_a_ready; // @[DMATop.scala 58:11:@1518.4] - assign readerFrontend_io_bus_d_data = io_read_d_data; // @[DMATop.scala 58:11:@1511.4] - assign readerFrontend_io_bus_d_valid = io_read_d_valid; // @[DMATop.scala 58:11:@1509.4] - assign readerFrontend_io_dataIO_ready = queue_io_enq_ready; // @[Decoupled.scala 297:17:@1405.4] - assign readerFrontend_io_xfer_address = ctl_io_xferRead_address; // @[DMATop.scala 55:26:@1501.4] - assign readerFrontend_io_xfer_length = ctl_io_xferRead_length; // @[DMATop.scala 55:26:@1500.4] - assign readerFrontend_io_xfer_valid = ctl_io_xferRead_valid; // @[DMATop.scala 55:26:@1499.4] - assign writerFrontend_clock = clock; // @[:@1392.4] - assign writerFrontend_reset = reset; // @[:@1393.4] - assign writerFrontend_io_bus_a_ready = io_write_a_ready; // @[DMATop.scala 59:12:@1538.4] - assign writerFrontend_io_bus_d_valid = io_write_d_valid; // @[DMATop.scala 59:12:@1529.4] - assign writerFrontend_io_dataIO_valid = queue_io_deq_valid; // @[DMATop.scala 50:9:@1407.4] - assign writerFrontend_io_dataIO_bits = queue_io_deq_bits; // @[DMATop.scala 50:9:@1406.4] - assign writerFrontend_io_xfer_address = ctl_io_xferWrite_address; // @[DMATop.scala 56:26:@1506.4] - assign writerFrontend_io_xfer_length = ctl_io_xferWrite_length; // @[DMATop.scala 56:26:@1505.4] - assign writerFrontend_io_xfer_valid = ctl_io_xferWrite_valid; // @[DMATop.scala 56:26:@1504.4] - assign csr_io_csr_0_dataIn = ctl_io_csr_0_dataIn; // @[DMATop.scala 54:14:@1434.4] - assign csr_io_csr_1_dataIn = ctl_io_csr_1_dataIn; // @[DMATop.scala 54:14:@1438.4] - assign csr_io_csr_2_dataIn = ctl_io_csr_2_dataIn; // @[DMATop.scala 54:14:@1442.4] - assign csr_io_csr_3_dataIn = ctl_io_csr_3_dataIn; // @[DMATop.scala 54:14:@1446.4] - assign csr_io_csr_4_dataIn = ctl_io_csr_4_dataIn; // @[DMATop.scala 54:14:@1450.4] - assign csr_io_csr_5_dataIn = ctl_io_csr_5_dataIn; // @[DMATop.scala 54:14:@1454.4] - assign csr_io_csr_6_dataIn = ctl_io_csr_6_dataIn; // @[DMATop.scala 54:14:@1458.4] - assign csr_io_csr_7_dataIn = ctl_io_csr_7_dataIn; // @[DMATop.scala 54:14:@1462.4] - assign csr_io_csr_8_dataIn = ctl_io_csr_8_dataIn; // @[DMATop.scala 54:14:@1466.4] - assign csr_io_csr_9_dataIn = ctl_io_csr_9_dataIn; // @[DMATop.scala 54:14:@1470.4] - assign csr_io_csr_10_dataIn = ctl_io_csr_10_dataIn; // @[DMATop.scala 54:14:@1474.4] - assign csr_io_csr_11_dataIn = ctl_io_csr_11_dataIn; // @[DMATop.scala 54:14:@1478.4] - assign csr_io_csr_12_dataIn = ctl_io_csr_12_dataIn; // @[DMATop.scala 54:14:@1482.4] - assign csr_io_csr_13_dataIn = ctl_io_csr_13_dataIn; // @[DMATop.scala 54:14:@1486.4] - assign csr_io_csr_14_dataIn = ctl_io_csr_14_dataIn; // @[DMATop.scala 54:14:@1490.4] - assign csr_io_csr_15_dataIn = ctl_io_csr_15_dataIn; // @[DMATop.scala 54:14:@1494.4] - assign csr_io_bus_addr = csrFrontend_io_bus_addr; // @[DMATop.scala 53:14:@1433.4] - assign csr_io_bus_dataOut = csrFrontend_io_bus_dataOut; // @[DMATop.scala 53:14:@1432.4] - assign csr_io_bus_write = csrFrontend_io_bus_write; // @[DMATop.scala 53:14:@1430.4] - assign csr_io_bus_read = csrFrontend_io_bus_read; // @[DMATop.scala 53:14:@1429.4] - assign ctl_clock = clock; // @[:@1398.4] - assign ctl_reset = reset; // @[:@1399.4] - assign ctl_io_csr_0_dataOut = csr_io_csr_0_dataOut; // @[DMATop.scala 54:14:@1436.4] - assign ctl_io_csr_0_dataWrite = csr_io_csr_0_dataWrite; // @[DMATop.scala 54:14:@1435.4] - assign ctl_io_csr_2_dataOut = csr_io_csr_2_dataOut; // @[DMATop.scala 54:14:@1444.4] - assign ctl_io_csr_2_dataWrite = csr_io_csr_2_dataWrite; // @[DMATop.scala 54:14:@1443.4] - assign ctl_io_csr_3_dataOut = csr_io_csr_3_dataOut; // @[DMATop.scala 54:14:@1448.4] - assign ctl_io_csr_3_dataWrite = csr_io_csr_3_dataWrite; // @[DMATop.scala 54:14:@1447.4] - assign ctl_io_csr_4_dataOut = csr_io_csr_4_dataOut; // @[DMATop.scala 54:14:@1452.4] - assign ctl_io_csr_4_dataWrite = csr_io_csr_4_dataWrite; // @[DMATop.scala 54:14:@1451.4] - assign ctl_io_csr_5_dataOut = csr_io_csr_5_dataOut; // @[DMATop.scala 54:14:@1456.4] - assign ctl_io_csr_5_dataWrite = csr_io_csr_5_dataWrite; // @[DMATop.scala 54:14:@1455.4] - assign ctl_io_csr_6_dataOut = csr_io_csr_6_dataOut; // @[DMATop.scala 54:14:@1460.4] - assign ctl_io_csr_6_dataWrite = csr_io_csr_6_dataWrite; // @[DMATop.scala 54:14:@1459.4] - assign ctl_io_csr_7_dataOut = csr_io_csr_7_dataOut; // @[DMATop.scala 54:14:@1464.4] - assign ctl_io_csr_7_dataWrite = csr_io_csr_7_dataWrite; // @[DMATop.scala 54:14:@1463.4] - assign ctl_io_csr_8_dataOut = csr_io_csr_8_dataOut; // @[DMATop.scala 54:14:@1468.4] - assign ctl_io_csr_8_dataWrite = csr_io_csr_8_dataWrite; // @[DMATop.scala 54:14:@1467.4] - assign ctl_io_csr_9_dataOut = csr_io_csr_9_dataOut; // @[DMATop.scala 54:14:@1472.4] - assign ctl_io_csr_9_dataWrite = csr_io_csr_9_dataWrite; // @[DMATop.scala 54:14:@1471.4] - assign ctl_io_csr_10_dataOut = csr_io_csr_10_dataOut; // @[DMATop.scala 54:14:@1476.4] - assign ctl_io_csr_10_dataWrite = csr_io_csr_10_dataWrite; // @[DMATop.scala 54:14:@1475.4] - assign ctl_io_csr_11_dataOut = csr_io_csr_11_dataOut; // @[DMATop.scala 54:14:@1480.4] - assign ctl_io_csr_11_dataWrite = csr_io_csr_11_dataWrite; // @[DMATop.scala 54:14:@1479.4] - assign ctl_io_csr_14_dataOut = csr_io_csr_14_dataOut; // @[DMATop.scala 54:14:@1492.4] - assign ctl_io_csr_14_dataWrite = csr_io_csr_14_dataWrite; // @[DMATop.scala 54:14:@1491.4] - assign ctl_io_csr_15_dataOut = csr_io_csr_15_dataOut; // @[DMATop.scala 54:14:@1496.4] - assign ctl_io_csr_15_dataWrite = csr_io_csr_15_dataWrite; // @[DMATop.scala 54:14:@1495.4] - assign ctl_io_sync_readerSync = io_sync_readerSync; // @[DMATop.scala 62:11:@1551.4] - assign ctl_io_sync_writerSync = io_sync_writerSync; // @[DMATop.scala 62:11:@1550.4] - assign ctl_io_xferRead_done = readerFrontend_io_xfer_done; // @[DMATop.scala 55:26:@1502.4] - assign ctl_io_xferWrite_done = writerFrontend_io_xfer_done; // @[DMATop.scala 56:26:@1507.4] - assign queue_clock = clock; // @[:@1401.4] - assign queue_reset = reset; // @[:@1402.4] - assign queue_io_enq_valid = readerFrontend_io_dataIO_valid; // @[Decoupled.scala 295:22:@1403.4] - assign queue_io_enq_bits = readerFrontend_io_dataIO_bits; // @[Decoupled.scala 296:21:@1404.4] - assign queue_io_deq_ready = writerFrontend_io_dataIO_ready; // @[DMATop.scala 50:9:@1408.4] -endmodule
diff --git a/hw/top_matcha/ip/dma/rtl/dma.sv b/hw/top_matcha/ip/dma/rtl/dma.sv index f0b32d4..179d9e7 100644 --- a/hw/top_matcha/ip/dma/rtl/dma.sv +++ b/hw/top_matcha/ip/dma/rtl/dma.sv
@@ -135,7 +135,7 @@ }; - DMATopTL_TL_TL u_fastvdma ( + DMATop u_fastvdma ( .clock ( clk_i ), .reset ( ~rst_ni ),