DuneNvme.git
5 weeks agoDocumentation and build changes for 1.0.2 release. master release-1.0.2
Terry Barnaby [Mon, 17 Aug 2020 09:39:50 +0000 (10:39 +0100)]
Documentation and build changes for 1.0.2 release.

5 weeks agoDocumentation updates.
Terry Barnaby [Mon, 17 Aug 2020 07:51:00 +0000 (08:51 +0100)]
Documentation updates.

5 weeks agoIn NvmeRead now clears Fifo when read is re-triggered. We have also added a ReadError...
Terry Barnaby [Mon, 17 Aug 2020 06:04:40 +0000 (07:04 +0100)]
In NvmeRead now clears Fifo when read is re-triggered. We have also added a ReadError status register to provide the NVMe error status value should this occur.
There was a bug in the test software that could lead to read block errors being reported. This would occur when one of the two NVMe devices was slower than the other when reading data such as with the FireCuda drives that have a SLC cache as well as RAM cache shortly after a write of data. The software fifos have had their size increased to help handle this and will provide an error if they overflow.

5 weeks agoIn NvmeRead now clears Fifo when read is re-triggered.
Terry Barnaby [Sat, 15 Aug 2020 12:37:07 +0000 (13:37 +0100)]
In NvmeRead now clears Fifo when read is re-triggered.

5 weeks agoFixed an issue where the peakLatency value was occasionally invalid.
Terry Barnaby [Sat, 15 Aug 2020 07:41:07 +0000 (08:41 +0100)]
Fixed an issue where the peakLatency value was occasionally invalid.
Removed incorrect/unused K800 constraint.

5 weeks agoModified NvmeStorageUnit.vhd to support Ultrascale+ PCIe blocks with Platform set...
Terry Barnaby [Fri, 14 Aug 2020 11:07:52 +0000 (12:07 +0100)]
Modified NvmeStorageUnit.vhd to support Ultrascale+ PCIe blocks with Platform set to "Ultrascale+".

6 weeks agoChanged the license to the Apache License version 2.0 for most files.
Terry Barnaby [Fri, 14 Aug 2020 09:44:48 +0000 (10:44 +0100)]
Changed the license to the Apache License version 2.0 for most files.

6 weeks agoIntegrated build system changes to supporAdam Gillard at Bristol University.t multipl...
Terry Barnaby [Thu, 13 Aug 2020 11:05:37 +0000 (12:05 +0100)]
Integrated build system changes to supporAdam Gillard at Bristol University.t multiple borad types from Adam Gillard at Bristol University.
Integrated K800 board build files from Adam Gillard at Bristol University.

6 weeks agoFixed a minor bug in the test_nvme test software where read block validation was...
Terry Barnaby [Wed, 12 Aug 2020 15:39:23 +0000 (16:39 +0100)]
Fixed a minor bug in the test_nvme test software where read block validation was incorrect once the 0x40000000 block integer value had been reached.

6 weeks agoAdded support to the NvmeRead module to trim/deallocate a set of data blocks.
Terry Barnaby [Tue, 11 Aug 2020 13:47:47 +0000 (14:47 +0100)]
Added support to the NvmeRead module to trim/deallocate a set of data blocks.
Fixed an issue in NvmeWrite if the optional trim function was enabled to trim the correct number of blocks (was doing 8x less).
Disabled Trim in NvmeWrite as support is now in NvmeRead where it is better placed for Dune usage and the way current NVMe’s operate.
Improved NvmeRead performance to a Linux program. This was done by collating the small 128 Byte PCIe packets into a pseudo 4k block PCIe packet within the NvmeRead engine and sending these through the streams to the Linux driver. This reduces packet processing requirements in the Linux driver and application. Measured read performance is now in the order of 400 MBytes/sec on the test system. The NvmeRead engines SendFullBlock boolean can enable/disable this feature.

