Commit Graph
549 Commits
Author SHA1 Message Date
Max Köhler 264b33a416 fpga: x400: use parameter for RFDC info in RF core full
Original-commit: 97d108b6f9579865f1bbd62e1c9859d290337768
2024-09-09 10:18:59 -05:00
Wade Fife bea852caeb fpga: Remove build-usrp dirs when cleaning builds
Original-commit: 26553e3069d05102035e00861e8a7529efe50e00
2024-09-09 10:12:30 -05:00
Wade Fife 4b93935967 fpga: x400: Make DTS output match bitstream name
Original-commit: 2afc66f1325632a4bc0635217feefe666225f4e8
2024-09-09 10:12:30 -05:00
Wade Fife f13f084b15 fpga: Put dependencies first in Makefile SRCS list
Original-commit: 0de3eb63bba518d94058c985d759958caac388d5
2024-09-06 17:58:33 -05:00
Max Köhler 71c7b9044d fpga: x400: add register in 100G Eth TX path for timing
Original-commit: 7e457a190cf37b48090aebcc715a07851cbda9d2
2024-08-30 13:23:29 -05:00
Max Köhler 82545838b2 fpga: x440: fix conditional timing constraints
Original-commit: f407c1cc11f14fb3cef6975c62b6ba5c380aa9ce
2024-08-27 17:22:35 -05:00
Grant Meyerhoff 31ecc191a3 fpga: x440: correct crossbar replay port comments
Not a functional change. The comments for the replay block in the
crossbar_routes reflect a single replay block, but the FPGA image
actually has two replay blocks with half the number of ports as the
single block design.


Original-commit: 32efa102ce592ff16204b67b9aeb244e9589166e
2024-08-27 16:01:25 -05:00
Max Köhler ea4f2ff009 fpga: x440: refactor rf_core_full to use parameters on ports
Original-commit: 40bd20d240b2ee60ec58ad5a00a9ec9eebd1e9af
2024-08-21 08:06:41 -05:00
Max Köhler 08f8b269fa fpga: ci: remove color coding from FPGA bitfile name
Original-commit: eb5fe85748996675f2ec73e1f10857ba81e66c56
2024-07-11 15:29:53 +02:00
Martin Braun 0df7b0071c fpga: Fix warnings from building N3xx AA images
These bitfiles use four-port DRAM FIFOs and only connect two of those
ports. We skip the warnings as that is the intended build behaviour.


Original-commit: 52860eeb670da53c08dddb40dd950832b087acbe
2024-06-27 13:21:03 +02:00
Martin Braun fba65c68f7 image builder: Allow missing connections
The image builder will currently emit a warning if a NoC-block has
unconnected ports. This requires specifying `-W` to continue building,
which is the intended behaviour.

However, there are cases where there are legitimate reasons to not
connect a block, e.g., in the X310, where the radio block has 2x2 ports,
but we only connect 2 RX ports, and 1 TX port.

This adds a way to declare a "null" connection, which makes it explicit
in the image core YAML that a connection was deliberately omitted. Such
connections are created by connecting to a port called "_none_", e.g.:

```
connections:
  - { srcblk: _device_,  srcport: _none_, dstblk: radio0, dstport: in_1 }
```

The block name is irrelevant, but the schema requires providing a block
name.

This commit also amends the x3xx_radio_base.yml to avoid warnings when
building X3x0 bitfiles.


Original-commit: 6758966a5ac127a396e8b3b39f96aa484098e50f
2024-06-26 15:08:39 +02:00
Martin Braun d696c160db fpga: rfnoc: Harmonize x410_X4_400_rfnoc_image_core.yml
This file was repeating entries from x410_radio_base.yml, which none of
the other x410 image core YAML files do.


Original-commit: 1ba6fdaf9c3a17cbb46f976f9d4dd8349cf5adb7
2024-06-25 17:19:51 +02:00
Wade Fife 712142efdb fpga: sim: Initialize test_status
Initialize test_status for backwards compatability with testbenches
that don't call start_tb().


Original-commit: 72295360e65d989dd774deabc4add0a54eb6f97e
2024-06-20 11:35:27 +02:00
Ryan Volz 1451ae066b fpga/usrp3: Fix DC truncation bias by adding rounding to DDC chain.
A digital DC bias caused by various truncations in the DDC chain was
previously noticable with small signal levels, especially with high
decimation rates. This patch eliminates the bias by replacing the
truncation with rounding or simply keeping more bits for longer where it
makes sense.

This is essentially a forward port of a similar prior fix to the usrp2
DDC chain: https://github.com/EttusResearch/fpga/pull/4.

