aboutsummaryrefslogtreecommitdiffstats
path: root/host/include
diff options
context:
space:
mode:
Diffstat (limited to 'host/include')
-rw-r--r--host/include/uhd/CMakeLists.txt3
-rw-r--r--host/include/uhd/erfnoc/CMakeLists.txt8
-rw-r--r--host/include/uhd/erfnoc/blocks/CMakeLists.txt14
-rw-r--r--host/include/uhd/erfnoc/blocks/ddc_1x64.yml59
-rw-r--r--host/include/uhd/erfnoc/blocks/ddc_2x64.yml75
-rw-r--r--host/include/uhd/erfnoc/blocks/duc_1x64.yml59
-rw-r--r--host/include/uhd/erfnoc/blocks/duc_2x64.yml75
-rw-r--r--host/include/uhd/erfnoc/blocks/null_src_sink.yml68
-rw-r--r--host/include/uhd/erfnoc/blocks/radio_1x64.yml72
-rw-r--r--host/include/uhd/erfnoc/blocks/radio_2x64.yml88
-rw-r--r--host/include/uhd/erfnoc/core/CMakeLists.txt20
-rw-r--r--host/include/uhd/erfnoc/core/io_signatures.yml57
-rw-r--r--host/include/uhd/erfnoc/core/rfnoc_imagebuilder_args.json78
-rw-r--r--host/include/uhd/erfnoc/core/x310_bsp.yml45
14 files changed, 721 insertions, 0 deletions
diff --git a/host/include/uhd/CMakeLists.txt b/host/include/uhd/CMakeLists.txt
index cdee1c921..95770038e 100644
--- a/host/include/uhd/CMakeLists.txt
+++ b/host/include/uhd/CMakeLists.txt
@@ -5,6 +5,9 @@
# SPDX-License-Identifier: GPL-3.0-or-later
#
+# This is a temporary include - remove once rfnoc is replaced by erfnoc
+add_subdirectory(erfnoc)
+
add_subdirectory(rfnoc)
add_subdirectory(transport)
add_subdirectory(types)
diff --git a/host/include/uhd/erfnoc/CMakeLists.txt b/host/include/uhd/erfnoc/CMakeLists.txt
new file mode 100644
index 000000000..e4eddaea2
--- /dev/null
+++ b/host/include/uhd/erfnoc/CMakeLists.txt
@@ -0,0 +1,8 @@
+#
+# Copyright 2019 Ettus Research, a National Instruments Company
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+
+add_subdirectory(blocks)
+add_subdirectory(core) \ No newline at end of file
diff --git a/host/include/uhd/erfnoc/blocks/CMakeLists.txt b/host/include/uhd/erfnoc/blocks/CMakeLists.txt
new file mode 100644
index 000000000..c4b8e678d
--- /dev/null
+++ b/host/include/uhd/erfnoc/blocks/CMakeLists.txt
@@ -0,0 +1,14 @@
+#
+# Copyright 2019 Ettus Research, a National Instruments Company
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+
+file(GLOB yml_files "*.yml")
+
+# We always need this, even when RFNoC is 'disabled'
+UHD_INSTALL(
+ FILES ${yml_files}
+ DESTINATION ${PKG_DATA_DIR}/erfnoc/blocks
+ COMPONENT headers # TODO: Different component
+) \ No newline at end of file
diff --git a/host/include/uhd/erfnoc/blocks/ddc_1x64.yml b/host/include/uhd/erfnoc/blocks/ddc_1x64.yml
new file mode 100644
index 000000000..3d21ea527
--- /dev/null
+++ b/host/include/uhd/erfnoc/blocks/ddc_1x64.yml
@@ -0,0 +1,59 @@
+schema: rfnoc_modtool_args
+module_name: ddc
+version: 1.0
+rfnoc_version: 1.0
+chdr_width: 64
+noc_id: 0xDDC00000
+
+clocks:
+ - name: rfnoc_chdr
+ freq: "[]"
+ - name: rfnoc_ctrl
+ freq: "[]"
+ - name: ddc
+ freq: "[]"
+
+control:
+ sw_iface: nocscript
+ fpga_iface: ctrlport
+ interface_direction: master_slave
+ fifo_depth: 32
+ clk_domain: ddc
+ ctrlport:
+ byte_mode: True
+ timed: False
+ has_status: False
+
+parameters:
+ NUM_PORTS: 1
+ NUM_HB: 3
+ CIC_MAX_DECIM: 255
+
+data:
+ fpga_iface: axis_chdr
+ clk_domain: ddc
+ mtu: 1024
+ inputs:
+ port0:
+ index: 0
+ item_width: 32
+ nipc: 2
+ context_fifo_depth: 1
+ payload_fifo_depth: 1
+ format: int32
+ mdata_sig: ~
+ outputs:
+ port0:
+ index: 0
+ item_width: 32
+ nipc: 2
+ context_fifo_depth: 1
+ payload_fifo_depth: 1
+ format: int32
+ mdata_sig: ~
+
+io_port:
+
+registers:
+
+properties:
diff --git a/host/include/uhd/erfnoc/blocks/ddc_2x64.yml b/host/include/uhd/erfnoc/blocks/ddc_2x64.yml
new file mode 100644
index 000000000..a79a07c8f
--- /dev/null
+++ b/host/include/uhd/erfnoc/blocks/ddc_2x64.yml
@@ -0,0 +1,75 @@
+schema: rfnoc_modtool_args
+module_name: ddc
+version: 1.0
+rfnoc_version: 1.0
+chdr_width: 64
+noc_id: 0xDDC00000
+
+clocks:
+ - name: rfnoc_chdr
+ freq: "[]"
+ - name: rfnoc_ctrl
+ freq: "[]"
+ - name: ddc
+ freq: "[]"
+
+control:
+ sw_iface: nocscript
+ fpga_iface: ctrlport
+ interface_direction: master_slave
+ fifo_depth: 32
+ clk_domain: ddc
+ ctrlport:
+ byte_mode: True
+ timed: False
+ has_status: False
+
+parameters:
+ NUM_PORTS: 2
+ NUM_HB: 3
+ CIC_MAX_DECIM: 255
+
+data:
+ fpga_iface: axis_chdr
+ clk_domain: ddc
+ mtu: 1024
+ inputs:
+ port0:
+ index: 0
+ item_width: 32
+ nipc: 2
+ context_fifo_depth: 1
+ payload_fifo_depth: 1
+ format: int32
+ mdata_sig: ~
+ port1:
+ index: 1
+ item_width: 32
+ nipc: 2
+ context_fifo_depth: 1
+ payload_fifo_depth: 1
+ format: int32
+ mdata_sig: ~
+ outputs:
+ port0:
+ index: 0
+ item_width: 32
+ nipc: 2
+ context_fifo_depth: 1
+ payload_fifo_depth: 1
+ format: int32
+ mdata_sig: ~
+ port1:
+ index: 1
+ item_width: 32
+ nipc: 2
+ context_fifo_depth: 1
+ payload_fifo_depth: 1
+ format: int32
+ mdata_sig: ~
+
+io_port:
+
+registers:
+
+properties:
diff --git a/host/include/uhd/erfnoc/blocks/duc_1x64.yml b/host/include/uhd/erfnoc/blocks/duc_1x64.yml
new file mode 100644
index 000000000..515f426f2
--- /dev/null
+++ b/host/include/uhd/erfnoc/blocks/duc_1x64.yml
@@ -0,0 +1,59 @@
+schema: rfnoc_modtool_args
+module_name: duc
+version: 1.0
+rfnoc_version: 1.0
+chdr_width: 64
+noc_id: 0xD0C00000
+
+clocks:
+ - name: rfnoc_chdr
+ freq: "[]"
+ - name: rfnoc_ctrl
+ freq: "[]"
+ - name: duc
+ freq: "[]"
+
+control:
+ sw_iface: nocscript
+ fpga_iface: ctrlport
+ interface_direction: master_slave
+ fifo_depth: 32
+ clk_domain: duc
+ ctrlport:
+ byte_mode: True
+ timed: False
+ has_status: False
+
+parameters:
+ NUM_PORTS: 1
+ NUM_HB: 3
+ CIC_MAX_INTERP: 255
+
+data:
+ fpga_iface: axis_chdr
+ clk_domain: duc
+ mtu: 1024
+ inputs:
+ port0:
+ index: 0
+ item_width: 32
+ nipc: 2
+ context_fifo_depth: 1
+ payload_fifo_depth: 1
+ format: int32
+ mdata_sig: ~
+ outputs:
+ port0:
+ index: 0
+ item_width: 32
+ nipc: 2
+ context_fifo_depth: 1
+ payload_fifo_depth: 1
+ format: int32
+ mdata_sig: ~
+
+io_port:
+
+registers:
+
+properties:
diff --git a/host/include/uhd/erfnoc/blocks/duc_2x64.yml b/host/include/uhd/erfnoc/blocks/duc_2x64.yml
new file mode 100644
index 000000000..fd8add930
--- /dev/null
+++ b/host/include/uhd/erfnoc/blocks/duc_2x64.yml
@@ -0,0 +1,75 @@
+schema: rfnoc_modtool_args
+module_name: duc
+version: 1.0
+rfnoc_version: 1.0
+chdr_width: 64
+noc_id: 0xD0C00000
+
+clocks:
+ - name: rfnoc_chdr
+ freq: "[]"
+ - name: rfnoc_ctrl
+ freq: "[]"
+ - name: duc
+ freq: "[]"
+
+control:
+ sw_iface: nocscript
+ fpga_iface: ctrlport
+ interface_direction: master_slave
+ fifo_depth: 32
+ clk_domain: duc
+ ctrlport:
+ byte_mode: True
+ timed: False
+ has_status: False
+
+parameters:
+ NUM_PORTS: 2
+ NUM_HB: 3
+ CIC_MAX_INTERP: 255
+
+data:
+ fpga_iface: axis_chdr
+ clk_domain: duc
+ mtu: 1024
+ inputs:
+ port0:
+ index: 0
+ item_width: 32
+ nipc: 2
+ context_fifo_depth: 1
+ payload_fifo_depth: 1
+ format: int32
+ mdata_sig: ~
+ port1:
+ index: 1
+ item_width: 32
+ nipc: 2
+ context_fifo_depth: 1
+ payload_fifo_depth: 1
+ format: int32
+ mdata_sig: ~
+ outputs:
+ port0:
+ index: 0
+ item_width: 32
+ nipc: 2
+ context_fifo_depth: 1
+ payload_fifo_depth: 1
+ format: int32
+ mdata_sig: ~
+ port1:
+ index: 1
+ item_width: 32
+ nipc: 2
+ context_fifo_depth: 1
+ payload_fifo_depth: 1
+ format: int32
+ mdata_sig: ~
+
+io_port:
+
+registers:
+
+properties:
diff --git a/host/include/uhd/erfnoc/blocks/null_src_sink.yml b/host/include/uhd/erfnoc/blocks/null_src_sink.yml
new file mode 100644
index 000000000..1636ea046
--- /dev/null
+++ b/host/include/uhd/erfnoc/blocks/null_src_sink.yml
@@ -0,0 +1,68 @@
+schema: rfnoc_modtool_args
+module_name: null_src_sink
+version: 1.0
+rfnoc_version: 1.0
+chdr_width: 64
+noc_id: 0x1
+
+clocks:
+ - name: rfnoc_chdr
+ freq: "[]"
+ - name: rfnoc_ctrl
+ freq: "[]"
+
+control:
+ sw_iface: nocscript
+ fpga_iface: ctrlport
+ interface_direction: master_slave
+ fifo_depth: 32
+ clk_domain: rfnoc_ctrl
+ ctrlport:
+ byte_mode: True
+ timed: False
+ has_status: False
+
+data:
+ fpga_iface: axis_chdr
+ clk_domain: rfnoc_chdr
+ mtu: 1024
+ inputs:
+ sink:
+ index: 0
+ item_width: 32
+ nipc: 2
+ context_fifo_depth: 1
+ payload_fifo_depth: 1
+ format: int32
+ mdata_sig: ~
+ loop:
+ index: 1
+ item_width: 32
+ nipc: 2
+ context_fifo_depth: 1
+ payload_fifo_depth: 1
+ format: int32
+ mdata_sig: ~
+ outputs:
+ source:
+ index: 0
+ item_width: 32
+ nipc: 2
+ context_fifo_depth: 1
+ payload_fifo_depth: 1
+ format: int32
+ mdata_sig: ~
+ loop:
+ index: 1
+ item_width: 32
+ nipc: 2
+ context_fifo_depth: 1
+ payload_fifo_depth: 1
+ format: int32
+ mdata_sig: ~
+
+io_port:
+
+registers:
+
+properties:
diff --git a/host/include/uhd/erfnoc/blocks/radio_1x64.yml b/host/include/uhd/erfnoc/blocks/radio_1x64.yml
new file mode 100644
index 000000000..0ee68ec24
--- /dev/null
+++ b/host/include/uhd/erfnoc/blocks/radio_1x64.yml
@@ -0,0 +1,72 @@
+schema: rfnoc_modtool_args
+module_name: radio
+version: 1.0
+rfnoc_version: 1.0
+chdr_width: 64
+noc_id: 0x12AD1000
+
+clocks:
+ - name: rfnoc_chdr
+ freq: "[]"
+ - name: rfnoc_ctrl
+ freq: "[]"
+ - name: radio
+ freq: "[]"
+
+control:
+ sw_iface: nocscript
+ fpga_iface: ctrlport
+ interface_direction: master_slave
+ fifo_depth: 32
+ clk_domain: rfnoc_ctrl
+ ctrlport:
+ byte_mode: True
+ timed: False
+ has_status: False
+
+# The parameters section lists parameters that get added to the generated
+# Verilog for the module instantiation. Any parameter listed here may be set to
+# different value in the image builder YAML file.
+parameters:
+ NUM_PORTS: 1
+
+data:
+ fpga_iface: axis_chdr
+ clk_domain: radio
+ mtu: 1024
+ inputs:
+ port0:
+ index: 0
+ item_width: 32
+ nipc: 2
+ context_fifo_depth: 1
+ payload_fifo_depth: 1
+ format: int32
+ mdata_sig: ~
+ outputs:
+ port0:
+ index: 0
+ item_width: 32
+ nipc: 2
+ context_fifo_depth: 1
+ payload_fifo_depth: 1
+ format: int32
+ mdata_sig: ~
+
+io_ports:
+ ctrl_port:
+ type: ctrl_port
+ drive: master
+ rename:
+ pattern: (.*)
+ repl: m_\1
+ time_keeper:
+ type: time_keeper
+ drive: listener
+ x300_radio:
+ type: x300_radio
+ drive: slave
+
+registers:
+
+properties:
diff --git a/host/include/uhd/erfnoc/blocks/radio_2x64.yml b/host/include/uhd/erfnoc/blocks/radio_2x64.yml
new file mode 100644
index 000000000..4e7838392
--- /dev/null
+++ b/host/include/uhd/erfnoc/blocks/radio_2x64.yml
@@ -0,0 +1,88 @@
+schema: rfnoc_modtool_args
+module_name: radio
+version: 1.0
+rfnoc_version: 1.0
+chdr_width: 64
+noc_id: 0x12AD1000
+
+clocks:
+ - name: rfnoc_chdr
+ freq: "[]"
+ - name: rfnoc_ctrl
+ freq: "[]"
+ - name: radio
+ freq: "[]"
+
+control:
+ sw_iface: nocscript
+ fpga_iface: ctrlport
+ interface_direction: master_slave
+ fifo_depth: 32
+ clk_domain: rfnoc_ctrl
+ ctrlport:
+ byte_mode: True
+ timed: False
+ has_status: False
+
+# The parameters section lists parameters that get added to the generated
+# Verilog for the module instantiation. Any parameter listed here may be set to
+# different value in the image builder YAML file.
+parameters:
+ NUM_PORTS: 2
+
+data:
+ fpga_iface: axis_chdr
+ clk_domain: rfnoc_chdr
+ mtu: 1024
+ inputs:
+ port0:
+ index: 0
+ item_width: 32
+ nipc: 2
+ context_fifo_depth: 1
+ payload_fifo_depth: 1
+ format: int32
+ mdata_sig: ~
+ port1:
+ index: 1
+ item_width: 32
+ nipc: 2
+ context_fifo_depth: 1
+ payload_fifo_depth: 1
+ format: int32
+ mdata_sig: ~
+ outputs:
+ port0:
+ index: 0
+ item_width: 32
+ nipc: 2
+ context_fifo_depth: 1
+ payload_fifo_depth: 1
+ format: int32
+ mdata_sig: ~
+ port1:
+ index: 1
+ item_width: 32
+ nipc: 2
+ context_fifo_depth: 1
+ payload_fifo_depth: 1
+ format: int32
+ mdata_sig: ~
+
+io_ports:
+ ctrl_port:
+ type: ctrl_port
+ drive: master
+ rename:
+ pattern: (.*)
+ repl: m_\1
+ time_keeper:
+ type: time_keeper
+ drive: listener
+ x300_radio:
+ type: x300_radio
+ drive: slave
+
+registers:
+
+properties:
diff --git a/host/include/uhd/erfnoc/core/CMakeLists.txt b/host/include/uhd/erfnoc/core/CMakeLists.txt
new file mode 100644
index 000000000..ef7904789
--- /dev/null
+++ b/host/include/uhd/erfnoc/core/CMakeLists.txt
@@ -0,0 +1,20 @@
+#
+# Copyright 2019 Ettus Research, a National Instruments Company
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+
+file(GLOB yml_files "*.yml")
+file(GLOB json_files "*.json")
+
+# We always need this, even when RFNoC is 'disabled'
+UHD_INSTALL(
+ FILES ${yml_files}
+ DESTINATION ${PKG_DATA_DIR}/erfnoc/core
+ COMPONENT headers # TODO: Different component
+)
+UHD_INSTALL(
+ FILES ${json_files}
+ DESTINATION ${PKG_DATA_DIR}/erfnoc/core
+ COMPONENT headers # TODO: Different component
+) \ No newline at end of file
diff --git a/host/include/uhd/erfnoc/core/io_signatures.yml b/host/include/uhd/erfnoc/core/io_signatures.yml
new file mode 100644
index 000000000..cb2ca2cbc
--- /dev/null
+++ b/host/include/uhd/erfnoc/core/io_signatures.yml
@@ -0,0 +1,57 @@
+ctrl_port:
+ type: master-slave
+ ports:
+ - name: ctrlport_req_wr
+ type: from-master
+ - name: ctrlport_req_rd
+ type: from-master
+ - name: ctrlport_req_addr
+ type: from-master
+ width: 20
+ - name: ctrlport_req_data
+ type: from-master
+ width: 32
+ - name: ctrlport_req_byte_en
+ type: from-master
+ width: 4
+ - name: ctrlport_req_has_time
+ type: from-master
+ - name: ctrlport_req_time
+ type: from-master
+ width: 64
+ - name: ctrlport_resp_ack
+ type: to-master
+ - name: ctrlport_resp_status
+ type: to-master
+ width: 2
+ - name: ctrlport_resp_data
+ type: to-master
+ width: 32
+
+time_keeper:
+ type: broadcaster-listener
+ ports:
+ - name: radio_time
+ width: 64
+
+x300_radio:
+ type: master-slave
+ ports:
+ - name: radio_rx_data
+ type: from-master
+ width: 64
+ - name: radio_rx_stb
+ type: from-master
+ width: 2
+ - name: radio_rx_running
+ type: to-master
+ width: 2
+ - name: radio_tx_data
+ type: to-master
+ width: 64
+ - name: radio_tx_stb
+ type: from-master
+ width: 2
+ - name: radio_tx_running
+ type: to-master
+ width: 2
diff --git a/host/include/uhd/erfnoc/core/rfnoc_imagebuilder_args.json b/host/include/uhd/erfnoc/core/rfnoc_imagebuilder_args.json
new file mode 100644
index 000000000..65ef2dd76
--- /dev/null
+++ b/host/include/uhd/erfnoc/core/rfnoc_imagebuilder_args.json
@@ -0,0 +1,78 @@
+{
+ "type": "object",
+ "properties": {
+ "schema": { "const": "rfnoc_imagebuilder_args" },
+ "copyright": { "type": "string" },
+ "version": { "type": "number" },
+ "license": { "type": "string" },
+ "device_desc": { "type": "string" },
+ "rfnoc_version": { "type": "number" },
+ "chdr_width": { "enum": [64, 256] },
+
+ "stream_endpoints": { "$ref": "#/definitions/stream_endpoints" },
+ "noc_blocks": { "$ref": "#/definitions/noc_blocks" },
+ "clk_domains": { "type": "array",
+ "items": { "$ref": "#/definitions/connection" } },
+ "connections": { "type": "array",
+ "items": { "$ref": "#/definitions/connection" } }
+ },
+ "required": ["schema",
+ "chdr_width",
+ "noc_blocks"],
+ "additionalProperties": false,
+
+ "definitions": {
+
+ "stream_endpoints": {
+ "type": "object",
+ "patternProperties": {
+ ".*": { "$ref": "#/definitions/stream_endpoint" }
+ }
+ },
+
+ "noc_blocks": {
+ "type": "object",
+ "patternProperties": {
+ ".*": { "$ref": "#/definitions/noc_block" }
+ }
+ },
+
+ "stream_endpoint": {
+ "type": "object",
+ "properties": {
+ "ctrl": { "type": "boolean" },
+ "data": { "type": "boolean" },
+ "num_data_i":{ "type": "integer", "minimum": 1 },
+ "num_data_o":{ "type": "integer", "minimum": 1 },
+ "buff_size": { "type": "integer", "minimum": 0 }
+ },
+ "additionalProperties": false
+ },
+
+ "noc_block": {
+ "type": "object",
+ "properties": {
+ "block_desc": { "type": "string", "pattern": "^.*\\.yml" },
+ "parameters": { "$ref": "#/definitions/parameter" }
+ },
+ "required": ["block_desc"],
+ "additionalProperties": false
+ },
+
+ "parameter": {
+ "type": "object"
+ },
+
+ "connection": {
+ "type": "object",
+ "properties": {
+ "srcblk": { "type": "string", "minLength": 1 },
+ "srcport": { "type": "string", "minLength": 1 },
+ "dstblk": { "type": "string", "minLength": 1 },
+ "dstport": { "type": "string", "minLength": 1 }
+ },
+ "required": ["srcblk", "srcport", "dstblk", "dstport"],
+ "additionalProperties": false
+ }
+ }
+}
diff --git a/host/include/uhd/erfnoc/core/x310_bsp.yml b/host/include/uhd/erfnoc/core/x310_bsp.yml
new file mode 100644
index 000000000..497927a08
--- /dev/null
+++ b/host/include/uhd/erfnoc/core/x310_bsp.yml
@@ -0,0 +1,45 @@
+type: x300
+type_id: DEAD
+family: 7SERIES
+transports:
+- name: eth0
+ type: 10G
+ width: 64
+- name: eth1
+ type: 1G
+ width: 64
+- name: pcie
+ type: PCIe
+ width: 64
+
+clocks:
+- name: radio
+
+io_ports:
+ ctrlport_radio0:
+ type: ctrl_port
+ drive: slave
+ rename:
+ pattern: (ctrlport_)(.*)
+ repl: m_\1radio0_\2
+ ctrlport_radio1:
+ type: ctrl_port
+ drive: slave
+ rename:
+ pattern: (ctrlport_)(.*)
+ repl: m_\1radio1_\2
+ time_keeper:
+ type: time_keeper
+ drive: broadcaster
+ x300_radio0:
+ type: x300_radio
+ drive: master
+ rename:
+ pattern: (.*)
+ repl: \1_radio0
+ x300_radio1:
+ type: x300_radio
+ drive: master
+ rename:
+ pattern: (.*)
+ repl: \1_radio1