6 weeks agoImproved CDC crossing system when reading registers.
Terry Barnaby [Sun, 9 Aug 2020 08:01:20 +0000 (09:01 +0100)]
Improved CDC crossing system when reading registers.
Added support to the NvmeRead module to trim.deallocate a set of data blocks.
Fixed an issue in NvmeWrite if the optional trim function was enabled to trim the correct number of blocks (was doing 8x less).

7 weeks agoSecond part of improved register access with system to support Wishbone bus better.
Terry Barnaby [Fri, 7 Aug 2020 05:50:42 +0000 (06:50 +0100)]
Second part of improved register access with system to support Wishbone bus better.

7 weeks agoImproved register access with system to support Wishbone easier and reduce CDC issues.
Terry Barnaby [Thu, 6 Aug 2020 09:22:49 +0000 (10:22 +0100)]
Improved register access with system to support Wishbone easier and reduce CDC issues.

2 months agoMinor bugfix release to aid debugging. release-1.0.1
Terry Barnaby [Sat, 18 Jul 2020 08:08:29 +0000 (09:08 +0100)]
Minor bugfix release to aid debugging.
1. The bfpga_driver's Makefile now finds the correct PCI device when loading the bfpga Linux driver.
2. The bfpga driver's udev file, bfpga.rules, now has the correct device name.
3. Fix to the test code for correct bfpga device name string.
4. Added NVMe PCIe phy_status and link_status signals to the NvmeStorageUnit's status register (bits 30 and 31).

3 months agoUpdates for first release 1.0.0. release-1.0.0
Terry Barnaby [Tue, 16 Jun 2020 10:32:19 +0000 (11:32 +0100)]
Updates for first release 1.0.0.

3 months agoOspero board support updates.
Terry Barnaby [Tue, 16 Jun 2020 07:23:16 +0000 (08:23 +0100)]
Ospero board support updates.
NvmeWrite: Added complete status bit to status register.

3 months agoDocumentation updates.
Terry Barnaby [Sun, 14 Jun 2020 08:24:22 +0000 (09:24 +0100)]
Documentation updates.

3 months agoRelease notes added.
Terry Barnaby [Sun, 14 Jun 2020 08:21:26 +0000 (09:21 +0100)]
Release notes added.

3 months agoDocumentation updates.
Terry Barnaby [Sun, 14 Jun 2020 08:00:06 +0000 (09:00 +0100)]
Documentation updates.

3 months agoBuild system changes for multiple FPGA targets.
Terry Barnaby [Sun, 14 Jun 2020 07:46:32 +0000 (08:46 +0100)]
Build system changes for multiple FPGA targets.
Build system changes for release.

3 months agoDocumentation updates.
Terry Barnaby [Sat, 13 Jun 2020 09:07:32 +0000 (10:07 +0100)]
Documentation updates.

3 months agoAdded support for the Ospero OP47 NVMe board. This is untested as yet.
Terry Barnaby [Sat, 13 Jun 2020 08:37:43 +0000 (09:37 +0100)]
Added support for the Ospero OP47 NVMe board. This is untested as yet.
Test software: Improvements and script changes for testing Samsung 570 Pro.

3 months agoTest software: Added DataSet management trim and info commands and scripts for deallo...
Terry Barnaby [Sat, 13 Jun 2020 05:07:33 +0000 (06:07 +0100)]
Test software: Added DataSet management trim and info commands and scripts for deallocate performance testing.

3 months agoNvmeStorage: Fixed an issue that caused registers to be read wrong occassionaly.
Terry Barnaby [Wed, 10 Jun 2020 15:15:33 +0000 (16:15 +0100)]
NvmeStorage: Fixed an issue that caused registers to be read wrong occassionaly.
Test: Added extra performance testing code including deallocate performance.

3 months agoDocumentation updates.
Terry Barnaby [Wed, 10 Jun 2020 10:41:16 +0000 (11:41 +0100)]
Documentation updates.

3 months agoDoucmnetation updates.
Terry Barnaby [Wed, 10 Jun 2020 07:48:04 +0000 (08:48 +0100)]
Doucmnetation updates.
Default parameter update.

3 months agoDocumentation updates.
Terry Barnaby [Wed, 10 Jun 2020 07:35:52 +0000 (08:35 +0100)]
Documentation updates.

