Commit Graph
275 Commits
Author SHA1 Message Date
Wade Fife 20b814f62c fpga: e310: Fix device in image core YAML
Device was set to e31x, but this is not a valid device type. All e31x
devices use the e310 device type.


Original-commit: 60b76ebb31f9d1672c1b18367346b3fb522e13e9
2020-08-14 15:11:08 -05:00
Wade Fife b0c8336087 fpga: rfnoc: Enable clean switch in Switchboard
This change prevents packets from being chopped midway if the
switchboard configuration is changed when a packet is in flight.


Original-commit: f2ec5c91a79cee4c05465349d7e0da865ad1bead
2020-08-13 15:23:26 -05:00
Wade Fife 5a99bed5ee fpga: lib: Fix SWITCH_ON_LAST in axi_mux_select
Thange allows the mux to switch cleanly between packets, if the mux
select input is changed while a packet is in flight.


Original-commit: cee09d96aee51795ba2c6578f75f25f30ea11548
2020-08-13 15:23:26 -05:00
Max Köhler ec70691e84 fpga: lib: add handshake to replace FIFO for ctrlport CDC
The clock crossing of the ctrlport used FIFOs to transfer requests and responses
between clock domains. This commit adds a handshake based on the pulse
synchronizer to reduce the resource usage for ctrlport clock domain crossing.
Data is stored in a single register while the pulse synchronizer handles the
signaling of valid flags.


Original-commit: 2c2bb3a0b7269dcbd8b5933ce1c0c29ca17f599d
2020-08-13 07:46:14 -05:00
mattprost c91315d857 n320: Double radio ingress buffer size
This increases the size of the ingress buffers for the N320 radio to
support 250MHz TX streaming rates.

Signed-off-by: mattprost <matt.prost@ni.com>


Original-commit: e8db6fa4301ce471bf41ef14d5d38e5727199007
2020-08-12 15:17:48 -05:00
Wade Fife 8ed69c7cdb fpga: rfnoc: Fix clock crossing in axis_data_to_chdr
This fixes some incorrectly handled clock crossings from axis_data_clk
to axis_chdr_clk, which could have manifested as timing failures (on
E320) or incorrect behavior, depending on the product and noc_shell
configuration.

Also cleans up trailing white space.


Original-commit: f48af0a0876c99016eb8cd4558a31106bfc9baa1
2020-08-12 13:56:13 -05:00
Wade Fife 524ac02aaf fpga: lib: Change max FFT size to 1024
The max FFT size was 4096, but we don't currently have any devices that
can do that without modification. This is because, currently, the FFT
size must be the same as the packet size, and the largest packet
size supported by most devices is about 8000 bytes, or 2000
sc16 samples. Therefore, the largest FFT size supported without
modifying other code is 1024 samples.

This change frees up about 21% of the LUTs and 36% of the BRAM used by
axi_fft and makes the software block controller and the IP agree on the
maximum FFT size.


Original-commit: 4f387c8ff0571deedc86dc459e94e555b9768282
2020-08-11 16:20:51 -05:00
Wade Fife b4ea61f129 fpga: rfnoc: Add tests to FFT block
This adds additional tests to the testbench to cover register reads and
basic IFFT functionaltiy.


Original-commit: 9157e11795f3ca86dae2ee930e60a79470d1447f
2020-08-10 09:58:02 -05:00
Max Köhler 06afe79a42 fpga: lib: add Intel MAX10 architecture for 2clk FIFO
This commit derives parameters for MAX10 devices if provided by the
DEVICE parameter.

MAX10 devices FIFO generator support up to 36 bit wide FIFOs using
embedded memory (M9K) in simple dual port mode, which is treated
equally to RAM in the parameters.

In combination with sorting the ctrlport signals by usage, the used
resources can be reduced on the MAX10 devices from 6 to 3 M9K blocks
for a ctrlport_clk_cross instance without time and portids.


Original-commit: 0df2f9932cc270b8f1a705ea2543df8792005878
2020-08-06 16:17:33 -05:00
Andrew Moch f28357679e fpga: lib: Update xport_sv
- Detect dropped words at the dispatch level. This prevents
   an overflow on CHDR from block CPU.
 - Dropped packets are recorded as CPU or CHDR drop count
 - Refactor to put chdr_xport_adapter.sv in different clock
   domain to improve timing
 - Unwrinkle tkeep/trailing transitions