Signed-off-by: Ryan Volz <ryan.volz@gmail.com>


Original-commit: a57c162a0d11ab82a83c911a94272ceb6f7ff70a
2024-06-11 10:20:08 +02:00
Martin BraunandWade Fife 523212fa04 image builder: Add --build-ip-dir option
Co-authored-by: Wade Fife <wade.fife@ni.com>


Original-commit: 94b4de39d61ac4165ab18001b7d1a27c34698795
2024-06-11 10:20:08 +02:00
Wade Fife 0e6459250b fpga: tools: Force write when saving Vivado project file
Original-commit: 6abfd8a49aa3037a6784dd6acef801bed5ae3ed7
2024-06-11 10:20:08 +02:00
Wade Fife 8685870bf4 fpga: tools: Add --fpga-dir to repeat_fpga_build
Original-commit: 2ff91bcfc057d6d632c6a151ce2aed71d1103e91
2024-06-11 10:20:08 +02:00
Martin Braun 8d0cc11269 ci: Update FPGA CI pipelines to match new image builder
- Removes target names for X3x0 and X4x0 builds (these are now encoded
  in the YAML file)
- Change the image core YAML file names referenced in the pipeline YAMLs
  to match the contents of fpga/usrp3/top/x?00/*.yml
- Remove X410_XG_100 image since it is not a shipping image
- Add image_core_name arguments for all E320, E31x, N3xx targets


Original-commit: 50e07a5b42d4a244c12b5a13b51048573d0069ec
2024-06-11 10:20:08 +02:00
Martin Braun 6ef3795e42 fpga: Align build process for all targets
- All RFNoC capable targets now require rfnoc_image_builder to be built
- `make help` is updated for all targets to provide more useful and
  up-to-date information
- The FPGA manual is also updated
- All checked-in build artifacts are now removed from git
- axi_ram_fifo.yml is updated to provide include path information
  (required for building N3xx BIST images, which use this)


Original-commit: 28b994406d4c9547b1e2add62781b6a8162fdb74
2024-06-11 10:20:08 +02:00
Martin Braun ba5e431c5c fpga/mpm: x4xx: Add device DNA read capability
- Bumps FPGA compat from 8.2 to 8.3
- Adds three global motherboard registers to read the 96-bit device DNA
- MPM is updated to read these registers and update the device_info if
  compat version 8.3 is available


Original-commit: ad5f97f8284057b85ca98f47365c2a321edf7ece
2024-06-11 10:20:07 +02:00
Jonathon PendlumandMartin Braun d006250dc1 fpga: x400: Add PPS interface to X410/X440 BSP
This creates an IO port `pps` for X410, and two IO ports (`pps0`, `pps1`)
for X440 which allows modules inside the RFNoC image core to access the
FPGA. Note that accessing the PPS signal is generally not required for
RFNoC blocks which require access to timing.

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


Original-commit: c3525362643b56910692ad8ddc5d0e8cedd1869c
2024-06-11 10:20:07 +02:00
Martin Braun 6b3d10ad31 x300: Add support for reading device DNA
Original-commit: 14f487f1655516b0f10b40b94a16c8bf2dac33cc
2024-06-11 10:20:07 +02:00
Javier Valenzuela 6d89320721 fpga: x400: Add netlist make flow
Original-commit: 789fa8f65727afabdeb4eea30a941015c6cd2ad5
2024-06-11 10:20:07 +02:00
Martin Braun 69e728dba0 fpga: Add passthru CHDR/DMA transport adapter module
Original-commit: badb2356066555807a2f1e1d08fe968261dfdb04
2024-06-11 10:20:07 +02:00
Wade Fife 872de917bf fpga: x4xx: Replace Ethernet transport adapter
Original-commit: 34cee97e6206151e80d33e0e5367dcac62038a67
2024-06-11 10:20:07 +02:00
8669c68048 utils: image builder: Major update
Most important effect of this change: rfnoc_image_builder is now
required to build bitfiles, 'make' alone won't suffice any longer!

This is a huge changeset to the image builder that combines multiple new
features:

- There no longer is a separate edge file for the static router. The
  static routes are generated as a Verilog parameter directly into the
  rfnoc_core_kernel (which is also modified).
- image_builder.py is split up into several smaller files. Code is moved
  into yaml_utils.py, and the new files grc.py, builder_config.py
- Generic module support is added. Aside from noc blocks and stream
  endpoints, we can now instantiate arbitrary modules (they also require
  a YAML description file).
- To enable such modules, resets are now also tracked the same way that
  clock domains are.
- The ImageBuilderConfig config object now more closes matches the
  original YAML file. The attributes 'clk_domain_con' and 'block_con' are
  removed. Instead, the attributes 'connections' and 'clk_domains' are
  sanitized and amended with extra annotations. The templates are
  updated to reflect this change.
- IO ports can now carry parameters, e.g., to have variable wire widths
  based on the configuration.
- Many Pylint warnings were resolved.
- Add inheritance support for image core YAML files.
  This allows image core files to (recursively) inherit from other image
  core files. To do so, simply put an 'inherit' entry at the top of the
  file:
```yaml
inherit: 'x410_radio_base.yml'
```
- The inheritance feature is used as part of the image core files.
- Image core and DTS files are now generated as a build artefact into
  the build directory. This requires the usage of rfnoc_image_builder to
  build images. As a consequence, it is no longer required to check in
  image core Verilog files.
- As another consequence, rfnoc_image_builder is required to build
  bitfiles!
- Image flavours are no longer defined through Makefiles, but purely
  from the image core YAML files.
- Remove all image core YAML files that do not generate a shipping
  image. Because of the inheritance feature and the requirement to use
  the image builder, it is trivial to add new YAML files.
- Add support for transport adapters through the YAML files. Before,
  transport adapters were inferred from the make target (e.g.,
  X410_X4_200 would have four 10GbE links based on the 'X4' substring).
  Now, transport adapters are defined via the image core YAML.
- This feature is currently only used (or can be used) by the X4xx
  series. Older devices may or may not be ported to allow custom
  transport adapters in the future.
- Add parameters to the BSP YAMLs and the devices itself. This allows
  setting global parameters in the image core files. For example, the
  X4x0 devices use this to decide if they instantiate DRAM channels.
- DTS includes and constraint files can now be requested by
  blocks/transport adapter through their YAML files. They do no longer
  need to be listed in the Makefile.
- Support for secure image cores. These are image cores that allow
  incorporating RFNoC blocks that require license keys and thus can't
  live in an open-source environment. This solution adds the option for
  secure image cores without touching the open source feature set.
- Add --reuse option to allow manual editing of generated artefacts
- Allow IO signatures from any module: until now IO signatures had to be
  defined in a single file (io_signatures). This file will persist. In
  addition each module can add its own IO signature as with the same
  format the core IO signatures placed under the top level key
  `io_signatures`.  IO signatures are still maintained in a global
  dictionary. The consequence is that they can be shared among
  independent modules as well as they have to have a globally unique
  name. The image builder will warn about detected name clashes for the
  signatures.
- As a consequence, some less commonly used IO signatures were moved to
  their corresponding module YAML files.

Co-authored-by: Wade Fife <wade.fife@ni.com>
Co-authored-by: Lars Amsel <lars.amsel@ni.com>


Original-commit: a98ce2621e2a2dc25535fc700b49bfcb00b8eb59
2024-06-11 10:20:07 +02:00
Martin Braun 77d07a9714 fpga/rfnoc: Add license checker block
Original-commit: 5dad6c370f776981987afc2770d8a0ed0fb29575
2024-05-27 17:05:06 +02:00
Martin Braun cc28ffff60 fpga: Add license checker module
Original-commit: 8ed8927b944e7ad8a5da040c7f1951aad3535e11
2024-05-27 17:05:06 +02:00
Martin Braun cf85a6d40c fpga: Add cores for SHA256
Cores originate from https://github.com/secworks/sha256.


Original-commit: c43c72db097cbb5ebe29b7fa81484cbeaf19516b
2024-05-27 17:05:06 +02:00
Martin Braun 8af1711952 fpga: rfnoc: Enable blocks with no inputs/outputs
The following modifications are applied to allow RFNoC blocks with zero
input- or output ports (or none at all):

- The backend interface will no longer synthesize any flushing logic if
  there are no streaming ports
- The Mako templates are modified to allow generating code for blocks
  without streaming ports
- The BFM for RFNoC blocks (RfnocBlockCtrlBfm) is partially factored out
  into a parent class (RfnocBlockCtrlBfmCtrlOnly) which allows the
  simulation of such RFNoC blocks


Original-commit: 878cfcf48f125826e9d48b7c61a4ee7fd19e9a94
2024-05-27 17:05:06 +02:00
Martin Braun 76f67bbb0c fpga: Add module for reading Xilinx device DNA
- This provides a CtrlPort access to reading back the device DNA
- Available for US+ devices (i.e., RFSoC) and 7-series.


Original-commit: 43856f90da01cebc1e4b327f4435966ccd1df602
2024-05-27 17:05:06 +02:00
Max Köhler 75a2526efd fpga: x400: zbx: Set Locale for ZBX Lattice build
Original-commit: 02c1c06f708e035c9ce17d32832944bc94faf099
2024-05-21 20:37:52 -05:00
Max Köhler 10f0bc2e79 fpga: tools: Fix VHDL and Verilog types in modify_bdtcl
Original-commit: 041eef3472e0440730708053d47b1fb7b793c682
2024-05-18 21:29:35 -05:00
Wade Fife 894e5aa9a4 fpga: sim: Fix cast in PkgRandom
Original-commit: c6561226d819b75b18fffad283ec59d58109a951
2024-05-16 09:30:05 -05:00
Wade Fife 70ab61e202 fpga: sim: Fix test_status indices in PkgTestExec
Original-commit: 19a6ad3073647b0a7d98bded0a7d23133dc97945
2024-05-16 09:29:37 -05:00
Max Köhler c719cf1406 fpga: rfnoc: reverse FIR filter coefficients to get embedded in DSPE48
Original-commit: ea164a936b924b05a5b4cb9dd50df8acc3700c1a
2024-04-26 15:19:23 -05:00
Max Köhler fa95da3f7f fpga: x400: Place SPI into IOB on X440
Placing the SPI registers into the IOB makes timing closure more
reliable.


Original-commit: 6c25d54c34f0cc4612d5c9d27e0cbd90ff248795
2024-04-09 17:12:44 -05:00
Wade Fife 1a4d0543f6 fpga: tools: Fix VIVADO_PROJECT variable
Original-commit: 44e7651feee257319dff00577920fe5771473d62
2024-04-02 22:48:02 -05:00
Wade Fife 822d1bd26d fpga: Add option to specify build output directory
Original-commit: 58fb72a82da8bb638dbdfe44d3be84e8382c10a2
2024-03-15 20:08:15 -05:00
Wade Fife 600df8752c fpga: Add option to build IP only
Original-commit: adcca0acd995a75fb2dede4d6a86641821e49e3d
2024-03-15 20:07:28 -05:00
Wade Fife a82a2d122e fpga: Add Vivado project option to USRP FPGA builds
Original-commit: 2e0db35eaf69947c344f67c9f38132e33f88a141
2024-03-15 20:05:39 -05:00
Wade Fife 51865aa003 fpga: tools: Add option to save Vivado project
Original-commit: 8f9beccebe54a21d4993f8298c184426671624b0
2024-03-15 20:05:39 -05:00
Wade Fife 5c23c71e44 fpga: utils: Use default image core name
Original-commit: e7167fd0448f65c07b4a061e2bb1678ce2d06031
2024-03-15 00:32:53 -05:00
Wade Fife fc35c2a66a fpga: n3xx: Rename BIST image cores
Rename the BIST image cores to match the default image core names. This
eliminates the need to provide special arguments to build these images.


Original-commit: aae712c2eafe3f78ba8ed553190f7010a2d17c57
2024-03-15 00:32:53 -05:00
Wade Fife 9b6fc5d501 fpga: Add incremental to strategies for e3xx, n3xx, x3xx
Original-commit: 4b63ca00894944e03e7897f96316ab24cd5411d1
2024-03-14 16:35:11 -05:00
Javier Valenzuela 629266db08 fpga: Update x3xx/e3xx RFNoC image core files
Original-commit: d4412b0022f07f94ccbb3b314ac7b81de1a479b8
2024-03-13 21:35:39 -05:00
Max Köhler a8937b3500 fpga: tools: Fix -quiet in modify_bdtcl
Original-commit: 342221055021cbb63387362e26184d24d61746da
2024-03-13 21:30:52 -05:00
Francisco Salomon 2e0177484c fpga: rfnoc: Add EOB to source port of null_src_sink block
Original-commit: 3a04db78e4f0bb07b63eed75416dd0164e3221df
2024-03-12 16:05:39 -05:00
Max Köhler e9700b2081 fpga: x4xx: add option for incremental Vivado build
So far only the implementation after opt_run is affected by the changes.


Original-commit: 4c56b1b55ff3ae10561bd5efc83e3bb9a6a818d6
2024-03-12 16:03:23 -05:00
Max Köhler 275373c06b fpga: tools: viv_ip_utils to update hdl_sources.tcl
Original-commit: 1e8521f52ee9ba778d4240f1a0a197642f3cee8d
2024-03-08 08:23:49 -06:00