3 months agoDoucumentation updates.
Terry Barnaby [Wed, 10 Jun 2020 06:34:13 +0000 (07:34 +0100)]
Doucumentation updates.

3 months agoCode tidy ups.
Terry Barnaby [Wed, 10 Jun 2020 05:15:20 +0000 (06:15 +0100)]
Code tidy ups.

3 months agoTest software additions.
Terry Barnaby [Tue, 9 Jun 2020 18:40:50 +0000 (19:40 +0100)]
Test software additions.
Fixed an issue where the first 512 Byte block had incorrect data if a new capture was started without a reset.

3 months agoFifo: Use BlockRAM implementation for portability.
Terry Barnaby [Tue, 9 Jun 2020 15:16:38 +0000 (16:16 +0100)]
Fifo: Use BlockRAM implementation for portability.
Fixes for continuous operation.
Test: Improvements to test software.

3 months agoOccassionaly blocks were being divered to the incorrect Nvme. Fixed.
Terry Barnaby [Sun, 7 Jun 2020 06:26:12 +0000 (07:26 +0100)]
Occassionaly blocks were being divered to the incorrect Nvme. Fixed.

3 months agoSet default available blocks to 400G.
Terry Barnaby [Sat, 6 Jun 2020 10:05:36 +0000 (11:05 +0100)]
Set default available blocks to 400G.
Test software added captureRepeat test.
Code tidy ups.

3 months agoFifo updated to more recent version to allow use of BlockRAM/FIFO hard blocks.
Terry Barnaby [Sat, 6 Jun 2020 09:01:33 +0000 (10:01 +0100)]
Fifo updated to more recent version to allow use of BlockRAM/FIFO hard blocks.

3 months agoNvmeConfig: Updated to use latest NvmeQueue engine.
Terry Barnaby [Sat, 6 Jun 2020 07:27:06 +0000 (08:27 +0100)]
NvmeConfig: Updated to use latest NvmeQueue engine.
Test software updated for latest nvmeConfig.

3 months agoNvmeRead: Initial basic bandwidth management support. Currently stops reads while...
Terry Barnaby [Fri, 5 Jun 2020 14:11:08 +0000 (15:11 +0100)]
NvmeRead: Initial basic bandwidth management support. Currently stops reads while writes happening.

3 months agoTest software: Added file write.
Terry Barnaby [Fri, 5 Jun 2020 12:40:26 +0000 (13:40 +0100)]
Test software: Added file write.

3 months agoDocumentation updates.
Terry Barnaby [Fri, 5 Jun 2020 12:26:46 +0000 (13:26 +0100)]
Documentation updates.

3 months agoDocumentation updates.
Terry Barnaby [Fri, 5 Jun 2020 12:25:32 +0000 (13:25 +0100)]
Documentation updates.

3 months agoImprovements to test software. Includes a tidy up, better comments and new captureAnd...
Terry Barnaby [Fri, 5 Jun 2020 10:48:18 +0000 (11:48 +0100)]
Improvements to test software. Includes a tidy up, better comments and new captureAndRead test.

3 months agoAdded Fifo.vhd as it was missing from git.
Terry Barnaby [Fri, 5 Jun 2020 05:31:33 +0000 (06:31 +0100)]
Added Fifo.vhd as it was missing from git.

3 months agoNvmwWrite: Fixed an ocassional data value write error within a packet.
Terry Barnaby [Fri, 5 Jun 2020 04:43:48 +0000 (05:43 +0100)]
NvmwWrite: Fixed an ocassional data value write error within a packet.
Test software improved.
bfpga driver improvements.

3 months agoNvmeStreamMux: Improvements.
Terry Barnaby [Tue, 2 Jun 2020 08:05:52 +0000 (09:05 +0100)]
NvmeStreamMux: Improvements.
Large modifications to test software.

3 months agoVersion update to 1.0.0 was premature.
Terry Barnaby [Mon, 1 Jun 2020 08:22:00 +0000 (09:22 +0100)]
Version update to 1.0.0 was premature.

