Commit Graph
100 Commits
Author SHA1 Message Date
Wade Fife 2f677eddda fpga: e31x: Cleanup MTU parameters
Original-commit: 55a1ef7e50d271459f44b98d55860bfb2bbe2d19
2022-09-01 14:41:55 -05:00
Wade Fife 919acb248f fpga: lib: Add MTU parameter to eth_internal
Original-commit: 2745b6c01b75ae4480a38f91b9601c231ce1ea72
2022-09-01 14:41:55 -05:00
Wade Fife 354b59e430 fpga: n3xx: Add PROTOVER to n3xx_mgt_wrapper
Original-commit: 936965c104696b7883674a713d457042eaeb249f
2022-09-01 14:41:55 -05:00
Wade Fife 21091fb07c fpga: e31x: Add PROTOVER to eth_internal
Original-commit: 4d85a77d5f1a97020a7ad7d06a1ce75d94964309
2022-09-01 14:41:55 -05:00
Wade Fife 92abd3945a fpga: n3xx: Remove unused USE_REPLAY parameter
Original-commit: 244b0a575fce2eb9e489b7f46c6e6cd13ec7a0bd
2022-09-01 14:41:55 -05:00
Wade Fife 82739c1dae fpga: lib: Add eth_ipv4_interface_tb
Original-commit: 4f9a71f12204728446723f171d4cf0edcbf5027a
2022-08-29 17:01:45 -05:00
Wade Fife 2a74e8cd67 fpga: lib: Add RegPort SystemVerilog interface
Original-commit: d628c136a0cca7dddc47711f86f52f2c9e2ca089
2022-08-29 17:01:45 -05:00
Wade Fife c09489b6b0 fpga: sim: Support unused tkeep in AxiStreamPacket::dump_bytes()
Original-commit: 0af84329a7d0f8c97131e14a522a2e0939dbb951
2022-08-29 17:01:45 -05:00
Wade Fife a23ff16c07 fpga: n3xx: Bump FPGA compat to 8.1
Original-commit: 65671437c81fe0395dd2400a1e36bbc5fd934b40
2022-08-29 17:01:45 -05:00
Wade Fife e087a3c12b fpga: e320: Bump FPGA compat to 6.1
Original-commit: 50949d28d47100aea4ebc0563f6c1092a3b9b57e
2022-08-29 17:01:45 -05:00
Wade Fife 20340f7054 fpga: lib: Add compat to Verilog transport adapter
Original-commit: e716c8c720718f69d39823b722f5e013df99a3d5
2022-08-29 17:01:45 -05:00
Wade Fife 5f4d53eacb fpga: e320: Support advanced transport adapter
- Fix NODE_INST
- Fix RFNOC_PROTOVER
- Add option to use SystemVerilog transport adapter for raw UDP


Original-commit: 0114e108af63d9ac785649c8099a042299624943
2022-08-29 17:01:45 -05:00
Wade Fife a270cb29d6 fpga: n3xx: Support advanced transport adapter
- Fix NODE_INST
- Fix RFNOC_PROTOVER
- Add option to use SystemVerilog transport adapter for raw UDP


Original-commit: 693ec2c896306bcba3686385e5861593040d4cbd
2022-08-29 17:01:45 -05:00
Wade Fife 6981891978 fpga: lib: Add verilog-compatible wrapper for eth_ipv4_interface
Original-commit: 7052a4f02bb5cab0a2ee7339af5f1e15da087a7b
2022-08-29 17:01:45 -05:00
Wade Fife 257e5b4db9 fpga: x400: Bump FPGA compat to 7.9
Original-commit: 910dd82599ff192523e04061582cbafb4394e207
2022-08-29 17:01:45 -05:00
Wade FifeandMartin Braun f2b4426b0f fpga: lib: Add advanced features to IPv4 SV transport adapter
This adds several features to the SystemVerilog Eth/IPv4/UDP transport
adaptor including:

- Compat register
- NODE_INST register
- Capabilities register
- KV map access for custom routing on RX data paths
- CHDR header removal for raw payloads to be sent over UDP

Also adds xport_adapter_ctrl.py, which allows controlling the new
registers.