Original-commit: 7f86724ec3387f75d39d683b2ac5f5152e714c74
2020-08-05 17:18:12 -05:00
Aaron Rossetto 466e61d3ef fpga: rfnoc: Add RFNoC Keep One in N block
Original-commit: b39021ac2e642c22349183b6bc697daae01da5e9
2020-08-05 07:47:22 -05:00
Wade Fife 104a73e623 fpga: rfnoc: Add RFNoC Replay block
Original-commit: 6d92a1828121ca4b57d496bbf522820f961244b9
2020-08-04 15:40:08 -05:00
Wade Fife b4fed123c8 fpga: rfnoc: Add 4 KiB boundary check to sim_axi_ram
Adding a check for bursts that cross the 4 KiB boundary to the AXI4
memory model. Crossing a 4 KiB boundary is not allowed by AXI4.


Original-commit: 24f8bb39fd2769ff93d11b21152a834500152de4
2020-08-04 15:40:08 -05:00
Wade Fife 59f5dcfc4f fpga: rfnoc: Add support for CHDR_W < ITEM_W*NIPC
This change fixes the case where CHDR_W < ITEM_W*NIPC.

It also adds a state machine to stall the input to the pyld_fifo to
ensure that the pkt_info_fifo will not overflow. Previously in some
cases it allowed the same word to be inserted into the pyld_fifo
multiple times.


Original-commit: b862eda69cf41c7044a1805324f2fcfef5b0ba3d
2020-08-04 15:40:08 -05:00
Wade Fife 7834312db6 fpga: lib: Fix comments and indentation in axi_fifo_short.v
Original-commit: da3af4e6e86809038872a61696f3d1bac2e8583c
2020-08-04 15:40:08 -05:00
steviez 3bbc81bb44 fpga: n320: Add BIST (AA) image files
This adds new image files which come with a DRAM FIFO. The addition of
an N320 image with a DRAM FIFO allows DDR3 BIST to be run on an
assembled (motherboard + daughterboard) N320.

This image is intentionally very similar to the N300_AA and N310_AA
targets which serve the same purpose of providing an image with a DRAM
FIFO for their respective devices.


Original-commit: ae2b9bf7aeea6f8f98f6dacffdfc018d87107927
2020-07-31 14:32:54 -05:00
Andrew Moch 439c2af5e2 fpga: lib: Add xge features for new xport_sv
- Made some things optional to reduce logic when
   used with the new xport_sv:
   (1) Clocking to sys_clk
   (2) Preamble insertion
 - New options to CUTTHROUGH faster on the TX path.
   The new xport_sv already has a gate to accumulate at
   its clock crossing.


Original-commit: a68e7101167a4b5bf7b60ed90d963982aae735b8
2020-07-31 13:32:59 -05:00
Andrew Moch d5bbce58cb fpga: sim: Update PkgEthernet
Consolidated calcuation of last_tkeep and tkeep_last. Changed error
checking to support unwrinkling tkeep/trailing changes in 100G
etherent and support for testing packet dropping on backup.


Original-commit: 473b0f5abe882ca316a7fe1a59234676940ef26b
2020-07-31 13:22:29 -05:00
Andrew Moch 02e4ef3318 fpga: sim: Fix AxiLiteBfm
AxiLiteBfm incorrectly included stb argument on rd() and printed actual
response instead of expected in debug message.


Original-commit: cb7e9e24578ccf4db79878a7437a6a85ad315ee2
2020-07-31 13:10:00 -05:00
Andrew Moch 6606757fa7 fpga: lib: Update AxiLiteIf
This fixes a bug on wrstb in AxiLiteIf and adds a new AxiLiteIf_v that
can be used to stitch onto Verilog port_maps.


Original-commit: 6ef642e3ac44c52b98b124f30dc84b1683859989
2020-07-31 11:55:47 -05:00
Andrew Moch 4313178af4 fpga: lib: Fix chdr_mgmt_pkt_handler when CHDR_W != 64
Original-commit: 3beb450e2ab29e6021f4091fd1a3cc6522f994c4
2020-07-30 15:28:35 -05:00
Andrew Moch 77cadca8a9 fpga: tools: RESOLVE_PATH checks for an empty path
Original-commit: ffdce1c3fc229579b9d30afe489d2749c0c956ed
2020-07-30 15:00:06 -05:00
Wade Fife 2eb71626fb fpga: rfnoc: Add Signal Generator RFNoC block
Original-commit: 1e94f85b8bafc3f9acab7ef35d2675fa7e61f6f4
2020-07-30 12:51:41 -05:00
Wade Fife 3e1e0be3bc fpga: lib: Add axis_packetize module
This module takes an AXI-Stream without TLAST and outputs the
same AXI-Stream with TLAST based on the provided packet size
input.