3 months agoDocumentation updates in VHDL.
Terry Barnaby [Mon, 1 Jun 2020 08:16:27 +0000 (09:16 +0100)]
Documentation updates in VHDL.
Improved PcieStreamMux implementation.

3 months agobfpga device driver performance imporvements.
Terry Barnaby [Fri, 29 May 2020 17:09:21 +0000 (18:09 +0100)]
bfpga device driver performance imporvements.

3 months agoMore timing constraints tidy ups.
Terry Barnaby [Wed, 27 May 2020 16:28:06 +0000 (17:28 +0100)]
More timing constraints tidy ups.

3 months agoTiming and CDC improvements.
Terry Barnaby [Wed, 27 May 2020 16:09:18 +0000 (17:09 +0100)]
Timing and CDC improvements.

3 months agoMove to 250 Mhz by default.
Terry Barnaby [Wed, 27 May 2020 10:38:26 +0000 (11:38 +0100)]
Move to 250 Mhz by default.
Fix pcie_nvme[01] timing issues (Use registered PcieStreamMux)
Fix peakLatency timing issue.
Add max number of blocks to capture bound.
Move Nvme parameters to generics of NvmeStorage.
Tidy up timing constraints (more needed).

4 months agoMove to 250 MHz operation and improve timing.
Terry Barnaby [Tue, 26 May 2020 05:28:18 +0000 (06:28 +0100)]
Move to 250 MHz operation and improve timing.

4 months agoDocumentation updates.
Terry Barnaby [Fri, 22 May 2020 07:46:36 +0000 (08:46 +0100)]
Documentation updates.

4 months agoDocumentation updates.
Terry Barnaby [Fri, 22 May 2020 07:30:50 +0000 (08:30 +0100)]
Documentation updates.

4 months agoDocumentation updates.
Terry Barnaby [Thu, 21 May 2020 15:05:41 +0000 (16:05 +0100)]
Documentation updates.

4 months agoDocumentation updates.
Terry Barnaby [Thu, 21 May 2020 13:44:44 +0000 (14:44 +0100)]
Documentation updates.

4 months agoDocumentation changes.
Terry Barnaby [Thu, 21 May 2020 11:47:18 +0000 (12:47 +0100)]
Documentation changes.

4 months agoDocumentation updates.
Terry Barnaby [Thu, 21 May 2020 11:41:25 +0000 (12:41 +0100)]
Documentation updates.
Added "Project" parameter.
Build system changes.

4 months agoDocumentation changes.
Terry Barnaby [Thu, 21 May 2020 10:42:58 +0000 (11:42 +0100)]
Documentation changes.

4 months agoNow supports multiple NVMe clock inputs.
Terry Barnaby [Thu, 21 May 2020 09:28:48 +0000 (10:28 +0100)]
Now supports multiple NVMe clock inputs.
Some tidy ups.

4 months agoAdded parameter to enable Nvme configuration at reset.
Terry Barnaby [Thu, 21 May 2020 07:21:21 +0000 (08:21 +0100)]
Added parameter to enable Nvme configuration at reset.
Some name changes.

4 months agoAdded dataDropBlock functionality.
Terry Barnaby [Thu, 21 May 2020 06:33:44 +0000 (07:33 +0100)]
Added dataDropBlock functionality.
Changed some signal names.