Co-authored-by: Martin Braun <martin.braun@ettus.com>


Original-commit: 3c3da4c62f33d02bb05bcdc38e8929cbf2cdd9a3
2022-08-29 17:01:45 -05:00
Wade Fife cad2f7ba5c fpga: lib: Add support for length in tuser in eth_ipv4_add_udp
Original-commit: 672487634ef817026fad83d48d3c341f80fa4d46
2022-08-29 17:01:45 -05:00
Wade Fife dce09f8fd7 fpga: lib: Add chdr_strip_header module
Original-commit: 4bf988aa3c9aa3885dc30e3da7ea67fcec48c97e
2022-08-29 17:01:45 -05:00
Wade Fife 16587514ba fpga: x400: Fix transport adapter PROTOVER
Original-commit: 7b93c4a37abc91b6607a3401e39605bc23cae69f
2022-08-29 17:01:45 -05:00
Wade Fife 5af17e0984 fpga: x400: Fix NODE_INST for transport adapters
Set the NODE_INST parameter for each transport adapter on X4xx so that
each adapter has a unique node instance number.


Original-commit: 8e87a4d24aeeb77a9528ff67a36d8a0ae12e7137
2022-08-29 17:01:45 -05:00
Wade Fife 1756797ec2 fpga: lib: Fix NODE_INST parameter in eth_internal
The NODE_INST parameter was set to 0. This adds it as a parameter so
that each transport adapter can have a unique node instance number.


Original-commit: c6bfd2e7f8313d727c2e557958f1b1ac2f674d98
2022-08-29 17:01:45 -05:00
Wade Fife 032b9677aa fpga: lib: Add NET_CHDR_W parameter to transport adapters
The NET_CHDR_W parameter tells the transport adapter what CHDR width
is used in transport packets, such as Ethernet packets. By default the
CHDR width used by the transport and RFNoC core will be the same. The
NET_CHDR_W parameter can be used in situations where the RFNoC core
expects a CHDR width from the transport adapter that is different from
that used over the network. In this situation, the transport adapter
will rewrite the CHDR packets so that each side gets the expected CHDR
width.


Original-commit: a9e49b7c587ef778ee0fe327e8bdcb15e0b0fc95
2022-08-29 17:01:45 -05:00
Wade Fife f010ce051e fpga: Fix target dependencies in Makefile.xxx.inc
Original-commit: e0147fd19347e4e2b2ec1cae193d4c295b9c427b
2022-08-29 07:53:32 -05:00
Wade Fife ea58284d4d fpga: e31x: Fix IP dependencies
- Split SG1 and SG3 IP targets
- Remove non-existent "RFNOC" targets


Original-commit: 8320adbc18455a360d4bd26798d1f435701172b9
2022-08-29 07:53:32 -05:00
Wade Fife 3fc345d3ae fpga: sim: Update struct enum initialization
In Vivado 2021.1, it is no longer allowed to use "default: 0" to
initialize an enum within a packed struct. So we must initalize enum
data members explicitly now.


Original-commit: 8007b6b4dff5b64d476b2e3ccb68a777c2f02c8b
2022-08-25 13:55:30 -05:00
Wade Fife dd1e980463 fpga: lib: Fix addsub_hls
Original-commit: f3e28c36a0e37341038370856ab2babd1dff0b3b
2022-08-25 13:55:30 -05:00
Wade Fife 31c638f98c fpga: x400: Fix link status detection of 10 GbE IP
This fixes some issues with the 2021.1 version of the 10 GbE IP. In the
new version, link status is sporadically detected by the Xilinx IP when
nothing is connected to the port. Also, when the SFP is inserted, the
link status goes up and down multiple times. This change fixes this by
adding a counter and only considering it "linked" when the link has
been stable for some amount of time.


Original-commit: 846c7be2e42f1db6d7c7cc0b1128e014f83e3bae
2022-08-25 13:55:30 -05:00
Wade Fife 81bb2ae28f fpga: Update makefiles to allow parallel FPGA builds
This adds the ability to do IP generation and FPGA builds using the
--jobs (-j) option with Make. For example, rather than generating each
IP one after another, you can generate up to N at a time using N Vivado
instances. This greatly reduces the IP generation time. Similarly,
parallel jobs can be used to easily build different FPGA variants
simultaneously.