Original-commit: b0b3849a18e1f2d3cb255a507b01ac5e7a9416a0
2020-07-30 12:51:41 -05:00
Jesse Zhang 0c67c21d6c fpga: Add Switchboard RFNoC block
Original-commit: 8db024d43bbb7cd05f5b18dd3d7cec09cac6ec4b
2020-07-30 12:50:30 -05:00
RobertWalstab 84a9230183 fpga, mpm: Bump FPGA compat number
Original-commit: 54d698e3707cf1be5d38537db783ebadd850e729
2020-07-24 15:24:14 -05:00
michael-west 4c7ee1eb8e TwinRX: Fix increased noise floor
- Fixed bus width from 25 to 24 bits

Signed-off-by: michael-west <michael.west@ettus.com>


Original-commit: fdd576cda1bab000745af66e565f4eb8c6272942
2020-07-21 11:47:20 -05:00
RobertWalstab 6dfa273771 fpga: remove liberio
Original-commit: 83a4756c957dd7698baeb56e13260d8edaa7bc2e
2020-07-20 16:01:03 -05:00
Wade Fife dce6ce8063 fpga: rfnoc: Fix testbenches to run under ModelSim
This updates the makefiles for the testbenches so they can be run using
"make modelsim" without any additional hacks. The "xsim" and "vsim"
simulation targets also still work.


Original-commit: e962cc4a5e51e2326eb656ee2a779ea26774687b
2020-07-20 15:33:22 -05:00
Martin Braun 2f517134cd fpga: e31x: Add gitignore file
Original-commit: dc32aa5cd4fb174ee3c616f854f499a53137aa75
2020-07-18 13:33:42 -05:00
Martin Braun b923e1bb2c e31x: Minor cleanup on top-level e31x.v module
- Fixed some incorrect comments
- Fixed some missing wire declarations for internal NIC
- Fix wire declarations for GPIO (they were declared too late)


Original-commit: b18eaa75de2d1dcba2a1be0ee0b862a57e976cca
2020-07-18 13:33:42 -05:00
RobertWalstab 8ad22c51e3 e31x: Swap out liberio for internal ethernet in the idle image
Original-commit: 74d157c8f67a413239c01fdfc78088623880f28f
2020-07-18 11:52:58 -05:00
RobertWalstab 51841521f8 e31x: fpga: connect device_id
Original-commit: 4d9c4749c1591bf416aacd429eea2a9d5a9bc5e6
2020-07-18 11:52:58 -05:00
Wade Fife d2febe93a8 fpga: rfnoc: Add RFNoC Moving Average block
Original-commit: b3c74a712a08c54e48713427bf46ea498b8e899b
2020-07-16 12:15:21 -05:00
RobertWalstab 0ab98653b2 n32x: Swap out liberio for internal Ethernet
Original-commit: cdb4a357284a0dd29d1120e2b6f7594f5f934f88
2020-07-16 10:00:12 -05:00
RobertWalstab b196be8d42 n3xx: Swap out liberio for internal Ethernet
Original-commit: 3555ab052e231905df2a47ee107dfdfc9cd8e4e9
2020-07-16 10:00:12 -05:00
RobertWalstab 0361a8fa3b e31x: Swap out liberio for internal Ethernet
Original-commit: 3f823004600472c7f4b173a0da83a3bd53968c40
2020-07-16 10:00:12 -05:00
Alex Williams 08c24691a9 e320: Swap out liberio for internal Ethernet
Original-commit: d01e091c4c7ccc323d305580a27754918b02974b
2020-07-16 10:00:12 -05:00
Max Köhler c33435c1b9 fpga: lib: modify ctrlport decoder to Verilog 2001 compatible syntax
Original-commit: 4f2148e7cada5a66ce5eee92ca956cb22b31b98b
2020-07-10 15:12:55 -05:00
Wade Fife 9ce170e4d5 fpga: n3xx: Fix White Rabbit images
Unused CHDR port was not being drained of discovery packets.


Original-commit: 8d57586d61356c42a80408b6bd71e8f74a8d40e2
2020-07-01 15:49:13 -05:00
Andrew Moch 05eb1bc2f1 fpga: lib: Add width agnostic version of Ethernet Interface
The rnfoc/xport section is refactored in System Verilog to allow the
following improvements
(1) CPU_W - Sets the size of the c2e and e2c pipes.  This can be run
    at a different clock rate than the main ethernet pipe
