xilinxvc707pciex1: push to a dedicated clock domain
This commit is contained in:
parent
b3f9607512
commit
0ed21ba465
@ -20,9 +20,9 @@ class XilinxVC707PCIeX1IO extends Bundle with VC707AXIToPCIeX1IOSerial
|
|||||||
}
|
}
|
||||||
|
|
||||||
class XilinxVC707PCIeX1(implicit p: Parameters) extends LazyModule {
|
class XilinxVC707PCIeX1(implicit p: Parameters) extends LazyModule {
|
||||||
val slave = TLInputNode()
|
val slave = TLAsyncInputNode()
|
||||||
val control = TLInputNode()
|
val control = TLAsyncInputNode()
|
||||||
val master = TLOutputNode()
|
val master = TLAsyncOutputNode()
|
||||||
val intnode = IntOutputNode()
|
val intnode = IntOutputNode()
|
||||||
|
|
||||||
val axi_to_pcie_x1 = LazyModule(new VC707AXIToPCIeX1)
|
val axi_to_pcie_x1 = LazyModule(new VC707AXIToPCIeX1)
|
||||||
@ -33,21 +33,24 @@ class XilinxVC707PCIeX1(implicit p: Parameters) extends LazyModule {
|
|||||||
AXI4Deinterleaver(p(coreplex.CacheBlockBytes))(
|
AXI4Deinterleaver(p(coreplex.CacheBlockBytes))(
|
||||||
AXI4IdIndexer(idBits=4)(
|
AXI4IdIndexer(idBits=4)(
|
||||||
TLToAXI4(beatBytes=8)(
|
TLToAXI4(beatBytes=8)(
|
||||||
slave)))))
|
TLAsyncCrossingSink()(
|
||||||
|
slave))))))
|
||||||
|
|
||||||
axi_to_pcie_x1.control :=
|
axi_to_pcie_x1.control :=
|
||||||
AXI4Buffer()(
|
AXI4Buffer()(
|
||||||
AXI4UserYanker()(
|
AXI4UserYanker()(
|
||||||
TLToAXI4(beatBytes=4)(
|
TLToAXI4(beatBytes=4)(
|
||||||
TLFragmenter(4, p(coreplex.CacheBlockBytes))(
|
TLFragmenter(4, p(coreplex.CacheBlockBytes))(
|
||||||
control))))
|
TLAsyncCrossingSink()(
|
||||||
|
control)))))
|
||||||
|
|
||||||
master :=
|
master :=
|
||||||
|
TLAsyncCrossingSource()(
|
||||||
TLWidthWidget(8)(
|
TLWidthWidget(8)(
|
||||||
AXI4ToTL()(
|
AXI4ToTL()(
|
||||||
AXI4UserYanker(capMaxFlight=Some(8))(
|
AXI4UserYanker(capMaxFlight=Some(8))(
|
||||||
AXI4Fragmenter()(
|
AXI4Fragmenter()(
|
||||||
axi_to_pcie_x1.master))))
|
axi_to_pcie_x1.master)))))
|
||||||
|
|
||||||
intnode := axi_to_pcie_x1.intnode
|
intnode := axi_to_pcie_x1.intnode
|
||||||
|
|
||||||
|
@ -8,15 +8,18 @@ import rocketchip.{
|
|||||||
HasTopLevelNetworksModule,
|
HasTopLevelNetworksModule,
|
||||||
HasTopLevelNetworksBundle
|
HasTopLevelNetworksBundle
|
||||||
}
|
}
|
||||||
import uncore.tilelink2.TLWidthWidget
|
import uncore.tilelink2._
|
||||||
|
|
||||||
trait HasPeripheryXilinxVC707PCIeX1 extends HasTopLevelNetworks {
|
trait HasPeripheryXilinxVC707PCIeX1 extends HasTopLevelNetworks {
|
||||||
|
|
||||||
val xilinxvc707pcie = LazyModule(new XilinxVC707PCIeX1)
|
val xilinxvc707pcie = LazyModule(new XilinxVC707PCIeX1)
|
||||||
fsb.node := xilinxvc707pcie.master
|
private val intXing = LazyModule(new IntXing)
|
||||||
xilinxvc707pcie.slave := TLWidthWidget(socBusConfig.beatBytes)(socBus.node)
|
|
||||||
xilinxvc707pcie.control := TLWidthWidget(socBusConfig.beatBytes)(socBus.node)
|
fsb.node := TLAsyncCrossingSink()(xilinxvc707pcie.master)
|
||||||
intBus.intnode := xilinxvc707pcie.intnode
|
xilinxvc707pcie.slave := TLAsyncCrossingSource()(TLWidthWidget(socBusConfig.beatBytes)(socBus.node))
|
||||||
|
xilinxvc707pcie.control := TLAsyncCrossingSource()(TLWidthWidget(socBusConfig.beatBytes)(socBus.node))
|
||||||
|
intBus.intnode := intXing.intnode
|
||||||
|
intXing.intnode := xilinxvc707pcie.intnode
|
||||||
}
|
}
|
||||||
|
|
||||||
trait HasPeripheryXilinxVC707PCIeX1Bundle extends HasTopLevelNetworksBundle {
|
trait HasPeripheryXilinxVC707PCIeX1Bundle extends HasTopLevelNetworksBundle {
|
||||||
@ -28,4 +31,7 @@ trait HasPeripheryXilinxVC707PCIeX1Module extends HasTopLevelNetworksModule {
|
|||||||
val io: HasPeripheryXilinxVC707PCIeX1Bundle
|
val io: HasPeripheryXilinxVC707PCIeX1Bundle
|
||||||
|
|
||||||
io.xilinxvc707pcie <> outer.xilinxvc707pcie.module.io.port
|
io.xilinxvc707pcie <> outer.xilinxvc707pcie.module.io.port
|
||||||
|
|
||||||
|
outer.xilinxvc707pcie.module.clock := outer.xilinxvc707pcie.module.io.port.axi_aclk_out
|
||||||
|
outer.xilinxvc707pcie.module.reset := ~io.xilinxvc707pcie.axi_aresetn
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user