Because FPGA builds can consume a lot of memory, care must be taken to
ensure that the number of jobs is not too high for the amount of memory
available.

New IP make targets were added for each USRP so that IP can be built
separately from the FPGA. The IP targets are now a dependency on each
FPGA target.

For example, you can generate the IP for X310 using 4 parallel jobs
using the following command:

  make -j4 X310_IP

Or, build two X310 bitstreams simultaneously:

  make -j2 X310_XG X310_HG


Original-commit: 4b03e237a96ee277eefff257d65b08708c38662c
2022-08-16 10:16:22 -05:00
Wade Fife 287659ddeb fpga: Fix first arg in calls to $fatal()
This fixes warnings regarding the first argument to $fatal(), which is
supposed to be a number indicating what diagnostics to display. 1
corresponds to "Prints simulation time and location".


Original-commit: 58763bdfdaa276155ec6b79a3e5420de17172c7a
2022-06-28 10:34:18 -05:00
Wade Fife 03abebec26 fpga: x400: Fix AXI/LBUS testbench names
Original-commit: 9962898c08d6fdfb54699b7da3e726525b6cdff2
2022-06-28 10:34:18 -05:00
Wade Fife 6f2cbbfd16 x300: Add protover and chdr_width regs to x300_mb_iface
Original-commit: ec74e70cd0f44b780cef2303fc513cff3f232b10
2022-06-14 07:38:54 -05:00
Wade Fife b8ded164e5 fpga: rfnoc: Remove rfnoc_version from target YAML
This causes the latest RFNoC protocol version to be used by default
and avoids the need to update YAML files every time the RFNoC
protocol version gets bumped.


Original-commit: 92016a585a5223a9a7678134e318e412875b64c2
2022-05-11 12:29:35 -07:00
Wade Fife e89647e545 fpga: x400: Increase replay SEP buffer sizes
Original-commit: 41aadb29b952d563bf78c38b7bfd408d2f1d2519
2022-04-06 14:49:49 -07:00
Wade Fife 16c1235b30 fpga: Update all RFNoC images
Original-commit: 002ff9698e09b94c396736613e493f79e9c56442
2022-03-31 13:51:23 -07:00
Wade Fife b81ab96b12 rfnoc: Update device port names in image core YAML
Update USRP RFNoC iamge core YAML files to use the more consistent
device port names. Clean up the formatting and make the files more
consistent.


Original-commit: 6318eaeff548f760056af7c8172937a296409d25
2022-03-31 13:51:23 -07:00
Wade Fife 4784032014 fpga: n3xx: Add missing BIST image core headers
Original-commit: 958eab7ea804337bd904c119427d363a05aa5cf6
2022-03-29 14:45:04 -05:00
Wade Fife 61ee0ddec3 fpga: Use PROTOVER and CHDR_W from RFNoC image builder
This updates all RFNoC devices so that they get the RFNoC protocol
version and CHDR width in the same way, from the output generated by
the RFNoC image builder.


Original-commit: 6f038dc2f69b38e715206b2e700fdd3a1bbc638e
2022-03-29 14:45:04 -05:00
Wade Fife a0987ea0f8 fpga: n3xx: Fix clock frequency comments
Original-commit: 40f0d8e4e59a4d13a6d9b7ac07b4d649a5c813f9
2022-03-26 21:52:26 -05:00
Wade Fife 1dd8058c08 fpga: e31x: Update DRAM IP simulation
Update the simulation to use the renamed IP.
Add ModelSim support.


Original-commit: c0015db3ea80117e8c66966e55f337e4fe8d29c2
2022-03-23 08:55:36 -05:00
Wade Fife b2684c42a7 fpga: e31x: Fix DRAM traffic gen IP name
Change name in DRAM IP Makefile from IP_MIG_7SERIES_TG_SRCS to
IP_DDR3_16BIT_TG_SRCS to match the naming of other variables.