(2) CHDR_W - Sets the size of the v2e and e2v pipes. This can be run
    at a different clock rate than the main ethernet pipe
(3) ENET_W - Sets the size of the eth_tx and eth_rx pipes.

eth_interface_tb runs traffic from e2c,e2v,v2e,c2e simultaneously
against the original xport_sv implementation, and against the new
implementation with widths of 64/128/512. A chdr_management node
info request queries the port info of the node0 in the eth_interface.

eth_ifc_synth_test.sv can be compiled with the make xsim target to test
out the size of various configurations.


Original-commit: eed4988cc266a63370a4332351d02fadedde3a3b
2020-06-30 10:29:35 -05:00
Wade Fife cbe5e99e17 fpga: rfnoc: Add Log-Power block
Original-commit: cf82b36388880237fe7b690c16dde46afc1a3da3
2020-06-29 14:03:17 -05:00
Wade Fife c3f45a92a0 fpga: rfnoc: Fix chdr_update_length function
Original-commit: 1cef9d62d698a7cc33f936ab3df32e6dcd933487
2020-06-29 14:03:17 -05:00
Wade Fife 9ee2157f52 fpga: rfnoc: Add RFNoC Window block
Original-commit: 38caced6946243f0390c541df54160c45e4959cc
2020-06-29 13:41:15 -05:00
Wade Fife 5f792ad48e fpga: tools: Highlight suppressible errors from vlint
Original-commit: 5244c06ae71589a08f337371d91798a6ac3d292b
2020-06-29 13:41:15 -05:00
Wade Fife 9e0f859bb6 fpga: lib: Fix axi_packet_gate RAM dib width
Original-commit: ed1b58053c53bfbd3f3b667a0ebe0aa8066e2b0e
2020-06-29 13:41:15 -05:00
Andrew Moch 9b0e42678f fpga: lib: Add features to axi_lite.vh
Contains a fix for the AXI4LITE_ASSIGN macro, and adds
AXI4LITE_PORT_ASSIGN, AXI4LITE_PORT_ASSIGN_NR, and
AXI4LITE_DEBUG_ASSIGN macros.


Original-commit: c718faf3387a07a9a1b86ab473f6ed7ac4cb493a
2020-06-26 10:36:37 -05:00
Andrew Moch 23be04661f fpga: lib: Add synthesizable AXI4-Stream SV components
Components are connected together with AxiStreamIfc. Some features
include:
  (1) Add bytes to the start of a packet
  (2) Remove bytes from a packet
  (3) Wrappers for some older components
      a.  fifo - buffer but imediately pass a packet
      b.  packet_gate - buffer and hold till end of packet
      c.  width_conv - cross clock domains and change width of axi bus

The AxiStreamIf was moved from PkgAxiStreamBfm to its own file. It can
be used to connect to ports with continuous assignment.
AxiStreamPacketIf must be used procedurally but allows the following
new methods:
  - reached_packet_byte - notify when tdata contains a paritcular byte
  - get_packet_byte/get_packet_field - extract a byte or field from axi
  - put_packet_byte/put_packet_field - overwrite a byte or field onto axi


Original-commit: c3bca6c87700054c96320de119a58f6a688dbd5a
2020-06-25 14:44:04 -05:00
Wade Fife 6940db90e3 fpga: rfnoc: Fix read suppression test in rfnoc_block_axi_ram_fifo_tb
Original-commit: 8661f46df66329511ccb3cf083830e19d65ea402
2020-06-25 14:44:04 -05:00
Andrew Moch e008853357 fpga: lib: Add interface and model for AXI4-Lite
(1) Synthesizable AxiLiteIf
(2) Simulation model for AxiLite contains an AxiLiteTransaction class
    and an AxiLiteBfm class.

Important Methods
  a. wr - performs non-blocking write and checks for expected response
  b. wr_block - performs a blocking write and provides response
  c. rd - performs a non-blocking read and checks for expected response
  d. rd_block - persforms a blocking read  and provides response

The model allows parallel execution of reads and writes, but enforces
rd and write ordering when using the above methods.  When transactions
are posted directly, ordering is not guaranteed, and reads and writes
are put on the interface immediately.


Original-commit: afee1888dd7c2d9d95e537f505ce7ab36252763a
2020-06-24 09:56:31 -05:00