diff --git a/waveforms/roce-read-handshake.json5 b/waveforms/roce-read-handshake.json5
new file mode 100644
index 0000000000000000000000000000000000000000..62b217a140d9c952d8c6bb520b0d291ed96737c3
--- /dev/null
+++ b/waveforms/roce-read-handshake.json5
@@ -0,0 +1,13 @@
+{signal: [
+  {name: 'axi_clk',              wave: 'p...'},
+  {name: 's_axis_tx_meta_valid', wave: '010.'},
+  {name: 's_axis_tx_meta_ready', wave: '1...'},
+  {name: 's_axis_tx_meta_data',  wave: 'x=x.', data: ['READ']},
+  {name: 's_axis_tx_data_valid', wave: '0...'},
+  {name: 's_axis_tx_data_ready', wave: '1...'},
+  {name: 's_axis_tx_data_data',  wave: 'x...'},
+  {name: 's_axis_tx_data_keep',  wave: 'x...'},
+  {name: 's_axis_tx_data_last',  wave: '0...'},
+],
+config: { hscale: 1.5 }
+}
\ No newline at end of file
diff --git a/waveforms/roce-write-handshake.json5 b/waveforms/roce-write-handshake.json5
new file mode 100644
index 0000000000000000000000000000000000000000..3ec6b789f5442872d7a6a5f149af581368ffed58
--- /dev/null
+++ b/waveforms/roce-write-handshake.json5
@@ -0,0 +1,13 @@
+{signal: [
+  {name: 'axi_clk',              wave: 'p....'},
+  {name: 's_axis_tx_meta_valid', wave: '010..'},
+  {name: 's_axis_tx_meta_ready', wave: '1....'},
+  {name: 's_axis_tx_meta_data',  wave: 'x=x..', data: ['WRITE']},
+  {name: 's_axis_tx_data_valid', wave: '01.0.'},
+  {name: 's_axis_tx_data_ready', wave: '1....'},
+  {name: 's_axis_tx_data_data',  wave: 'x===x', data: ['D0', 'D1', 'D2']},
+  {name: 's_axis_tx_data_keep',  wave: 'x===x', data: ['FF', 'FF', '0F']},
+  {name: 's_axis_tx_data_last',  wave: '0..10'},
+],
+config: { hscale: 1.5 }
+}
\ No newline at end of file
diff --git a/waveforms/tcp-rx-handshake.json5 b/waveforms/tcp-rx-handshake.json5
new file mode 100644
index 0000000000000000000000000000000000000000..15d79bacae9a7acf2dd77c4faf0a05873d342c70
--- /dev/null
+++ b/waveforms/tcp-rx-handshake.json5
@@ -0,0 +1,19 @@
+{signal: [
+  {name: 'axi_clk',                           wave: 'p...|...|......'},
+  {name: 'm_axis_notification_valid',         wave: '0.10|...|......'},
+  {name: 'm_axis_notification_ready',         wave: '1...|...|......'},
+  {name: 'm_axis_notification_data',          wave: 'x.=x|...|......', data: ['ID,length']},
+  {name: 's_axis_rx_data_req_valid',          wave: '0...|.10|......'},
+  {name: 's_axis_rx_data_req_ready',          wave: '0..1|..0|......'},
+  {name: 's_axis_rx_data_req_data',           wave: 'x...|.=x|......', data: ['ID,length']},
+  {name: 'm_axis_rx_data_rsp_metadata_valid', wave: '0...|...|.10...'},
+  {name: 'm_axis_rx_data_rsp_metadata_ready', wave: '1...|...|......'},
+  {name: 'm_axis_rx_data_rsp_metadata_data',  wave: 'x...|...|.=x...', data: ['ID']},
+  {name: 'm_axis_rx_data_rsp_valid',          wave: '0...|...|.1..0.'},
+  {name: 'm_axis_rx_data_rsp_ready',          wave: '1...|...|......'},
+  {name: 'm_axis_rx_data_rsp_data',           wave: 'x...|...|.===x.', data: ['D0', 'D1', 'D2']},
+  {name: 'm_axis_rx_data_rsp_keep',           wave: 'x...|...|.===x.', data: ['FF', 'FF', '0F']},
+  {name: 'm_axis_rx_data_rsp_last',           wave: '0...|...|...10.'},
+],
+config: { hscale: 1.5 }
+}
\ No newline at end of file
diff --git a/waveforms/tcp-tx-handshake.json5 b/waveforms/tcp-tx-handshake.json5
new file mode 100644
index 0000000000000000000000000000000000000000..9225965b5392749e02031e1033bbfda8adbf3074
--- /dev/null
+++ b/waveforms/tcp-tx-handshake.json5
@@ -0,0 +1,16 @@
+{signal: [
+  {name: 'axi_clk',                           wave: 'p..|...|....'},
+  {name: 's_axis_tx_data_req_metadata_valid', wave: '010|...|....'},
+  {name: 's_axis_tx_data_req_metadata_ready', wave: '1..|...|....'},
+  {name: 's_axis_tx_data_req_metadata_data',  wave: 'x=x|...|....', data: ['ID,length']},
+  {name: 'm_axis_tx_data_rsp_valid',          wave: '0..|.10|....'},
+  {name: 'm_axis_tx_data_rsp_ready',          wave: '1..|...|....'},
+  {name: 'm_axis_tx_data_rsp_data',           wave: 'x..|.=x|....', data: ['ID,error']},
+  {name: 's_axis_tx_data_req_valid',          wave: '0..|...|10..'},
+  {name: 's_axis_tx_data_req_ready',          wave: '1..|...|....'},
+  {name: 's_axis_tx_data_req_data',           wave: 'x..|...|===x', data: ['D0', 'D1', 'D2']},
+  {name: 's_axis_tx_data_req_keep',           wave: 'x..|...|===x', data: ['FF', 'FF', '0F']},
+  {name: 's_axis_tx_data_req_last',           wave: '0..|...|..10'},
+],
+config: { hscale: 1.5 }
+}
\ No newline at end of file