Original-commit: febf339e0df412e54cf43a204c280128d8ca1ec3
2022-03-23 08:55:36 -05:00
Wade Fife 37e0f51d67 fpga: x400: Add x410_400_128_rfnoc_image_core
Original-commit: 13c03d4c2f366b41f5dd526326775a499a21514c
2022-03-14 21:34:23 -05:00
Wade Fife 56e53d271e fpga: rfnoc: Make Replay packet length independent of burst size
Before this change, the packet size output by the Replay block during
playback was limited to length of a full memory burst transaction.
This led to relatively small packets during playback (typically
2 KiB) and had other side effects, such as simultaneous playback from
two different memory locations using different packet sizes because of
differences in memory alignment.

With this change, the configured packet size, as set by the register
REG_PLAY_WORDS_PER_PKT, is used for all packets except the last
packet of playback, which can of course be smaller.


Original-commit: 082a733c326d6332d581d5b7bf9ee86a503ba502
2022-03-09 07:57:21 -06:00
Wade Fife df7fd28589 fgpa: rfnoc: Set Replay memory transactions to 2 KiB
This sets the Replay block's counter width so that memory bursts are
up to 2 KiB. Previously, the counter width was fixed, which meant
that wide memories would require especially large buffers and could
exceed the 4 KiB limit imposed by AXI.


Original-commit: 08d03f881e2767f45ab7fc18c8003c9739b0ffb2
2022-03-09 07:57:21 -06:00
Wade Fife c10f9a960e fpga: x400: Cleanup FPGA Makefile
Original-commit: dd6442c7b6d70857e5bfe0b3b94072a6cf3d12e0
2022-03-04 18:46:12 -06:00
Wade Fife 32d1959e49 fpga: x400: Add support for DRAM with 400 MHz BW
Original-commit: bbda5411548a06a3c3ada7b02df8fa7fb44aaad5
2022-03-04 18:46:12 -06:00
Wade Fife f88b56d9cb fpga: x400: Change AXI XB for DRAM to 512-bit
Change the width of the crossbar in the AXI Interconnect IP from
256-bit to 512-bit to match the DRAM memory controller width and to
give better performance.


Original-commit: 822cd03c8cd686f8b0554774adcbdd3803128bc2
2022-03-04 18:46:12 -06:00
Wade Fife 9ddb360199 fpga: rfnoc: Fix strobe probability in radio simulator
Original-commit: 8f68886ee3045abb486bfa8179e7129ebd377580
2022-03-04 18:46:12 -06:00
Wade Fife 6227436d54 fpga: rfnoc: Regenerate noc_shells
Original-commit: 6ff8bd326b0da4d2f9e044a3df3e19b807459d25
2022-03-04 09:42:39 -06:00
Wade Fife 8630f2616c fpga: x400: Set replay SEP buffers to twice MTU
Original-commit: a297c9765a0309ff194bf36074871f5bb1b6c34d
2022-02-24 20:25:48 -06:00
Wade Fife 3d3c75f74d fpga: e320: Add DRAM ports
This adds two additional ports to the DRAM, for a total of up to
four channels connected to DRAM.


Original-commit: a91d8e49655dd6f69ce1153498266c1a95230772
2022-02-18 06:42:09 -07:00
Wade Fife 1c0724aae2 fpga: n3xx: Fix DRAM FIFO address alignment
Original-commit: 59e35418ea5e6a0383e124425829e3de7dfa3237
2022-02-10 19:46:39 -07:00
Wade Fife 8589361e40 fpga: rfnoc: Change AWIDTH default for axi_ram_fifo
Change AWIDTH to be the same as MEM_ADDR_W by default. Current USRPs
assume the AXI address width is the same as MEM_ADDR_W.


Original-commit: 6936a9ac664cbc312fd17a5ebab9b40069615f7a
2022-02-10 19:46:39 -07:00
Wade Fife c322899053 fpga: e31x: Add DRAM support
This adds DRAM support to E31x devices. Due to the size of the DDR3
memory controller, it is not enabled by default. You can include the
memory controller IP in the build by adding the DRAM environment
variable to your build. For example:

DRAM=1 make E310_SG3


