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 ),