import Chisel._
import diplomacy.LazyModule
-import rocketchip.{L2Crossbar,L2CrossbarModule,L2CrossbarBundle}
-import uncore.tilelink2.TLWidthWidget
+import rocketchip.{
+ HasTopLevelNetworks,
+ HasTopLevelNetworksModule,
+ HasTopLevelNetworksBundle
+}
+import uncore.tilelink2._
-trait PeripheryXilinxVC707PCIeX1 extends L2Crossbar {
+trait HasPeripheryXilinxVC707PCIeX1 extends HasTopLevelNetworks {
val xilinxvc707pcie = LazyModule(new XilinxVC707PCIeX1)
- l2.node := xilinxvc707pcie.master
- xilinxvc707pcie.slave := TLWidthWidget(socBusConfig.beatBytes)(socBus.node)
- xilinxvc707pcie.control := TLWidthWidget(socBusConfig.beatBytes)(socBus.node)
- intBus.intnode := xilinxvc707pcie.intnode
+ private val intXing = LazyModule(new IntXing)
+
+ fsb.node := TLAsyncCrossingSink()(xilinxvc707pcie.master)
+ 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 PeripheryXilinxVC707PCIeX1Bundle extends L2CrossbarBundle {
+trait HasPeripheryXilinxVC707PCIeX1Bundle extends HasTopLevelNetworksBundle {
val xilinxvc707pcie = new XilinxVC707PCIeX1IO
}
-trait PeripheryXilinxVC707PCIeX1Module extends L2CrossbarModule {
- val outer: PeripheryXilinxVC707PCIeX1
- val io: PeripheryXilinxVC707PCIeX1Bundle
+trait HasPeripheryXilinxVC707PCIeX1Module extends HasTopLevelNetworksModule {
+ val outer: HasPeripheryXilinxVC707PCIeX1
+ val io: HasPeripheryXilinxVC707PCIeX1Bundle
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
}