Original-commit: 788fef11ef890c6dcee3be495fc381bcf2990d3b
2022-02-10 18:13:44 -07:00
Wade Fife 65448367b1 fpga: x400: Bump minor version
Original-commit: 5122ce9a399a5ba9c20293385ccef89e23ec3926
2022-02-07 13:08:11 -07:00
Wade Fife 1b84fb44b0 fpga: x400: Update rfnoc_image_core files
Updates the RFNoC image core files to include DRAM and default image
changes.


Original-commit: 58a2dfee34e2b4e9909a326a024fda6a615c4913
2022-02-07 13:08:11 -07:00
Wade Fife c885f401c0 fpga: x400: Add Replay to 100 and 200 MHz images
This adds the RFNoC replay block to the defautl 100 and 200 MHz images
for X410.


Original-commit: 6031a935df7e41c9fc1857b5b708a9034c850970
2022-02-07 13:08:11 -07:00
Wade Fife c2477b9519 fpga: x400: Add DRAM support
Original-commit: 19a333a2682898c4720a1316d4bcd6b3046d23ba
2022-02-07 13:08:11 -07:00
Wade Fife a265c582ff fpga: x400: Set DRAM speed to 2.0 GT/s
Original-commit: 7b8d45380577ee27916a59c3f66eafb6f00ea7ca
2022-02-07 13:08:11 -07:00
Wade Fife 9a4a9645ad fpga: x400: Add axi_inter_4x64_512_bd IP
Original-commit: 129440913803de793b82ddbd7b6f5605dacb8aa3
2022-02-07 13:08:11 -07:00
Wade Fife f5b6a04e5c fpga: x400: Add axi_inter_2x128_512_bd IP
Original-commit: e88c447a1a890a38ee875c14ab55a713056709b9
2022-02-07 13:08:11 -07:00
Wade Fife 729d780bd4 fpga: tools: Fix adding directories for HDL source
Original-commit: 6bb7d61251abd303049dfd0f47bd0266656797fb
2022-01-13 14:33:59 -06:00
Wade Fife fd541b0d1a fpga: hls: Add version to generated HLS IP
This change causes HLS IP to be exported with a version of 1.0.0
instead of a date code. Due to a bug in Vivado, date codes after
0x7FFFFFFF (anything in 2022 or beyond) cause an error. Setting
an explicit revision avoids this issue.

See Xilinx AR 76960 for details.


Original-commit: 51384afc2c5d4db9e2e45d97382edce8c8039b10
2022-01-13 14:33:59 -06:00
Wade Fife 9c73c857cf fpga: x400: Fix rfnoc_image_core.vh path
Previously, when running rfnoc_image_builder, the rfnoc_image_core.vh
file in the main x400 directory was being used instead of the one
generated by rfnoc_image_builder.


Original-commit: 121b6c560cacfb5deacdee664dd1f32cafef7b3d
2022-01-12 23:44:38 -06:00
Wade Fife 3566b21f6f fpga: x300: Fix time register readback
Original-commit: 610488690a5f7bf1dd828aa6b9a70dd0874ca87f
2021-12-15 17:16:32 -06:00
Wade Fife e7f0945319 fpga: tools: Update Vivado scripts to use python3
Original-commit: 38c2a19e04c6e0467a6cc79977ab51a030f9735d
2021-12-08 12:07:36 -08:00
Wade Fife 73506997bd rfnoc: Fix noc_shell direction comments
Some comments describing data flow direction were wrong. This commit
updates the Mako files and updates the noc_shell modules with newly
generated versions.


Original-commit: 270a7e13c365d05ba04ab44a2f844d96ba15f43b
2021-12-08 08:36:46 -06:00
Wade Fife 2589fd21c7 fpga: rfnoc: Add RFNoC CHDR resize module
Original-commit: a94ea11f00bba2c4227c9ab173eb4b6ef1049bad
2021-11-04 11:04:54 -05:00
Wade Fife c2c8f03038 fpga: rfnoc: Add CHDR management util functions
Add missing chdr_mgmt_*() and enum_to_chdr_w() functions.


