X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fmain%2Fscala%2Fdevices%2Fxilinxvc707pciex1%2FXilinxVC707PCIeX1.scala;h=9bb0c05ddd052296c786b71c95a3aa660f387020;hb=0ed21ba46590a23434d7ee55fa47bda3e114b4cd;hp=b82186c31c34594233460be568f2f31f4f4b3cfb;hpb=d61d86e08417ae182e7f2e8aabebc193941ce31a;p=sifive-blocks.git diff --git a/src/main/scala/devices/xilinxvc707pciex1/XilinxVC707PCIeX1.scala b/src/main/scala/devices/xilinxvc707pciex1/XilinxVC707PCIeX1.scala index b82186c..9bb0c05 100644 --- a/src/main/scala/devices/xilinxvc707pciex1/XilinxVC707PCIeX1.scala +++ b/src/main/scala/devices/xilinxvc707pciex1/XilinxVC707PCIeX1.scala @@ -20,15 +20,39 @@ class XilinxVC707PCIeX1IO extends Bundle with VC707AXIToPCIeX1IOSerial } class XilinxVC707PCIeX1(implicit p: Parameters) extends LazyModule { - val slave = TLInputNode() - val control = TLInputNode() - val master = TLOutputNode() - val intnode = IntSourceNode(1) + val slave = TLAsyncInputNode() + val control = TLAsyncInputNode() + val master = TLAsyncOutputNode() + val intnode = IntOutputNode() val axi_to_pcie_x1 = LazyModule(new VC707AXIToPCIeX1) - axi_to_pcie_x1.slave := AXI4Buffer()(TLToAXI4(idBits=4)(slave)) - axi_to_pcie_x1.control := AXI4Buffer()(AXI4Fragmenter(lite=true, maxInFlight=4)(TLToAXI4(idBits=0)(control))) - master := TLWidthWidget(8)(AXI4ToTL()(AXI4Fragmenter()(axi_to_pcie_x1.master))) + + axi_to_pcie_x1.slave := + AXI4Buffer()( + AXI4UserYanker()( + AXI4Deinterleaver(p(coreplex.CacheBlockBytes))( + AXI4IdIndexer(idBits=4)( + TLToAXI4(beatBytes=8)( + TLAsyncCrossingSink()( + slave)))))) + + axi_to_pcie_x1.control := + AXI4Buffer()( + AXI4UserYanker()( + TLToAXI4(beatBytes=4)( + TLFragmenter(4, p(coreplex.CacheBlockBytes))( + TLAsyncCrossingSink()( + control))))) + + master := + TLAsyncCrossingSource()( + TLWidthWidget(8)( + AXI4ToTL()( + AXI4UserYanker(capMaxFlight=Some(8))( + AXI4Fragmenter()( + axi_to_pcie_x1.master))))) + + intnode := axi_to_pcie_x1.intnode lazy val module = new LazyModuleImp(this) { val io = new Bundle { @@ -40,7 +64,6 @@ class XilinxVC707PCIeX1(implicit p: Parameters) extends LazyModule { } io.port <> axi_to_pcie_x1.module.io.port - io.interrupt(0)(0) := axi_to_pcie_x1.module.io.interrupt_out //PCIe Reference Clock val ibufds_gte2 = Module(new IBUFDS_GTE2)