4 months agoAdded Nvme trim/deallocate functionality.
Terry Barnaby [Wed, 20 May 2020 15:38:39 +0000 (16:38 +0100)]
Added Nvme trim/deallocate functionality.
Added dataDropBlocks signal (doesn't do anything yet).
NvmeSim: Improved simulation of Nvme.

4 months agoNvme's reset line wasn't driven in the dual Nvme mode.
Terry Barnaby [Wed, 20 May 2020 12:58:13 +0000 (13:58 +0100)]
Nvme's reset line wasn't driven in the dual Nvme mode.

4 months agoNvmeRead: Improved system. Now working with Pcie address tracking block numbers.
Terry Barnaby [Wed, 20 May 2020 11:07:49 +0000 (12:07 +0100)]
NvmeRead: Improved system. Now working with Pcie address tracking block numbers.

4 months agoInitial NvmeRead additions.
Terry Barnaby [Wed, 20 May 2020 07:17:26 +0000 (08:17 +0100)]
Initial NvmeRead additions.

4 months agoRegister CDC improvements.
Terry Barnaby [Tue, 19 May 2020 10:46:33 +0000 (11:46 +0100)]
Register CDC improvements.

4 months agoRegister access: Added delay on read to handle clock domain crossing latency.
Terry Barnaby [Tue, 19 May 2020 08:28:29 +0000 (09:28 +0100)]
Register access: Added delay on read to handle clock domain crossing latency.
Some tidy ups.

4 months agoDual Nvme, IP changes and comment changes.
Terry Barnaby [Tue, 19 May 2020 07:36:03 +0000 (08:36 +0100)]
Dual Nvme, IP changes and comment changes.

4 months agoChanges to support true dual Nvme mode.
Terry Barnaby [Mon, 18 May 2020 13:47:07 +0000 (14:47 +0100)]
Changes to support true dual Nvme mode.
Note this works but still needs some work especially timing constaints.

4 months agoDocumentation updates.
Terry Barnaby [Thu, 14 May 2020 09:22:20 +0000 (10:22 +0100)]
Documentation updates.

4 months agoVersion number update.
Terry Barnaby [Wed, 13 May 2020 15:28:20 +0000 (16:28 +0100)]
Version number update.

4 months agoFirst support for dual Nvme devices. This includes two Nvme devices but only the... first-dual-nvme-support
Terry Barnaby [Wed, 13 May 2020 15:24:12 +0000 (16:24 +0100)]
First support for dual Nvme devices. This includes two Nvme devices but only the first
one is accessed at the moment. It does have the overal changes needed to support the dual Nvme
system though.

4 months agoCode comment tidy.
Terry Barnaby [Tue, 12 May 2020 09:48:50 +0000 (10:48 +0100)]
Code comment tidy.

4 months agoMajor changes to new top level API. New-top-level-api
Terry Barnaby [Tue, 12 May 2020 09:27:39 +0000 (10:27 +0100)]
Major changes to new top level API.
Various code tidy ups.
Tidy Axis naming.
Modify to use 4 keep bits for DWord only transfers within NvmeStorage.

4 months agoDuneNvmeStorageManual updates for new API.
Terry Barnaby [Mon, 11 May 2020 16:56:57 +0000 (17:56 +0100)]
DuneNvmeStorageManual updates for new API.
Started on modifying code for new API.
Build system updates.

4 months agoBuild system changes.
Terry Barnaby [Mon, 11 May 2020 12:36:28 +0000 (13:36 +0100)]
Build system changes.

4 months agoBuild system changes.
Terry Barnaby [Mon, 11 May 2020 10:51:40 +0000 (11:51 +0100)]
Build system changes.

4 months agoTidy up of source tree for new Git tree layout.
Terry Barnaby [Mon, 11 May 2020 10:48:10 +0000 (11:48 +0100)]
Tidy up of source tree for new Git tree layout.

4 months agoMajor change to GIT source tree layout, simplifying it. git-tree-layout-change
Terry Barnaby [Mon, 11 May 2020 09:38:19 +0000 (10:38 +0100)]
Major change to GIT source tree layout, simplifying it.

4 months agoNvmeQueues: Modified to use Blockram for queue storage. NvmeQueues-in-blockram
Terry Barnaby [Mon, 11 May 2020 08:54:32 +0000 (09:54 +0100)]
NvmeQueues: Modified to use Blockram for queue storage.
NvmeWrite: Implemented block process queue so that blocknumbers are written in order.
General improvements.

4 months agoNvmeWrite now using 8 simultaineous writes. Multiple-write-buffers-working
Terry Barnaby [Sat, 9 May 2020 06:07:45 +0000 (07:07 +0100)]
NvmeWrite now using 8 simultaineous writes.
General improvements.

4 months agoNvmeWrite: Implemented multiple write buffers. Multiple-write-buffers
Terry Barnaby [Thu, 7 May 2020 12:56:55 +0000 (13:56 +0100)]
NvmeWrite: Implemented multiple write buffers.
General tidyups.

4 months agoUpdated DuneNvmeTest to match current main DumeNvme source.
Terry Barnaby [Wed, 6 May 2020 09:37:51 +0000 (10:37 +0100)]
Updated DuneNvmeTest to match current main DumeNvme source.

4 months agoNvmeWrite: Added initial multiple write buffer system.
Terry Barnaby [Wed, 6 May 2020 09:25:49 +0000 (10:25 +0100)]
NvmeWrite: Added initial multiple write buffer system.
bfpga_driver: Updated for latest Linux kernels.
General updates:

4 months agoDocumentation updates to fix WebSys menus being hidden on doxygen pages.
Terry Barnaby [Mon, 4 May 2020 10:56:40 +0000 (11:56 +0100)]
Documentation updates to fix WebSys menus being hidden on doxygen pages.

4 months agoReadme update.
Terry Barnaby [Mon, 4 May 2020 09:45:46 +0000 (10:45 +0100)]
Readme update.

4 months agoNvmeWrite: Added ability to write multiple blocks concurently in a simplistic way...
Terry Barnaby [Mon, 4 May 2020 09:42:09 +0000 (10:42 +0100)]
NvmeWrite: Added ability to write multiple blocks concurently in a simplistic way for an initial performance test.
NvmeSim: Added ability to set actual read block data size for easier Simulation as well as full block size for performance testing without Nvme.
General code tidy ups.

4 months agoAdded NvmwWrite functionality. The system can now write a stream to the Nvme.
Terry Barnaby [Fri, 1 May 2020 06:57:15 +0000 (07:57 +0100)]
Added NvmwWrite functionality. The system can now write a stream to the Nvme.
Lots of misc changes.

4 months agoAdded initial NvmeWrite functionality.
Terry Barnaby [Wed, 29 Apr 2020 08:40:13 +0000 (09:40 +0100)]
Added initial NvmeWrite functionality.
Many changes to the system including changing the stream numbers and addresses of things.
This code will perform FPGA driven writes to the Nvme (3 x 512 Byte blocks).

4 months agoDocuments added and updated.
Terry Barnaby [Mon, 27 Apr 2020 06:16:35 +0000 (07:16 +0100)]
Documents added and updated.

4 months agoAdded docsrc
Terry Barnaby [Mon, 27 Apr 2020 05:45:25 +0000 (06:45 +0100)]
Added docsrc

4 months agoDuneNvme: First import of file set.
Terry Barnaby [Sun, 26 Apr 2020 10:08:38 +0000 (11:08 +0100)]
DuneNvme: First import of file set.

5 months agoAdded host software documentation.
Terry Barnaby [Sun, 12 Apr 2020 08:36:32 +0000 (09:36 +0100)]
Added host software documentation.

5 months agoAdded Readme.pdf to git. v0.1.0
Terry Barnaby [Sun, 12 Apr 2020 07:53:02 +0000 (08:53 +0100)]
Added Readme.pdf to git.

5 months agoUpdated test example to use a single bidirectional host to/from nvme DMA stream with...
Terry Barnaby [Sun, 12 Apr 2020 07:46:20 +0000 (08:46 +0100)]
Updated test example to use a single bidirectional host to/from nvme DMA stream with de-multiplexing and multiplexing.
Updated to closer match final code.
Test example split into files to make things clearer andf easier to experiment with.

5 months agotest_nvme.cpp: Added some doxygen comments. v0.0.1
Terry Barnaby [Tue, 7 Apr 2020 09:27:14 +0000 (10:27 +0100)]
test_nvme.cpp: Added some doxygen comments.

5 months agoFirst import.
Terry Barnaby [Tue, 7 Apr 2020 08:33:50 +0000 (09:33 +0100)]
First import.