Original-commit: f6ec1496486f14ce16042062bdddcec38fa316a5
2021-11-04 11:04:54 -05:00
Wade Fife 7b6cfde554 fpga: lib: Clean up axi_mux
Original-commit: 4c75e48d248e0e4f143a66da5d1598e546eaf53a
2021-10-28 23:15:41 -05:00
Wade Fife 165498c186 fpga: rfnoc: Add labels to axi_switch generate blocks
Original-commit: e18c0ffbc4d1cbe1c0f083185212d57a6c201716
2021-10-28 23:15:41 -05:00
Wade Fife 1a72b843e8 fpga: rfnoc: Add labels to chdr_mgmt_pkt_handler
Original-commit: a8bb7d3ad98a77fb23e3695721b4bdd3768e6508
2021-10-28 23:15:41 -05:00
Wade Fife 4e769632be fpga: rfnoc: Add documentation to chdr_xb_routing_table
Original-commit: 7dc2b620f7cb9dc72b9b77ce9c018823a4015b4e
2021-10-28 23:15:41 -05:00
Wade Fife 2e9f7b96ee siggen: Fix direction of rotation
The I and Q were swapped in sine_tone, which caused confusion and made
the rotation of REG_CARTESIAN clockwise by default. This effectively
made the resulting frequency negative. This PR makes the I and Q order
consistent with RFNoC and fixes the direction of rotation so that a
positive value for REG_PHASE_INC (phase increment) results in a
counter-clockwise rotation, which yields a positive frequency.


Original-commit: 4e6531f30648ede5be8f93fa49fdcd4973b73813
2021-10-27 07:56:09 -07:00
Wade Fife ac0f45bb0e fpga: x300: Update synchronizer constraint
Original-commit: a270c531f07ea3549ec2f3b69a38b2c5298bf47c
2021-09-13 13:20:37 -05:00
Wade Fife 3c4c049943 fpga: n3xx: Update synchronizer constraint
Original-commit: ab4b0c6e0eacbc68df3f211ce27790b1cfbc002f
2021-09-13 13:20:37 -05:00
Wade Fife 63c358c082 fpga: lib: Update example constraint in synchronizer
Original-commit: 71aedc922d9cd5348ad4829cf323e569688f660f
2021-09-13 13:20:37 -05:00
Wade Fife 463783f5e6 fpga: Update help message for setupenv.sh
Updates the language in setupenv.sh --help to better reflect that there
are many locations where Vivado is searched.


Original-commit: e64d3e28316f642c1203722b6f5f2af710a7e281
2021-09-10 15:07:05 -05:00
Wade Fife 38e4708a4a fpga: Remove stale references to UHD_FPGA_DIR
Original-commit: 8c0c30642d47d17e2fa9d168b462d7ace18cc3d4
2021-09-08 08:36:05 -05:00
Wade Fife 79add58c25 fpga: tools: Add UHD_FPGA_DIR definition to synthesis
This adds a Verilog definition named `UHD_FPGA_DIR that corresponds to
the location of the UHD "fpga" directory. This allows you to include
files in your out-of-tree modules relative to the FPGA directory. For
example, you could include the library header file rfnoc_chdr_utils.vh
using the following:

`include `"`UHD_FPGA_DIR/usrp3/lib/rfnoc/core/rfnoc_chdr_utils.vh`"

Some simulators may not support `" outside of the context of a `define,
in which case you can do the following:

`define RFNOC_CHDR_UTILS_PATH \
  `"`UHD_FPGA_DIR/usrp3/lib/rfnoc/core/rfnoc_chdr_utils.vh`"
`include `RFNOC_CHDR_UTILS_PATH


Original-commit: 66267f515802ff3f965fd44e1f0d3097ada7484f
2021-09-08 08:36:05 -05:00
Wade Fife 869861c8cf fpga: Set default part for sim in setupenv.sh
This sets the ARCH and PART_ID environment variables so that the
selected part family is used for simulations by default. This can be
overridden by changing them in the Makefile for the testbench if a
testbench requires a specific part family. Prior to this change, the
default was always ARCH=kintex7, PART_ID=xc7k410t/ffg900/-2, which
required support for that part to be installed.


