aboutsummaryrefslogtreecommitdiffstats
path: root/fpga/usrp3/lib/vivado_ipi/interfaces
diff options
context:
space:
mode:
Diffstat (limited to 'fpga/usrp3/lib/vivado_ipi/interfaces')
-rw-r--r--fpga/usrp3/lib/vivado_ipi/interfaces/fifo_rd.xml13
-rw-r--r--fpga/usrp3/lib/vivado_ipi/interfaces/fifo_rd_rtl.xml69
-rw-r--r--fpga/usrp3/lib/vivado_ipi/interfaces/fifo_wr.xml13
-rw-r--r--fpga/usrp3/lib/vivado_ipi/interfaces/fifo_wr_rtl.xml88
-rw-r--r--fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_pll.xml11
-rw-r--r--fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_pll_rtl.xml46
-rw-r--r--fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_qpll.xml11
-rw-r--r--fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_qpll_rtl.xml46
-rw-r--r--fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_rx.xml11
-rw-r--r--fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_rx_ksig.xml11
-rw-r--r--fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_rx_ksig_rtl.xml85
-rw-r--r--fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_rx_rtl.xml409
-rw-r--r--fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_tx.xml11
-rw-r--r--fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_tx_rtl.xml379
-rw-r--r--fpga/usrp3/lib/vivado_ipi/interfaces/if_xcvr_ch.xml11
-rw-r--r--fpga/usrp3/lib/vivado_ipi/interfaces/if_xcvr_ch_rtl.xml235
-rw-r--r--fpga/usrp3/lib/vivado_ipi/interfaces/if_xcvr_cm.xml11
-rw-r--r--fpga/usrp3/lib/vivado_ipi/interfaces/if_xcvr_cm_rtl.xml115
18 files changed, 1575 insertions, 0 deletions
diff --git a/fpga/usrp3/lib/vivado_ipi/interfaces/fifo_rd.xml b/fpga/usrp3/lib/vivado_ipi/interfaces/fifo_rd.xml
new file mode 100644
index 000000000..66d44bdbd
--- /dev/null
+++ b/fpga/usrp3/lib/vivado_ipi/interfaces/fifo_rd.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<spirit:busDefinition xmlns:xilinx="http://www.xilinx.com" xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <spirit:vendor>analog.com</spirit:vendor>
+ <spirit:library>interface</spirit:library>
+ <spirit:name>fifo_rd</spirit:name>
+ <spirit:version>1.0</spirit:version>
+ <spirit:directConnection>false</spirit:directConnection>
+ <spirit:isAddressable>false</spirit:isAddressable>
+ <spirit:extends spirit:vendor="xilinx.com" spirit:library="interface" spirit:name="fifo_read" spirit:version="1.0"/>
+ <spirit:maxMasters>1</spirit:maxMasters>
+ <spirit:maxSlaves>1</spirit:maxSlaves>
+ <spirit:description>FIFO Read Interface</spirit:description>
+</spirit:busDefinition>
diff --git a/fpga/usrp3/lib/vivado_ipi/interfaces/fifo_rd_rtl.xml b/fpga/usrp3/lib/vivado_ipi/interfaces/fifo_rd_rtl.xml
new file mode 100644
index 000000000..3c15f7203
--- /dev/null
+++ b/fpga/usrp3/lib/vivado_ipi/interfaces/fifo_rd_rtl.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<spirit:abstractionDefinition xmlns:xilinx="http://www.xilinx.com" xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <spirit:vendor>analog.com</spirit:vendor>
+ <spirit:library>interface</spirit:library>
+ <spirit:name>fifo_rd_rtl</spirit:name>
+ <spirit:version>1.0</spirit:version>
+ <spirit:busType spirit:vendor="analog.com" spirit:library="interface" spirit:name="fifo_rd" spirit:version="1.0"/>
+ <spirit:ports>
+ <spirit:port>
+ <spirit:logicalName>DATA</spirit:logicalName>
+ <spirit:description>FIFO Read Data</spirit:description>
+ <spirit:wire>
+ <spirit:qualifier>
+ <spirit:isData>true</spirit:isData>
+ </spirit:qualifier>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onSlave>
+ <spirit:defaultValue>0</spirit:defaultValue>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>EN</spirit:logicalName>
+ <spirit:description>FIFO Read Enable</spirit:description>
+ <spirit:wire>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onSlave>
+ <spirit:defaultValue>0</spirit:defaultValue>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>UNDERFLOW</spirit:logicalName>
+ <spirit:wire>
+ <spirit:onMaster>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:width>1</spirit:width>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>VALID</spirit:logicalName>
+ <spirit:wire>
+ <spirit:onMaster>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ </spirit:ports>
+</spirit:abstractionDefinition>
diff --git a/fpga/usrp3/lib/vivado_ipi/interfaces/fifo_wr.xml b/fpga/usrp3/lib/vivado_ipi/interfaces/fifo_wr.xml
new file mode 100644
index 000000000..8e1f4d781
--- /dev/null
+++ b/fpga/usrp3/lib/vivado_ipi/interfaces/fifo_wr.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<spirit:busDefinition xmlns:xilinx="http://www.xilinx.com" xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <spirit:vendor>analog.com</spirit:vendor>
+ <spirit:library>interface</spirit:library>
+ <spirit:name>fifo_wr</spirit:name>
+ <spirit:version>1.0</spirit:version>
+ <spirit:directConnection>false</spirit:directConnection>
+ <spirit:isAddressable>false</spirit:isAddressable>
+ <spirit:extends spirit:vendor="xilinx.com" spirit:library="interface" spirit:name="fifo_write" spirit:version="1.0"/>
+ <spirit:maxMasters>1</spirit:maxMasters>
+ <spirit:maxSlaves>1</spirit:maxSlaves>
+ <spirit:description>FIFO Write Interface</spirit:description>
+</spirit:busDefinition>
diff --git a/fpga/usrp3/lib/vivado_ipi/interfaces/fifo_wr_rtl.xml b/fpga/usrp3/lib/vivado_ipi/interfaces/fifo_wr_rtl.xml
new file mode 100644
index 000000000..49509dbfa
--- /dev/null
+++ b/fpga/usrp3/lib/vivado_ipi/interfaces/fifo_wr_rtl.xml
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<spirit:abstractionDefinition xmlns:xilinx="http://www.xilinx.com" xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <spirit:vendor>analog.com</spirit:vendor>
+ <spirit:library>interface</spirit:library>
+ <spirit:name>fifo_wr_rtl</spirit:name>
+ <spirit:version>1.0</spirit:version>
+ <spirit:busType spirit:vendor="analog.com" spirit:library="interface" spirit:name="fifo_wr" spirit:version="1.0"/>
+ <spirit:ports>
+ <spirit:port>
+ <spirit:logicalName>DATA</spirit:logicalName>
+ <spirit:description/>
+ <spirit:wire>
+ <spirit:qualifier>
+ <spirit:isData>true</spirit:isData>
+ </spirit:qualifier>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onSlave>
+ <spirit:defaultValue>0</spirit:defaultValue>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>EN</spirit:logicalName>
+ <spirit:description/>
+ <spirit:wire>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onSlave>
+ <spirit:defaultValue>0</spirit:defaultValue>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>OVERFLOW</spirit:logicalName>
+ <spirit:description/>
+ <spirit:wire>
+ <spirit:onMaster>
+ <spirit:presence>optional</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>optional</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onSlave>
+ <spirit:defaultValue>0</spirit:defaultValue>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>SYNC</spirit:logicalName>
+ <spirit:description/>
+ <spirit:wire>
+ <spirit:onMaster>
+ <spirit:presence>optional</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>optional</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onSlave>
+ <spirit:defaultValue>0</spirit:defaultValue>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>XFER_REQ</spirit:logicalName>
+ <spirit:wire>
+ <spirit:onMaster>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onMaster>
+ </spirit:wire>
+ </spirit:port>
+ </spirit:ports>
+</spirit:abstractionDefinition>
diff --git a/fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_pll.xml b/fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_pll.xml
new file mode 100644
index 000000000..583c1f242
--- /dev/null
+++ b/fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_pll.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<spirit:busDefinition xmlns:xilinx="http://www.xilinx.com" xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <spirit:vendor>ADI</spirit:vendor>
+ <spirit:library>user</spirit:library>
+ <spirit:name>if_gt_pll</spirit:name>
+ <spirit:version>1.0</spirit:version>
+ <spirit:directConnection>false</spirit:directConnection>
+ <spirit:isAddressable>false</spirit:isAddressable>
+ <spirit:maxMasters>1</spirit:maxMasters>
+ <spirit:maxSlaves>1</spirit:maxSlaves>
+</spirit:busDefinition>
diff --git a/fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_pll_rtl.xml b/fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_pll_rtl.xml
new file mode 100644
index 000000000..58d14d2f7
--- /dev/null
+++ b/fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_pll_rtl.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<spirit:abstractionDefinition xmlns:xilinx="http://www.xilinx.com" xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <spirit:vendor>ADI</spirit:vendor>
+ <spirit:library>user</spirit:library>
+ <spirit:name>if_gt_pll_rtl</spirit:name>
+ <spirit:version>1.0</spirit:version>
+ <spirit:busType spirit:vendor="ADI" spirit:library="user" spirit:name="if_gt_pll" spirit:version="1.0"/>
+ <spirit:ports>
+ <spirit:port>
+ <spirit:logicalName>cpll_rst_m</spirit:logicalName>
+ <spirit:wire>
+ <spirit:qualifier>
+ <spirit:isReset>true</spirit:isReset>
+ </spirit:qualifier>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>cpll_ref_clk_in</spirit:logicalName>
+ <spirit:wire>
+ <spirit:qualifier>
+ <spirit:isClock>true</spirit:isClock>
+ </spirit:qualifier>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ </spirit:ports>
+</spirit:abstractionDefinition>
diff --git a/fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_qpll.xml b/fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_qpll.xml
new file mode 100644
index 000000000..12e43a4c0
--- /dev/null
+++ b/fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_qpll.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<spirit:busDefinition xmlns:xilinx="http://www.xilinx.com" xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <spirit:vendor>ADI</spirit:vendor>
+ <spirit:library>user</spirit:library>
+ <spirit:name>if_gt_qpll</spirit:name>
+ <spirit:version>1.0</spirit:version>
+ <spirit:directConnection>false</spirit:directConnection>
+ <spirit:isAddressable>false</spirit:isAddressable>
+ <spirit:maxMasters>1</spirit:maxMasters>
+ <spirit:maxSlaves>1</spirit:maxSlaves>
+</spirit:busDefinition>
diff --git a/fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_qpll_rtl.xml b/fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_qpll_rtl.xml
new file mode 100644
index 000000000..486cb8b61
--- /dev/null
+++ b/fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_qpll_rtl.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<spirit:abstractionDefinition xmlns:xilinx="http://www.xilinx.com" xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <spirit:vendor>ADI</spirit:vendor>
+ <spirit:library>user</spirit:library>
+ <spirit:name>if_gt_qpll_rtl</spirit:name>
+ <spirit:version>1.0</spirit:version>
+ <spirit:busType spirit:vendor="ADI" spirit:library="user" spirit:name="if_gt_qpll" spirit:version="1.0"/>
+ <spirit:ports>
+ <spirit:port>
+ <spirit:logicalName>qpll_rst</spirit:logicalName>
+ <spirit:wire>
+ <spirit:qualifier>
+ <spirit:isReset>true</spirit:isReset>
+ </spirit:qualifier>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>qpll_ref_clk</spirit:logicalName>
+ <spirit:wire>
+ <spirit:qualifier>
+ <spirit:isClock>true</spirit:isClock>
+ </spirit:qualifier>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ </spirit:ports>
+</spirit:abstractionDefinition>
diff --git a/fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_rx.xml b/fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_rx.xml
new file mode 100644
index 000000000..24e435073
--- /dev/null
+++ b/fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_rx.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<spirit:busDefinition xmlns:xilinx="http://www.xilinx.com" xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <spirit:vendor>ADI</spirit:vendor>
+ <spirit:library>user</spirit:library>
+ <spirit:name>if_gt_rx</spirit:name>
+ <spirit:version>1.0</spirit:version>
+ <spirit:directConnection>false</spirit:directConnection>
+ <spirit:isAddressable>false</spirit:isAddressable>
+ <spirit:maxMasters>1</spirit:maxMasters>
+ <spirit:maxSlaves>1</spirit:maxSlaves>
+</spirit:busDefinition>
diff --git a/fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_rx_ksig.xml b/fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_rx_ksig.xml
new file mode 100644
index 000000000..a8cae5ade
--- /dev/null
+++ b/fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_rx_ksig.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<spirit:busDefinition xmlns:xilinx="http://www.xilinx.com" xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <spirit:vendor>ADI</spirit:vendor>
+ <spirit:library>user</spirit:library>
+ <spirit:name>if_gt_rx_ksig</spirit:name>
+ <spirit:version>1.0</spirit:version>
+ <spirit:directConnection>false</spirit:directConnection>
+ <spirit:isAddressable>false</spirit:isAddressable>
+ <spirit:maxMasters>1</spirit:maxMasters>
+ <spirit:maxSlaves>1</spirit:maxSlaves>
+</spirit:busDefinition>
diff --git a/fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_rx_ksig_rtl.xml b/fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_rx_ksig_rtl.xml
new file mode 100644
index 000000000..4e09e7982
--- /dev/null
+++ b/fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_rx_ksig_rtl.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<spirit:abstractionDefinition xmlns:xilinx="http://www.xilinx.com" xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <spirit:vendor>ADI</spirit:vendor>
+ <spirit:library>user</spirit:library>
+ <spirit:name>if_gt_rx_ksig_rtl</spirit:name>
+ <spirit:version>1.0</spirit:version>
+ <spirit:busType spirit:vendor="ADI" spirit:library="user" spirit:name="if_gt_rx_ksig" spirit:version="1.0"/>
+ <spirit:ports>
+ <spirit:port>
+ <spirit:logicalName>rx_gt_ilas_f</spirit:logicalName>
+ <spirit:wire>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>4</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>4</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>rx_gt_ilas_q</spirit:logicalName>
+ <spirit:wire>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>4</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>4</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>rx_gt_ilas_a</spirit:logicalName>
+ <spirit:wire>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>4</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>4</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>rx_gt_ilas_r</spirit:logicalName>
+ <spirit:wire>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>4</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>4</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>rx_gt_cgs_k</spirit:logicalName>
+ <spirit:wire>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>4</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>4</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ </spirit:ports>
+</spirit:abstractionDefinition>
diff --git a/fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_rx_rtl.xml b/fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_rx_rtl.xml
new file mode 100644
index 000000000..e2e49d1c3
--- /dev/null
+++ b/fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_rx_rtl.xml
@@ -0,0 +1,409 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<spirit:abstractionDefinition xmlns:xilinx="http://www.xilinx.com" xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <spirit:vendor>ADI</spirit:vendor>
+ <spirit:library>user</spirit:library>
+ <spirit:name>if_gt_rx_rtl</spirit:name>
+ <spirit:version>1.0</spirit:version>
+ <spirit:busType spirit:vendor="ADI" spirit:library="user" spirit:name="if_gt_rx" spirit:version="1.0"/>
+ <spirit:ports>
+ <spirit:port>
+ <spirit:logicalName>rx_p</spirit:logicalName>
+ <spirit:wire>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>rx_n</spirit:logicalName>
+ <spirit:wire>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>rx_rst</spirit:logicalName>
+ <spirit:wire>
+ <spirit:qualifier>
+ <spirit:isReset>true</spirit:isReset>
+ </spirit:qualifier>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>rx_rst_m</spirit:logicalName>
+ <spirit:wire>
+ <spirit:qualifier>
+ <spirit:isReset>true</spirit:isReset>
+ </spirit:qualifier>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>rx_pll_rst</spirit:logicalName>
+ <spirit:wire>
+ <spirit:qualifier>
+ <spirit:isReset>true</spirit:isReset>
+ </spirit:qualifier>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>rx_gt_rst</spirit:logicalName>
+ <spirit:wire>
+ <spirit:qualifier>
+ <spirit:isReset>true</spirit:isReset>
+ </spirit:qualifier>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>rx_gt_rst_m</spirit:logicalName>
+ <spirit:wire>
+ <spirit:qualifier>
+ <spirit:isReset>true</spirit:isReset>
+ </spirit:qualifier>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>rx_pll_locked</spirit:logicalName>
+ <spirit:wire>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>rx_pll_locked_m</spirit:logicalName>
+ <spirit:wire>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>rx_user_ready</spirit:logicalName>
+ <spirit:wire>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>rx_user_ready_m</spirit:logicalName>
+ <spirit:wire>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>rx_rst_done</spirit:logicalName>
+ <spirit:wire>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>rx_rst_done_m</spirit:logicalName>
+ <spirit:wire>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>rx_out_clk</spirit:logicalName>
+ <spirit:wire>
+ <spirit:qualifier>
+ <spirit:isClock>true</spirit:isClock>
+ </spirit:qualifier>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>rx_clk</spirit:logicalName>
+ <spirit:wire>
+ <spirit:qualifier>
+ <spirit:isClock>true</spirit:isClock>
+ </spirit:qualifier>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>rx_sysref</spirit:logicalName>
+ <spirit:wire>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>rx_sync</spirit:logicalName>
+ <spirit:wire>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>rx_sof</spirit:logicalName>
+ <spirit:wire>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>rx_data</spirit:logicalName>
+ <spirit:wire>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>32</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>32</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>rx_ip_rst</spirit:logicalName>
+ <spirit:wire>
+ <spirit:qualifier>
+ <spirit:isReset>true</spirit:isReset>
+ </spirit:qualifier>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>rx_ip_sof</spirit:logicalName>
+ <spirit:wire>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>4</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>4</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>rx_ip_data</spirit:logicalName>
+ <spirit:wire>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>32</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>32</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>rx_ip_sysref</spirit:logicalName>
+ <spirit:wire>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>rx_ip_sync</spirit:logicalName>
+ <spirit:wire>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>rx_ip_rst_done</spirit:logicalName>
+ <spirit:wire>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ </spirit:ports>
+</spirit:abstractionDefinition>
diff --git a/fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_tx.xml b/fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_tx.xml
new file mode 100644
index 000000000..50eca29d0
--- /dev/null
+++ b/fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_tx.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<spirit:busDefinition xmlns:xilinx="http://www.xilinx.com" xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <spirit:vendor>ADI</spirit:vendor>
+ <spirit:library>user</spirit:library>
+ <spirit:name>if_gt_tx</spirit:name>
+ <spirit:version>1.0</spirit:version>
+ <spirit:directConnection>false</spirit:directConnection>
+ <spirit:isAddressable>false</spirit:isAddressable>
+ <spirit:maxMasters>1</spirit:maxMasters>
+ <spirit:maxSlaves>1</spirit:maxSlaves>
+</spirit:busDefinition>
diff --git a/fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_tx_rtl.xml b/fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_tx_rtl.xml
new file mode 100644
index 000000000..faaa387f2
--- /dev/null
+++ b/fpga/usrp3/lib/vivado_ipi/interfaces/if_gt_tx_rtl.xml
@@ -0,0 +1,379 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<spirit:abstractionDefinition xmlns:xilinx="http://www.xilinx.com" xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <spirit:vendor>ADI</spirit:vendor>
+ <spirit:library>user</spirit:library>
+ <spirit:name>if_gt_tx_rtl</spirit:name>
+ <spirit:version>1.0</spirit:version>
+ <spirit:busType spirit:vendor="ADI" spirit:library="user" spirit:name="if_gt_tx" spirit:version="1.0"/>
+ <spirit:ports>
+ <spirit:port>
+ <spirit:logicalName>tx_p</spirit:logicalName>
+ <spirit:wire>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>tx_n</spirit:logicalName>
+ <spirit:wire>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>tx_rst</spirit:logicalName>
+ <spirit:wire>
+ <spirit:qualifier>
+ <spirit:isReset>true</spirit:isReset>
+ </spirit:qualifier>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>tx_rst_m</spirit:logicalName>
+ <spirit:wire>
+ <spirit:qualifier>
+ <spirit:isReset>true</spirit:isReset>
+ </spirit:qualifier>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>tx_pll_rst</spirit:logicalName>
+ <spirit:wire>
+ <spirit:qualifier>
+ <spirit:isReset>true</spirit:isReset>
+ </spirit:qualifier>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>tx_gt_rst</spirit:logicalName>
+ <spirit:wire>
+ <spirit:qualifier>
+ <spirit:isReset>true</spirit:isReset>
+ </spirit:qualifier>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>tx_gt_rst_m</spirit:logicalName>
+ <spirit:wire>
+ <spirit:qualifier>
+ <spirit:isReset>true</spirit:isReset>
+ </spirit:qualifier>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>tx_pll_locked</spirit:logicalName>
+ <spirit:wire>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>tx_pll_locked_m</spirit:logicalName>
+ <spirit:wire>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>tx_user_ready</spirit:logicalName>
+ <spirit:wire>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>tx_user_ready_m</spirit:logicalName>
+ <spirit:wire>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>tx_rst_done</spirit:logicalName>
+ <spirit:wire>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>tx_rst_done_m</spirit:logicalName>
+ <spirit:wire>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>tx_out_clk</spirit:logicalName>
+ <spirit:wire>
+ <spirit:qualifier>
+ <spirit:isClock>true</spirit:isClock>
+ </spirit:qualifier>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>tx_clk</spirit:logicalName>
+ <spirit:wire>
+ <spirit:qualifier>
+ <spirit:isClock>true</spirit:isClock>
+ </spirit:qualifier>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>tx_sysref</spirit:logicalName>
+ <spirit:wire>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>tx_sync</spirit:logicalName>
+ <spirit:wire>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>tx_data</spirit:logicalName>
+ <spirit:wire>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>32</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>32</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>tx_ip_rst</spirit:logicalName>
+ <spirit:wire>
+ <spirit:qualifier>
+ <spirit:isReset>true</spirit:isReset>
+ </spirit:qualifier>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>tx_ip_data</spirit:logicalName>
+ <spirit:wire>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>32</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>32</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>tx_ip_sysref</spirit:logicalName>
+ <spirit:wire>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>tx_ip_sync</spirit:logicalName>
+ <spirit:wire>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>tx_ip_rst_done</spirit:logicalName>
+ <spirit:wire>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ </spirit:ports>
+</spirit:abstractionDefinition>
diff --git a/fpga/usrp3/lib/vivado_ipi/interfaces/if_xcvr_ch.xml b/fpga/usrp3/lib/vivado_ipi/interfaces/if_xcvr_ch.xml
new file mode 100644
index 000000000..32a225486
--- /dev/null
+++ b/fpga/usrp3/lib/vivado_ipi/interfaces/if_xcvr_ch.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<spirit:busDefinition xmlns:xilinx="http://www.xilinx.com" xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <spirit:vendor>ADI</spirit:vendor>
+ <spirit:library>user</spirit:library>
+ <spirit:name>if_xcvr_ch</spirit:name>
+ <spirit:version>1.0</spirit:version>
+ <spirit:directConnection>false</spirit:directConnection>
+ <spirit:isAddressable>false</spirit:isAddressable>
+ <spirit:maxMasters>1</spirit:maxMasters>
+ <spirit:maxSlaves>1</spirit:maxSlaves>
+</spirit:busDefinition>
diff --git a/fpga/usrp3/lib/vivado_ipi/interfaces/if_xcvr_ch_rtl.xml b/fpga/usrp3/lib/vivado_ipi/interfaces/if_xcvr_ch_rtl.xml
new file mode 100644
index 000000000..ba01aef9c
--- /dev/null
+++ b/fpga/usrp3/lib/vivado_ipi/interfaces/if_xcvr_ch_rtl.xml
@@ -0,0 +1,235 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<spirit:abstractionDefinition xmlns:xilinx="http://www.xilinx.com" xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <spirit:vendor>ADI</spirit:vendor>
+ <spirit:library>user</spirit:library>
+ <spirit:name>if_xcvr_ch_rtl</spirit:name>
+ <spirit:version>1.0</spirit:version>
+ <spirit:busType spirit:vendor="ADI" spirit:library="user" spirit:name="if_xcvr_ch" spirit:version="1.0"/>
+ <spirit:ports>
+ <spirit:port>
+ <spirit:logicalName>pll_locked</spirit:logicalName>
+ <spirit:wire>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>rst</spirit:logicalName>
+ <spirit:wire>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>user_ready</spirit:logicalName>
+ <spirit:wire>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>rst_done</spirit:logicalName>
+ <spirit:wire>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>lpm_dfe_n</spirit:logicalName>
+ <spirit:wire>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>rate</spirit:logicalName>
+ <spirit:wire>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>3</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>3</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>sys_clk_sel</spirit:logicalName>
+ <spirit:wire>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>2</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>2</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>out_clk_sel</spirit:logicalName>
+ <spirit:wire>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>3</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>3</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>sel</spirit:logicalName>
+ <spirit:wire>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>8</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>8</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>enb</spirit:logicalName>
+ <spirit:wire>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>addr</spirit:logicalName>
+ <spirit:wire>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>12</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>12</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>wr</spirit:logicalName>
+ <spirit:wire>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>wdata</spirit:logicalName>
+ <spirit:wire>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>16</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>16</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>rdata</spirit:logicalName>
+ <spirit:wire>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>16</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>16</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>ready</spirit:logicalName>
+ <spirit:wire>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ </spirit:ports>
+</spirit:abstractionDefinition>
diff --git a/fpga/usrp3/lib/vivado_ipi/interfaces/if_xcvr_cm.xml b/fpga/usrp3/lib/vivado_ipi/interfaces/if_xcvr_cm.xml
new file mode 100644
index 000000000..218fd3686
--- /dev/null
+++ b/fpga/usrp3/lib/vivado_ipi/interfaces/if_xcvr_cm.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<spirit:busDefinition xmlns:xilinx="http://www.xilinx.com" xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <spirit:vendor>ADI</spirit:vendor>
+ <spirit:library>user</spirit:library>
+ <spirit:name>if_xcvr_cm</spirit:name>
+ <spirit:version>1.0</spirit:version>
+ <spirit:directConnection>false</spirit:directConnection>
+ <spirit:isAddressable>false</spirit:isAddressable>
+ <spirit:maxMasters>1</spirit:maxMasters>
+ <spirit:maxSlaves>1</spirit:maxSlaves>
+</spirit:busDefinition>
diff --git a/fpga/usrp3/lib/vivado_ipi/interfaces/if_xcvr_cm_rtl.xml b/fpga/usrp3/lib/vivado_ipi/interfaces/if_xcvr_cm_rtl.xml
new file mode 100644
index 000000000..beb223077
--- /dev/null
+++ b/fpga/usrp3/lib/vivado_ipi/interfaces/if_xcvr_cm_rtl.xml
@@ -0,0 +1,115 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<spirit:abstractionDefinition xmlns:xilinx="http://www.xilinx.com" xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <spirit:vendor>ADI</spirit:vendor>
+ <spirit:library>user</spirit:library>
+ <spirit:name>if_xcvr_cm_rtl</spirit:name>
+ <spirit:version>1.0</spirit:version>
+ <spirit:busType spirit:vendor="ADI" spirit:library="user" spirit:name="if_xcvr_cm" spirit:version="1.0"/>
+ <spirit:ports>
+ <spirit:port>
+ <spirit:logicalName>sel</spirit:logicalName>
+ <spirit:wire>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>8</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>8</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>enb</spirit:logicalName>
+ <spirit:wire>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>addr</spirit:logicalName>
+ <spirit:wire>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>12</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>12</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>wr</spirit:logicalName>
+ <spirit:wire>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>wdata</spirit:logicalName>
+ <spirit:wire>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>16</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>16</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>rdata</spirit:logicalName>
+ <spirit:wire>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>16</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>16</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ <spirit:port>
+ <spirit:logicalName>ready</spirit:logicalName>
+ <spirit:wire>
+ <spirit:onMaster>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>in</spirit:direction>
+ </spirit:onMaster>
+ <spirit:onSlave>
+ <spirit:presence>required</spirit:presence>
+ <spirit:width>1</spirit:width>
+ <spirit:direction>out</spirit:direction>
+ </spirit:onSlave>
+ </spirit:wire>
+ </spirit:port>
+ </spirit:ports>
+</spirit:abstractionDefinition>