Original-commit: c176046dff4941bcec27b0b72e5a68264c4808e5
2021-08-30 08:20:10 -05:00
Wade Fife 3b15237d6b x300: Fix sfpp_io_core tuser width
Original-commit: 34b51b40f59412ae42e99246a60dd70de53ee180
2021-08-27 08:24:07 -05:00
Wade Fife f3085587fd fpga: rfnoc: Fix EOB loss in DUC
There were some rare corner cases where the EOB could get lost in the
DUC due to the dds_timed logic not always passing it through as it
should. This resulted in an underflow error message at the end of
transmission.

This commit also fixes an issue where part of the last packet
used a frequency shift of 0 instead of the requested frequency
shift, and an issue where the first few samples of a burst used the
wrong frequency shift value.

Part of the fix includes adding a TUSER port to dds_sin_cos_lut_only.
The TUSER port is built into the IP but was disabled. It is now
enabled and set to 1 bit wide. This has a very small effect on
resource usage and can be left unconnected when not needed.

The dds_freq_tune block was shared by the DUC and DDC. To avoid
affecting the DDC, a new version, dds_freq_tune_duc, is being
added for the DUC to use that has the necessary fixes.

The new dds_wrapper.v is a wrapper for the dds_sin_cos_lut_only IP.
This IP has the undesirable behavior that new inputs must be provided
to push previous outputs through the IP. This wrapper hides that
complexity by adding some logic to ensure all data gets pushed through
automatically. This logic uses the TUSER port on the IP.

Finally, a testbench for dds_timed was added.


Original-commit: 77975d108a704ce18ec52b4ee1764381b1893752
2021-08-08 14:59:26 -05:00
Wade Fife acc8486ac1 fpga: sim: Add PkgComplex, PkgMath, and PkgRandom
PkgComplex adds functions for doing complex arithmetic in SystemVerilog
simulation.

PkgMath provides mathematical operations and constants that aren't
built into SystemVerilog, such as a constant for pi and the function
round().

PkgRandom adds randomization functions beyond what standard Verilog
supports but that don't require any special licenses or simulators.


Original-commit: da4202e6f74796603072aa14544581604e81df02
2021-08-08 14:59:26 -05:00
Wade Fife 3a6961a3f4 fpga: lib: Clean up and document lib files
Clean-up and document axi_tag_time, dds_freq_tune, and axi_sync.


Original-commit: 8edd13e6eba61ef2bfd96c7dc88b2642decbaa7a
2021-08-08 14:59:26 -05:00
Wade Fife 3e94b6698e rfnoc: duc: Remove stale references to CORDIC
Updated some comments that still referenced the old CORDIC
implementation, which is no longer used.


Original-commit: 18e5bdfa100a40376147d1a497645345b2a938b1
2021-08-08 14:59:26 -05:00
Wade Fife 95dfc4af53 fpga: x400: Fix x4xx_qsfp_wrapper testbench
Reorder dependencies so that sc_util_v1_0_vl_rfs.sv gets compiled
first when using ModelSim.


Original-commit: a9395823ed450aefa1c2d0c894dbcf976264365e
2021-06-22 16:24:54 -05:00
Wade Fife 29ac752be0 fpga: sim: Check for empty packet in clear_unused_bytes
Original-commit: 2615547a82bc4e06ff5fcb79c5c1efed76b058c7
2021-06-17 08:16:59 -05:00
Wade Fife 77a66a4de4 x400: sim: Move testbenches to sim folder
Original-commit: c0f9496d59947f8c9411b28d63d0c8e6244102a0
2021-06-17 08:16:59 -05:00
Wade Fife fcfc6bf387 fpga: Update testbenches to work in ModelSim
Original-commit: 0076076467303247c4e62e5824e5bf8ce79cbe66
2021-06-17 08:16:59 -05:00
Wade Fife 162632e7c1 fpga: x400: Add makefiles for RF testbenches
Original-commit: 319d8c6411f62a2150b21b38bfe5fd55366ee700
2021-06-17 08:16:59 -05:00
Wade Fife bdc67122b8 fpga: tools: Detect assertions in ModelSim simulation
This change allows assertion errors/failures in ModelSim to be
detected and causes ModelSim to return a non-zero value when such
an assertion error occurs. This allows the return value of ModelSim
to be used to determine whether or not the testbench passed.


Original-commit: 574146ec8909da367c3441189c2877a287892f7e
2021-06-17 08:16:59 -05:00
Wade Fife d37cc533a7 fpga: tools: Put SIM_SRCS at end of compile order
VHDL depends on the compile order. This commit changes the order so
that SIM_SRCS are compiled last with ModelSim to avoid issues with
dependencies.


Original-commit: b85b796cbc1f897a69ded1f3ecfba8ec92684c11
2021-06-17 08:16:59 -05:00
Wade Fife b5230b0256 fpga: tools: Support new FPGA types in viv_simulator.mak
This updates the existing PART_NAME generation used in simulation
makefiles to work with newer part families by calling
viv_gen_part_id.py to generate the part name needed by Vivado.


Original-commit: 648c70ae758ab1d15c7ec6cbe57672e8c27640cd
2021-06-17 08:16:59 -05:00
Wade Fife 81e8b63fb9 fpga: tools: Fix python2 reference in viv_ip_builder.mak
Original-commit: 244608187f824903ea2c8b003be1918d7dc21d5e
2021-06-17 08:16:59 -05:00
Wade Fife 99a4250c0b fpga: tools: Add modelsim.excludes
This is a list of testbenches that don't work with ModelSim and should
be excluded when running run_testbenches.py.


Original-commit: 6190eca14ec13db7456a059cbd69c93550aa45c7
2021-06-17 08:16:59 -05:00
Wade Fife 4baf8139c8 fpga: tools: Add modelsim.ini to ModelSim calls
This adds the MSIM_VIV_COMPLIBDIR environment variable to specify
a non-default location for the compilation libraries.

This also allows a modelsim.ini other than the one in the ModelSim
installation folder to be used. By default, the one in the simulation
libraries compilation directory will be used. This can be changed by
setting MSIM_MODELSIM_INI to the one you want to use, or set it to an
empty string to use the one in the ModelSim installation folder.


Original-commit: 08473776b28a949027ec8cf2596d8d1b438b979b
2021-06-17 08:16:59 -05:00
Wade Fife 1586d6c730 fpga: tools: Add features to run_testbenches.py
Run "make ip" in a separate step for each testbench. This allows some
testbenches to work better with ModelSim because it needs IP files that
aren't known until after the IP is generated.

Make run_testbenches.py more log friendly. Add a -l/--logged option for
when the output is being logged. In this case, we don't want to display
elapsed time every second.

Add "Begin TB Log:" and "End TB Log:" to the output to more easily tell
where the output from one testbench ends and another begins.

Use the basedir argument as the base directory in which to search for
testbenches so that a subset of the repo can be easily specified.


Original-commit: 5a4f0470919440819ab71f44fbc6f5f89a671e41
2021-06-17 08:16:59 -05:00
Wade Fife 69a7abba4d fpga: tools: Add ip target to simulation makefiles
Allow building of just the IP by running "make ip" in simulation
directories.


Original-commit: 4dc2b7010c0f3e41758b8192636ef7672caae0f7
2021-06-17 08:16:59 -05:00
61782b02d7 fpga: x400: Add support for X410 motherboard FPGA
Co-authored-by: Andrew Moch <Andrew.Moch@ni.com>
Co-authored-by: Daniel Jepson <daniel.jepson@ni.com>
Co-authored-by: Javier Valenzuela <javier.valenzuela@ni.com>
Co-authored-by: Joerg Hofrichter <joerg.hofrichter@ni.com>
Co-authored-by: Kumaran Subramoniam <kumaran.subramoniam@ni.com>
Co-authored-by: Max Köhler <max.koehler@ni.com>
Co-authored-by: Michael Auchter <michael.auchter@ni.com>
Co-authored-by: Paul Butler <paul.butler@ni.com>
Co-authored-by: Wade Fife <wade.fife@ettus.com>
Co-authored-by: Hector Rubio <hrubio@ni.com>


Original-commit: 6d3765605262016a80f71e36357f749ea35cbe5a
2021-06-10 11:56:58 -05:00
Wade Fife bfef20ea45 fpga: sim: Add slave_idle() to PkgAxiStreamBfm.sv
Original-commit: f706b89e6974e28ce76aadeeb06169becc86acba
2021-06-10 11:56:58 -05:00