NvmeWrite now using 8 simultaineous writes. Multiple-write-buffers-working
authorTerry Barnaby <terry.barnaby@beam.beam.ltd.uk>
Sat, 9 May 2020 06:07:45 +0000 (07:07 +0100)
committerTerry Barnaby <terry.barnaby@beam.beam.ltd.uk>
Sat, 9 May 2020 06:07:45 +0000 (07:07 +0100)
General improvements.

13 files changed:
docsrc/DuneNvmeStorageManual.odt
source/DuneNvme/doc/Readme.pdf
source/DuneNvme/sim/testbench/test019-write.sav
source/DuneNvme/sim/testbench/test019-write.vhd
source/DuneNvme/src/DuneNvmeTestTop.vhd
source/DuneNvme/src/DuneNvmeTestTop.xdc
source/DuneNvme/src/NvmeSim.vhd
source/DuneNvme/src/NvmeStorageUnit.vhd
source/DuneNvme/src/NvmeWrite.vhd
source/DuneNvme/src/ip/Pcie_nvme0-250.xci [new file with mode: 0644]
source/DuneNvme/test/NvmeAccess.cpp
source/DuneNvme/test/NvmeAccess.h
source/DuneNvme/test/test_nvme.cpp

index 5f7e62ddcad7edc8e3adfece2929e6d89b021aed..72c4ee36a73d1d92271a8475d206ddc83a490dba 100644 (file)
Binary files a/docsrc/DuneNvmeStorageManual.odt and b/docsrc/DuneNvmeStorageManual.odt differ
index 4725e61f3d4ba4d63a8d2ce57f5d2659dbfd3972..6dcbee5b4db9614575ab9fbb81a9c759255b285b 100644 (file)
Binary files a/source/DuneNvme/doc/Readme.pdf and b/source/DuneNvme/doc/Readme.pdf differ
index 337ba6d96d9b6f458d794e9b859c09b21c78b54e..4f80a910442534831182ac6b2b46fb4f08786e0f 100644 (file)
@@ -1,21 +1,21 @@
 [*]
 [*] GTKWave Analyzer v3.3.104 (w)1999-2020 BSI
-[*] Thu May  7 04:59:52 2020
+[*] Thu May  7 16:40:18 2020
 [*]
-[dumpfile] "/src/dune/FpgaPlay/test025-nvmewrite/sim/simu/test.ghw"
-[dumpfile_mtime] "Thu May  7 04:59:03 2020"
-[dumpfile_size] 1481327
-[savefile] "/src/dune/FpgaPlay/test025-nvmewrite/sim/testbench/test019-write.sav"
-[timestart] 2615800000
+[dumpfile] "/src/dune/FpgaPlay/test026-nvmewrite/sim/simu/test.ghw"
+[dumpfile_mtime] "Thu May  7 15:23:09 2020"
+[dumpfile_size] 1263493
+[savefile] "/src/dune/FpgaPlay/test026-nvmewrite/sim/testbench/test019-write.sav"
+[timestart] 10258100000
 [size] 1920 1171
 [pos] -1 -1
-*-26.418455 2844500000 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
+*-26.418455 10633400000 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
 [treeopen] top.
 [treeopen] top.test.
-[treeopen] top.test.axil.
 [treeopen] top.test.axil.tomaster.
 [treeopen] top.test.nvmestorageunit0.
 [treeopen] top.test.nvmestorageunit0.axil1in.
+[treeopen] top.test.nvmestorageunit0.gen03.
 [treeopen] top.test.nvmestorageunit0.gen03.nvmewrite0.
 [treeopen] top.test.nvmestorageunit0.gen03.nvmewrite0.buffers.[0].
 [treeopen] top.test.nvmestorageunit0.gen03.nvmewrite0.buffers.[1].
@@ -140,8 +140,6 @@ top.test.nvmestorageunit0.gen03.nvmequeues0.ramaddress
 @28
 top.test.nvmestorageunit0.gen03.nvmewrite0.enable
 @22
-#{top.test.nvmestorageunit0.gen03.nvmewrite0.numblocks[31:0]} top.test.nvmestorageunit0.gen03.nvmewrite0.numblocks[31] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocks[30] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocks[29] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocks[28] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocks[27] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocks[26] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocks[25] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocks[24] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocks[23] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocks[22] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocks[21] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocks[20] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocks[19] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocks[18] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocks[17] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocks[16] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocks[15] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocks[14] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocks[13] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocks[12] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocks[11] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocks[10] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocks[9] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocks[8] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocks[7] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocks[6] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocks[5] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocks[4] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocks[3] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocks[2] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocks[1] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocks[0]
-#{top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumber[63:0]} top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumber[31] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumber[30] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumber[29] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumber[28] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumber[27] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumber[26] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumber[25] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumber[24] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumber[23] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumber[22] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumber[21] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumber[20] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumber[19] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumber[18] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumber[17] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumber[16] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumber[15] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumber[14] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumber[13] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumber[12] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumber[11] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumber[10] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumber[9] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumber[8] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumber[7] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumber[6] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumber[5] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumber[4] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumber[3] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumber[2] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumber[1] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumber[0]
 #{top.test.nvmestorageunit0.gen03.nvmewrite0.timeus[31:0]} top.test.nvmestorageunit0.gen03.nvmewrite0.timeus[31] top.test.nvmestorageunit0.gen03.nvmewrite0.timeus[30] top.test.nvmestorageunit0.gen03.nvmewrite0.timeus[29] top.test.nvmestorageunit0.gen03.nvmewrite0.timeus[28] top.test.nvmestorageunit0.gen03.nvmewrite0.timeus[27] top.test.nvmestorageunit0.gen03.nvmewrite0.timeus[26] top.test.nvmestorageunit0.gen03.nvmewrite0.timeus[25] top.test.nvmestorageunit0.gen03.nvmewrite0.timeus[24] top.test.nvmestorageunit0.gen03.nvmewrite0.timeus[23] top.test.nvmestorageunit0.gen03.nvmewrite0.timeus[22] top.test.nvmestorageunit0.gen03.nvmewrite0.timeus[21] top.test.nvmestorageunit0.gen03.nvmewrite0.timeus[20] top.test.nvmestorageunit0.gen03.nvmewrite0.timeus[19] top.test.nvmestorageunit0.gen03.nvmewrite0.timeus[18] top.test.nvmestorageunit0.gen03.nvmewrite0.timeus[17] top.test.nvmestorageunit0.gen03.nvmewrite0.timeus[16] top.test.nvmestorageunit0.gen03.nvmewrite0.timeus[15] top.test.nvmestorageunit0.gen03.nvmewrite0.timeus[14] top.test.nvmestorageunit0.gen03.nvmewrite0.timeus[13] top.test.nvmestorageunit0.gen03.nvmewrite0.timeus[12] top.test.nvmestorageunit0.gen03.nvmewrite0.timeus[11] top.test.nvmestorageunit0.gen03.nvmewrite0.timeus[10] top.test.nvmestorageunit0.gen03.nvmewrite0.timeus[9] top.test.nvmestorageunit0.gen03.nvmewrite0.timeus[8] top.test.nvmestorageunit0.gen03.nvmewrite0.timeus[7] top.test.nvmestorageunit0.gen03.nvmewrite0.timeus[6] top.test.nvmestorageunit0.gen03.nvmewrite0.timeus[5] top.test.nvmestorageunit0.gen03.nvmewrite0.timeus[4] top.test.nvmestorageunit0.gen03.nvmewrite0.timeus[3] top.test.nvmestorageunit0.gen03.nvmewrite0.timeus[2] top.test.nvmestorageunit0.gen03.nvmewrite0.timeus[1] top.test.nvmestorageunit0.gen03.nvmewrite0.timeus[0]
 @800200
 -InputBuffers
@@ -156,8 +154,13 @@ top.test.nvmestorageunit0.gen03.nvmewrite0.enable
 @420
 top.test.nvmestorageunit0.gen03.nvmewrite0.instate
 top.test.nvmestorageunit0.gen03.nvmewrite0.state
-top.test.nvmestorageunit0.gen03.nvmewrite0.num
-top.test.nvmestorageunit0.gen03.nvmewrite0.numreply
+top.test.nvmestorageunit0.gen03.nvmewrite0.replystate
+@22
+#{top.test.nvmestorageunit0.gen03.nvmewrite0.datachunksize[31:0]} top.test.nvmestorageunit0.gen03.nvmewrite0.datachunksize[31] top.test.nvmestorageunit0.gen03.nvmewrite0.datachunksize[30] top.test.nvmestorageunit0.gen03.nvmewrite0.datachunksize[29] top.test.nvmestorageunit0.gen03.nvmewrite0.datachunksize[28] top.test.nvmestorageunit0.gen03.nvmewrite0.datachunksize[27] top.test.nvmestorageunit0.gen03.nvmewrite0.datachunksize[26] top.test.nvmestorageunit0.gen03.nvmewrite0.datachunksize[25] top.test.nvmestorageunit0.gen03.nvmewrite0.datachunksize[24] top.test.nvmestorageunit0.gen03.nvmewrite0.datachunksize[23] top.test.nvmestorageunit0.gen03.nvmewrite0.datachunksize[22] top.test.nvmestorageunit0.gen03.nvmewrite0.datachunksize[21] top.test.nvmestorageunit0.gen03.nvmewrite0.datachunksize[20] top.test.nvmestorageunit0.gen03.nvmewrite0.datachunksize[19] top.test.nvmestorageunit0.gen03.nvmewrite0.datachunksize[18] top.test.nvmestorageunit0.gen03.nvmewrite0.datachunksize[17] top.test.nvmestorageunit0.gen03.nvmewrite0.datachunksize[16] top.test.nvmestorageunit0.gen03.nvmewrite0.datachunksize[15] top.test.nvmestorageunit0.gen03.nvmewrite0.datachunksize[14] top.test.nvmestorageunit0.gen03.nvmewrite0.datachunksize[13] top.test.nvmestorageunit0.gen03.nvmewrite0.datachunksize[12] top.test.nvmestorageunit0.gen03.nvmewrite0.datachunksize[11] top.test.nvmestorageunit0.gen03.nvmewrite0.datachunksize[10] top.test.nvmestorageunit0.gen03.nvmewrite0.datachunksize[9] top.test.nvmestorageunit0.gen03.nvmewrite0.datachunksize[8] top.test.nvmestorageunit0.gen03.nvmewrite0.datachunksize[7] top.test.nvmestorageunit0.gen03.nvmewrite0.datachunksize[6] top.test.nvmestorageunit0.gen03.nvmewrite0.datachunksize[5] top.test.nvmestorageunit0.gen03.nvmewrite0.datachunksize[4] top.test.nvmestorageunit0.gen03.nvmewrite0.datachunksize[3] top.test.nvmestorageunit0.gen03.nvmewrite0.datachunksize[2] top.test.nvmestorageunit0.gen03.nvmewrite0.datachunksize[1] top.test.nvmestorageunit0.gen03.nvmewrite0.datachunksize[0]
+#{top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumberin[31:0]} top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumberin[31] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumberin[30] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumberin[29] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumberin[28] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumberin[27] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumberin[26] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumberin[25] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumberin[24] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumberin[23] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumberin[22] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumberin[21] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumberin[20] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumberin[19] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumberin[18] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumberin[17] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumberin[16] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumberin[15] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumberin[14] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumberin[13] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumberin[12] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumberin[11] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumberin[10] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumberin[9] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumberin[8] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumberin[7] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumberin[6] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumberin[5] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumberin[4] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumberin[3] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumberin[2] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumberin[1] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumberin[0]
+#{top.test.nvmestorageunit0.gen03.nvmewrite0.numblocksproc[31:0]} top.test.nvmestorageunit0.gen03.nvmewrite0.numblocksproc[31] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocksproc[30] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocksproc[29] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocksproc[28] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocksproc[27] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocksproc[26] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocksproc[25] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocksproc[24] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocksproc[23] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocksproc[22] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocksproc[21] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocksproc[20] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocksproc[19] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocksproc[18] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocksproc[17] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocksproc[16] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocksproc[15] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocksproc[14] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocksproc[13] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocksproc[12] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocksproc[11] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocksproc[10] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocksproc[9] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocksproc[8] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocksproc[7] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocksproc[6] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocksproc[5] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocksproc[4] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocksproc[3] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocksproc[2] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocksproc[1] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocksproc[0]
+#{top.test.nvmestorageunit0.gen03.nvmewrite0.numblocksdone[31:0]} top.test.nvmestorageunit0.gen03.nvmewrite0.numblocksdone[31] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocksdone[30] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocksdone[29] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocksdone[28] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocksdone[27] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocksdone[26] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocksdone[25] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocksdone[24] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocksdone[23] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocksdone[22] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocksdone[21] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocksdone[20] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocksdone[19] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocksdone[18] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocksdone[17] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocksdone[16] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocksdone[15] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocksdone[14] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocksdone[13] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocksdone[12] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocksdone[11] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocksdone[10] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocksdone[9] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocksdone[8] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocksdone[7] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocksdone[6] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocksdone[5] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocksdone[4] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocksdone[3] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocksdone[2] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocksdone[1] top.test.nvmestorageunit0.gen03.nvmewrite0.numblocksdone[0]
+@420
 top.test.nvmestorageunit0.gen03.nvmewrite0.bufferinnum
 top.test.nvmestorageunit0.gen03.nvmewrite0.bufferinnumnext
 top.test.nvmestorageunit0.gen03.nvmewrite0.bufferoutnum
@@ -173,7 +176,6 @@ top.test.nvmestorageunit0.gen03.nvmewrite0.buffers[0].inuse1
 top.test.nvmestorageunit0.gen03.nvmewrite0.buffers[0].inuse2
 @22
 #{top.test.nvmestorageunit0.gen03.nvmewrite0.buffers[0].blocknumber[63:0]} top.test.nvmestorageunit0.gen03.nvmewrite0.buffers[0].blocknumber[31] top.test.nvmestorageunit0.gen03.nvmewrite0.buffers[0].blocknumber[30] top.test.nvmestorageunit0.gen03.nvmewrite0.buffers[0].blocknumber[29] top.test.nvmestorageunit0.gen03.nvmewrite0.buffers[0].blocknumber[28] top.test.nvmestorageunit0.gen03.nvmewrite0.buffers[0].blocknumber[27] top.test.nvmestorageunit0.gen03.nvmewrite0.buffers[0].blocknumber[26] top.test.nvmestorageunit0.gen03.nvmewrite0.buffers[0].blocknumber[25] top.test.nvmestorageunit0.gen03.nvmewrite0.buffers[0].blocknumber[24] top.test.nvmestorageunit0.gen03.nvmewrite0.buffers[0].blocknumber[23] top.test.nvmestorageunit0.gen03.nvmewrite0.buffers[0].blocknumber[22] top.test.nvmestorageunit0.gen03.nvmewrite0.buffers[0].blocknumber[21] top.test.nvmestorageunit0.gen03.nvmewrite0.buffers[0].blocknumber[20] top.test.nvmestorageunit0.gen03.nvmewrite0.buffers[0].blocknumber[19] top.test.nvmestorageunit0.gen03.nvmewrite0.buffers[0].blocknumber[18] top.test.nvmestorageunit0.gen03.nvmewrite0.buffers[0].blocknumber[17] top.test.nvmestorageunit0.gen03.nvmewrite0.buffers[0].blocknumber[16] top.test.nvmestorageunit0.gen03.nvmewrite0.buffers[0].blocknumber[15] top.test.nvmestorageunit0.gen03.nvmewrite0.buffers[0].blocknumber[14] top.test.nvmestorageunit0.gen03.nvmewrite0.buffers[0].blocknumber[13] top.test.nvmestorageunit0.gen03.nvmewrite0.buffers[0].blocknumber[12] top.test.nvmestorageunit0.gen03.nvmewrite0.buffers[0].blocknumber[11] top.test.nvmestorageunit0.gen03.nvmewrite0.buffers[0].blocknumber[10] top.test.nvmestorageunit0.gen03.nvmewrite0.buffers[0].blocknumber[9] top.test.nvmestorageunit0.gen03.nvmewrite0.buffers[0].blocknumber[8] top.test.nvmestorageunit0.gen03.nvmewrite0.buffers[0].blocknumber[7] top.test.nvmestorageunit0.gen03.nvmewrite0.buffers[0].blocknumber[6] top.test.nvmestorageunit0.gen03.nvmewrite0.buffers[0].blocknumber[5] top.test.nvmestorageunit0.gen03.nvmewrite0.buffers[0].blocknumber[4] top.test.nvmestorageunit0.gen03.nvmewrite0.buffers[0].blocknumber[3] top.test.nvmestorageunit0.gen03.nvmewrite0.buffers[0].blocknumber[2] top.test.nvmestorageunit0.gen03.nvmewrite0.buffers[0].blocknumber[1] top.test.nvmestorageunit0.gen03.nvmewrite0.buffers[0].blocknumber[0]
-#{top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumber[63:0]} top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumber[31] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumber[30] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumber[29] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumber[28] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumber[27] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumber[26] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumber[25] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumber[24] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumber[23] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumber[22] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumber[21] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumber[20] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumber[19] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumber[18] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumber[17] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumber[16] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumber[15] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumber[14] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumber[13] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumber[12] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumber[11] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumber[10] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumber[9] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumber[8] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumber[7] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumber[6] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumber[5] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumber[4] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumber[3] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumber[2] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumber[1] top.test.nvmestorageunit0.gen03.nvmewrite0.blocknumber[0]
 @28
 top.test.nvmestorageunit0.gen03.nvmewrite0.buffers[1].full
 top.test.nvmestorageunit0.gen03.nvmewrite0.buffers[1].inuse1
@@ -226,33 +228,33 @@ top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.last
 #{top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[127:0]} top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[127] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[126] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[125] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[124] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[123] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[122] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[121] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[120] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[119] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[118] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[117] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[116] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[115] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[114] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[113] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[112] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[111] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[110] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[109] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[108] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[107] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[106] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[105] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[104] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[103] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[102] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[101] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[100] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[99] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[98] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[97] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[96] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[95] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[94] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[93] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[92] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[91] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[90] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[89] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[88] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[87] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[86] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[85] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[84] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[83] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[82] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[81] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[80] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[79] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[78] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[77] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[76] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[75] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[74] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[73] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[72] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[71] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[70] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[69] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[68] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[67] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[66] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[65] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[64] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[63] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[62] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[61] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[60] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[59] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[58] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[57] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[56] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[55] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[54] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[53] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[52] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[51] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[50] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[49] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[48] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[47] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[46] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[45] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[44] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[43] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[42] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[41] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[40] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[39] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[38] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[37] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[36] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[35] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[34] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[33] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[32] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[31] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[30] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[29] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[28] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[27] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[26] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[25] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[24] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[23] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[22] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[21] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[20] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[19] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[18] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[17] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[16] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[15] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[14] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[13] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[12] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[11] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[10] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[9] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[8] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[7] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[6] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[5] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[4] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[3] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[2] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[1] top.test.nvmestorageunit0.gen03.nvmewrite0.memreplyout.data[0]
 @1000200
 -NvmeWrite
-@c00200
+@800200
 -NvmeSim
-@420
+@421
 top.test.nvmestorageunit0.sim.nvmesim0.state
-@28
+@29
 top.test.nvmestorageunit0.sim.nvmesim0.waitingforreply
-@22
+@23
 #{top.test.nvmestorageunit0.sim.nvmesim0.count[10:0]} top.test.nvmestorageunit0.sim.nvmesim0.count[10] top.test.nvmestorageunit0.sim.nvmesim0.count[9] top.test.nvmestorageunit0.sim.nvmesim0.count[8] top.test.nvmestorageunit0.sim.nvmesim0.count[7] top.test.nvmestorageunit0.sim.nvmesim0.count[6] top.test.nvmestorageunit0.sim.nvmesim0.count[5] top.test.nvmestorageunit0.sim.nvmesim0.count[4] top.test.nvmestorageunit0.sim.nvmesim0.count[3] top.test.nvmestorageunit0.sim.nvmesim0.count[2] top.test.nvmestorageunit0.sim.nvmesim0.count[1] top.test.nvmestorageunit0.sim.nvmesim0.count[0]
-@28
+@29
 top.test.nvmestorageunit0.sim.nvmesim0.hostreq.ready
 top.test.nvmestorageunit0.sim.nvmesim0.hostreq.valid
 top.test.nvmestorageunit0.sim.nvmesim0.hostreq.last
-@22
+@23
 #{top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[127:0]} top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[127] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[126] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[125] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[124] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[123] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[122] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[121] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[120] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[119] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[118] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[117] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[116] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[115] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[114] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[113] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[112] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[111] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[110] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[109] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[108] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[107] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[106] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[105] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[104] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[103] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[102] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[101] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[100] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[99] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[98] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[97] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[96] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[95] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[94] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[93] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[92] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[91] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[90] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[89] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[88] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[87] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[86] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[85] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[84] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[83] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[82] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[81] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[80] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[79] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[78] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[77] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[76] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[75] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[74] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[73] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[72] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[71] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[70] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[69] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[68] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[67] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[66] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[65] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[64] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[63] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[62] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[61] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[60] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[59] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[58] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[57] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[56] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[55] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[54] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[53] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[52] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[51] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[50] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[49] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[48] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[47] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[46] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[45] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[44] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[43] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[42] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[41] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[40] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[39] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[38] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[37] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[36] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[35] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[34] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[33] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[32] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[31] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[30] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[29] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[28] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[27] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[26] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[25] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[24] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[23] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[22] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[21] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[20] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[19] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[18] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[17] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[16] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[15] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[14] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[13] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[12] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[11] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[10] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[9] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[8] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[7] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[6] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[5] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[4] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[3] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[2] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[1] top.test.nvmestorageunit0.sim.nvmesim0.hostreq.data[0]
-@28
+@29
 top.test.nvmestorageunit0.sim.nvmesim0.hostreply.ready
 top.test.nvmestorageunit0.sim.nvmesim0.hostreply.valid
 top.test.nvmestorageunit0.sim.nvmesim0.hostreply.last
-@22
+@23
 #{top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[127:0]} top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[127] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[126] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[125] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[124] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[123] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[122] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[121] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[120] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[119] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[118] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[117] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[116] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[115] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[114] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[113] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[112] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[111] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[110] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[109] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[108] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[107] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[106] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[105] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[104] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[103] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[102] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[101] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[100] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[99] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[98] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[97] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[96] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[95] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[94] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[93] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[92] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[91] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[90] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[89] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[88] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[87] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[86] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[85] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[84] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[83] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[82] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[81] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[80] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[79] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[78] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[77] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[76] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[75] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[74] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[73] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[72] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[71] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[70] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[69] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[68] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[67] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[66] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[65] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[64] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[63] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[62] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[61] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[60] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[59] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[58] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[57] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[56] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[55] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[54] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[53] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[52] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[51] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[50] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[49] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[48] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[47] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[46] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[45] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[44] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[43] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[42] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[41] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[40] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[39] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[38] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[37] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[36] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[35] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[34] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[33] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[32] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[31] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[30] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[29] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[28] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[27] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[26] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[25] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[24] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[23] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[22] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[21] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[20] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[19] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[18] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[17] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[16] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[15] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[14] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[13] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[12] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[11] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[10] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[9] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[8] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[7] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[6] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[5] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[4] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[3] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[2] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[1] top.test.nvmestorageunit0.sim.nvmesim0.hostreply.data[0]
 #{top.test.nvmestorageunit0.sim.nvmesim0.queue_pos[9:0]} top.test.nvmestorageunit0.sim.nvmesim0.queue_pos[2] top.test.nvmestorageunit0.sim.nvmesim0.queue_pos[1] top.test.nvmestorageunit0.sim.nvmesim0.queue_pos[0]
 #{top.test.nvmestorageunit0.sim.nvmesim0.reg_io1_queue[31:0]} top.test.nvmestorageunit0.sim.nvmesim0.reg_io1_queue[31] top.test.nvmestorageunit0.sim.nvmesim0.reg_io1_queue[30] top.test.nvmestorageunit0.sim.nvmesim0.reg_io1_queue[29] top.test.nvmestorageunit0.sim.nvmesim0.reg_io1_queue[28] top.test.nvmestorageunit0.sim.nvmesim0.reg_io1_queue[27] top.test.nvmestorageunit0.sim.nvmesim0.reg_io1_queue[26] top.test.nvmestorageunit0.sim.nvmesim0.reg_io1_queue[25] top.test.nvmestorageunit0.sim.nvmesim0.reg_io1_queue[24] top.test.nvmestorageunit0.sim.nvmesim0.reg_io1_queue[23] top.test.nvmestorageunit0.sim.nvmesim0.reg_io1_queue[22] top.test.nvmestorageunit0.sim.nvmesim0.reg_io1_queue[21] top.test.nvmestorageunit0.sim.nvmesim0.reg_io1_queue[20] top.test.nvmestorageunit0.sim.nvmesim0.reg_io1_queue[19] top.test.nvmestorageunit0.sim.nvmesim0.reg_io1_queue[18] top.test.nvmestorageunit0.sim.nvmesim0.reg_io1_queue[17] top.test.nvmestorageunit0.sim.nvmesim0.reg_io1_queue[16] top.test.nvmestorageunit0.sim.nvmesim0.reg_io1_queue[15] top.test.nvmestorageunit0.sim.nvmesim0.reg_io1_queue[14] top.test.nvmestorageunit0.sim.nvmesim0.reg_io1_queue[13] top.test.nvmestorageunit0.sim.nvmesim0.reg_io1_queue[12] top.test.nvmestorageunit0.sim.nvmesim0.reg_io1_queue[11] top.test.nvmestorageunit0.sim.nvmesim0.reg_io1_queue[10] top.test.nvmestorageunit0.sim.nvmesim0.reg_io1_queue[9] top.test.nvmestorageunit0.sim.nvmesim0.reg_io1_queue[8] top.test.nvmestorageunit0.sim.nvmesim0.reg_io1_queue[7] top.test.nvmestorageunit0.sim.nvmesim0.reg_io1_queue[6] top.test.nvmestorageunit0.sim.nvmesim0.reg_io1_queue[5] top.test.nvmestorageunit0.sim.nvmesim0.reg_io1_queue[4] top.test.nvmestorageunit0.sim.nvmesim0.reg_io1_queue[3] top.test.nvmestorageunit0.sim.nvmesim0.reg_io1_queue[2] top.test.nvmestorageunit0.sim.nvmesim0.reg_io1_queue[1] top.test.nvmestorageunit0.sim.nvmesim0.reg_io1_queue[0]
-@28
+@29
 top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.ready
 top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.valid
 top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.last
-@22
+@23
 #{top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[127:0]} top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[127] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[126] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[125] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[124] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[123] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[122] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[121] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[120] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[119] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[118] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[117] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[116] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[115] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[114] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[113] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[112] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[111] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[110] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[109] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[108] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[107] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[106] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[105] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[104] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[103] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[102] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[101] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[100] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[99] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[98] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[97] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[96] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[95] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[94] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[93] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[92] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[91] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[90] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[89] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[88] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[87] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[86] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[85] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[84] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[83] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[82] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[81] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[80] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[79] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[78] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[77] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[76] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[75] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[74] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[73] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[72] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[71] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[70] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[69] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[68] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[67] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[66] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[65] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[64] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[63] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[62] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[61] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[60] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[59] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[58] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[57] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[56] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[55] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[54] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[53] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[52] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[51] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[50] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[49] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[48] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[47] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[46] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[45] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[44] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[43] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[42] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[41] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[40] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[39] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[38] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[37] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[36] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[35] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[34] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[33] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[32] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[31] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[30] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[29] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[28] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[27] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[26] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[25] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[24] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[23] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[22] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[21] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[20] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[19] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[18] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[17] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[16] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[15] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[14] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[13] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[12] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[11] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[10] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[9] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[8] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[7] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[6] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[5] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[4] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[3] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[2] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[1] top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.data[0]
 #{top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[0][127:0]} top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[0][31] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[0][30] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[0][29] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[0][28] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[0][27] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[0][26] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[0][25] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[0][24] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[0][23] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[0][22] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[0][21] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[0][20] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[0][19] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[0][18] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[0][17] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[0][16] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[0][15] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[0][14] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[0][13] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[0][12] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[0][11] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[0][10] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[0][9] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[0][8] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[0][7] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[0][6] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[0][5] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[0][4] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[0][3] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[0][2] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[0][1] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[0][0]
 #{top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[1][127:0]} top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[1][31] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[1][30] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[1][29] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[1][28] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[1][27] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[1][26] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[1][25] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[1][24] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[1][23] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[1][22] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[1][21] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[1][20] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[1][19] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[1][18] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[1][17] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[1][16] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[1][15] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[1][14] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[1][13] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[1][12] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[1][11] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[1][10] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[1][9] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[1][8] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[1][7] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[1][6] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[1][5] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[1][4] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[1][3] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[1][2] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[1][1] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[1][0]
@@ -260,13 +262,13 @@ top.test.nvmestorageunit0.sim.nvmesim0.nvmereq.last
 #{top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[10][31:0]} top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[10][31] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[10][30] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[10][29] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[10][28] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[10][27] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[10][26] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[10][25] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[10][24] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[10][23] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[10][22] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[10][21] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[10][20] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[10][19] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[10][18] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[10][17] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[10][16] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[10][15] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[10][14] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[10][13] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[10][12] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[10][11] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[10][10] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[10][9] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[10][8] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[10][7] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[10][6] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[10][5] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[10][4] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[10][3] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[10][2] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[10][1] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[10][0]
 #{top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[11][31:0]} top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[11][31] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[11][30] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[11][29] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[11][28] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[11][27] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[11][26] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[11][25] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[11][24] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[11][23] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[11][22] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[11][21] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[11][20] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[11][19] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[11][18] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[11][17] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[11][16] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[11][15] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[11][14] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[11][13] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[11][12] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[11][11] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[11][10] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[11][9] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[11][8] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[11][7] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[11][6] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[11][5] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[11][4] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[11][3] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[11][2] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[11][1] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[11][0]
 #{top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[12][31:0]} top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[12][31] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[12][30] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[12][29] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[12][28] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[12][27] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[12][26] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[12][25] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[12][24] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[12][23] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[12][22] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[12][21] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[12][20] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[12][19] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[12][18] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[12][17] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[12][16] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[12][15] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[12][14] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[12][13] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[12][12] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[12][11] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[12][10] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[12][9] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[12][8] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[12][7] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[12][6] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[12][5] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[12][4] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[12][3] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[12][2] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[12][1] top.test.nvmestorageunit0.sim.nvmesim0.queuerequest[12][0]
-@28
+@29
 top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.ready
 top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.valid
 top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.last
-@22
+@23
 #{top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[127:0]} top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[127] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[126] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[125] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[124] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[123] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[122] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[121] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[120] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[119] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[118] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[117] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[116] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[115] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[114] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[113] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[112] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[111] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[110] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[109] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[108] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[107] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[106] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[105] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[104] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[103] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[102] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[101] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[100] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[99] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[98] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[97] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[96] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[95] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[94] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[93] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[92] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[91] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[90] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[89] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[88] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[87] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[86] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[85] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[84] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[83] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[82] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[81] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[80] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[79] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[78] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[77] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[76] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[75] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[74] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[73] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[72] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[71] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[70] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[69] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[68] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[67] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[66] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[65] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[64] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[63] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[62] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[61] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[60] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[59] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[58] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[57] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[56] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[55] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[54] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[53] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[52] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[51] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[50] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[49] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[48] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[47] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[46] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[45] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[44] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[43] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[42] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[41] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[40] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[39] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[38] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[37] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[36] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[35] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[34] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[33] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[32] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[31] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[30] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[29] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[28] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[27] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[26] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[25] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[24] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[23] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[22] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[21] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[20] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[19] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[18] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[17] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[16] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[15] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[14] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[13] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[12] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[11] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[10] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[9] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[8] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[7] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[6] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[5] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[4] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[3] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[2] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[1] top.test.nvmestorageunit0.sim.nvmesim0.nvmereply.data[0]
-@1401200
+@1000200
 -NvmeSim
 [pattern_trace] 1
 [pattern_trace] 0
index 77ee6146c9ff5e4945cba7d6b19e64c9837d4a1f..0699bb8ac2ffa4a2ef7bf3a754a8f39b944cf1e5 100644 (file)
@@ -183,7 +183,8 @@ begin
 
                        -- Write to NvmeStorage control register to start NvmeWrite processing
                        wait for 100 ns;
-                       busWrite(clk, axil.toSlave, axil.toMaster, 16#0100#, 16);               -- Number of blocks
+                       --busWrite(clk, axil.toSlave, axil.toMaster, 16#0104#, 2);              -- Number of blocks
+                       busWrite(clk, axil.toSlave, axil.toMaster, 16#0104#, 16);               -- Number of blocks
                        busWrite(clk, axil.toSlave, axil.toMaster, 16#0004#, 16#00000004#);     -- Start
 
                        wait for 11000 ns;
index a46bd518cc0225a1ab235867a2088fc7f3dfe3dd..fed2ce1e176a89957d35e5a351007f606d61689a 100644 (file)
@@ -269,14 +269,17 @@ begin
                clk_out1        => sys_clk
        );
 
-       reset_n <= not (sys_reset or not pci_reset_n or boot_reset);
+       -- Early testing special resets
+       --reset_n <= not (sys_reset or not pci_reset_n or boot_reset);
        --reset_n <= not (sys_reset or not pci_reset_n);
+       --reset_n <= pci_reset_n;
 
-       sys_reset_buf : BUFG port map (
-               I               => reset_n,
-               O               => sys_reset_buf_n
-       );
-
+       --sys_reset_buf : BUFG port map (
+       --      I               => reset_n,
+       --      O               => sys_reset_buf_n
+       --);
+       
+       sys_reset_buf_n <= pci_reset_n;
 
        -- PCIE Clock, 100MHz
        pci_clk_buf0 : IBUFDS_GTE3 port map(
index 9d1f03cc13d396f5ddf0632ff7a7fb7ff272233e..80db5945bbe3e407a13c8878b625cb6ddf180f89 100644 (file)
@@ -12,8 +12,9 @@ create_clock -period 10.000 -name nvme_clk [get_ports nvme_clk_p]
 # Asyncronous resets\r
 set_false_path -from [get_ports sys_reset]\r
 set_false_path -from [get_ports pci_reset_n]\r
-set_false_path -through [get_nets boot_reset]\r
-set_false_path -through [get_nets sys_reset_buf_n]\r
+#set_false_path -through [get_nets boot_reset]\r
+#set_false_path -through [get_nets reset_n]\r
+#set_false_path -through [get_nets sys_reset_buf_n]\r
 \r
 # PCIe Host\r
 #set_false_path -through [get_pins pcie_host0/inst/pcie3_ip_i/inst/pcie3_uscale_top_inst/pcie3_uscale_wrapper_inst/PCIE_3_1_inst/CFGMAX*]\r
index 63e0ddd085dd50d3bc75256e4394f7e208a4fcf4..cc02fdf5a1b81b4583dc862e37696afc108b1232 100644 (file)
@@ -191,7 +191,7 @@ begin
                                                end if;
 
                                                -- This should realy turn off, but with the newStreamSwitch waiting for ready
-                                               --  and the currentNvmeStreamMux.vhd wel need to allow replies.
+                                               --  and the currentNvmeStreamMux.vhd we need to allow replies.
                                                --hostReq.ready <= '0';
                                        end if;
 
index 3310ca6cb7bc51a6ce56e061ac922d9313055771..fd2751b723984b24d85356d6958db06b3fbf446c 100644 (file)
@@ -303,6 +303,7 @@ end component;
 component NvmeWrite is
 generic(
        Simulate        : boolean := Simulate;                  --! Generate simulation core
+       ClockPeriod     : time := ClockPeriod;                  --! The clocks period
        BlockSize       : integer := BlockSize                  --! System block size
 );
 port (
index 864dbef65653a2ef1075652adb4cf848fb3452a7..587a230e7ef8e57e6e092b9fa7ab9e4970bbc175 100644 (file)
@@ -1,18 +1,45 @@
 --------------------------------------------------------------------------------
 --     NvmeWrite.vhd Nvme Write data module
---     T.Barnaby, Beam Ltd. 2020-02-28
+--     T.Barnaby, Beam Ltd. 2020-05-07
 -------------------------------------------------------------------------------
 --!
 --! @class     NvmeWrite
 --! @author    Terry Barnaby (terry.barnaby@beam.ltd.uk)
---! @date      2020-04-14
---! @version   0.0.1
+--! @date      2020-05-07
+--! @version   0.2.1
 --!
 --! @brief
 --! This module performs the Nvme write data functionality.
 --!
 --! @details
---! TBD.
+--! This module is the heart of the DuneNvme system. Its purpose is to write
+--! the incomming data blocks to the Nvme device.
+--! For performance it will concurrently write NvmeWriteNum (8) blocks.
+--! It implements a set of NvmeWriteNum buffers in a single BlockRAM.
+--! An input process choose a free buffer and then writes the data from the input
+--! AXIS stream into this buffer.
+--! A processing process looks for buffers that are in use and full. When found an
+--! Nvme write request is sent to the Nvme write queue.
+--! The Nvme will perform "bus master" memory reads from the data buffer.
+--! Once the Nvme has completed the write (well taken in the write data) it will send
+--! a reply to the reply quere. The NvmeWrite's reply process will process these to
+--! free the buffer that was used.
+--!
+--! The block is controlled by the enable line, which enables the processing of input data and
+--!  the dataChunkSize register which specifies how mant blocks to capture.
+--!  It will continue to capture whist the enable line is high and the number of blocks captured
+--!  is less than the number of blocks in the dataChunkSize register.
+--!
+--! As the system allows up to NvmeWriteNum concurrent writes, it is able to hide ittermitant
+--! large write latencies.
+--! Note that the parameter NvmeWriteNum should be less than NvmeQueueNum.
+--! Notes:
+--!   It assumes the DuneDvme block size is set in NvmeStorageBlockSize and the DataIn stream's
+--!     last signal is synchonised with the end of each input block.
+--!   At the moment it assumes the Nvme's block size is 512 Bytes.
+--!   At the moment it stores the first status reply error but continues ignoring the error.
+--!   There are no timeouts or any other error handling.
+--!   Only writes to one DataChunk area at the moment.
 --!
 --! @copyright GNU GPL License
 --! Copyright (c) Beam Ltd, All rights reserved. <br>
@@ -41,6 +68,7 @@ use work.NvmeStorageIntPkg.all;
 entity NvmeWrite is
 generic(
        Simulate        : boolean := False;                     --! Generate simulation core
+       ClockPeriod     : time := 8 ns;                         --! The clocks period
        BlockSize       : integer := NvmeStorageBlockSize       --! System block size
 );
 port (
@@ -75,8 +103,7 @@ end function;
 
 constant TCQ           : time := 1 ns;
 constant SimDelay      : boolean := False;                     --! Input data delay after each packet for simulation tests
---constant NumBlocksRun        : integer := 2;                         --! The total number of blocks in a run
-constant NumBlocksRun  : integer := 262144;                    --! The total number of blocks in a run
+constant SimWaitReply  : boolean := False;                     --! Wait for each write command to return a relpy
 
 constant NvmeBlocks    : integer := BlockSize / 512;           --! The number of Nvme blocks per NvmeStorage system block
 constant RamSize       : integer := (NvmeWriteNum * BlockSize) / 16;   -- One block per write buffer
@@ -120,16 +147,15 @@ type InStateType  is (INSTATE_IDLE, INSTATE_INIT, INSTATE_CHOOSE, INSTATE_INPUT_B
 type StateType         is (STATE_IDLE, STATE_INIT, STATE_RUN, STATE_COMPLETE,
                                STATE_QUEUE_HEAD, STATE_QUEUE_0, STATE_QUEUE_1, STATE_QUEUE_2, STATE_QUEUE_3,
                                STATE_WAIT_REPLY);
-type ReplyStateType    is (REPLY_STATE_QUEUE_REPLY1, REPLY_STATE_QUEUE_REPLY2);
+type ReplyStateType    is (REPSTATE_IDLE, REPSTATE_INIT, REPSTATE_COMPLETE, REPSTATE_QUEUE_REPLY1, REPSTATE_QUEUE_REPLY2);
 
 signal inState         : InStateType := INSTATE_IDLE;
 signal state           : StateType := STATE_IDLE;
-signal replyState      : ReplyStateType := REPLY_STATE_QUEUE_REPLY1;
+signal replyState      : ReplyStateType := REPSTATE_QUEUE_REPLY1;
 
-signal blockNumber     : unsigned(31 downto 0) := (others => '0');
-signal numIn           : integer := 0;
-signal num             : integer := 0;
-signal numReply                : integer := 0;
+signal blockNumberIn   : unsigned(31 downto 0) := (others => '0');             --! Input block number
+signal numBlocksProc   : unsigned(31 downto 0) := (others => '0');             --! Number of block write requests sent
+signal numBlocksDone   : unsigned(31 downto 0) := (others => '0');             --! Number of block write completions received
 
 
 -- Input buffers
@@ -158,9 +184,9 @@ signal memChunkCount        : unsigned(10 downto 0);                        -- DWord data send within a chun
 signal memData         : std_logic_vector(127 downto 0);
 
 -- Register information
+signal dataChunkStart  : RegisterType := (others => '0');      -- The data chunk start position in blocks
 signal dataChunkSize   : RegisterType := (others => '0');      -- The data chunk size in blocks
 signal error           : RegisterType := (others => '0');      -- The system errors status
-signal numBlocks       : RegisterType := (others => '0');      -- The number of blocks written
 signal timeUs          : RegisterType := (others => '0');      -- The time in us
 signal timeCounter     : integer range 0 to 125 := 0;
 
@@ -185,9 +211,10 @@ end;
 
 begin
        -- Register access
-       regDataOut      <= std_logic_vector(dataChunkSize) when(regAddress = 0)
-                       else std_logic_vector(error) when(regAddress = 1)
-                       else std_logic_vector(numBlocks) when(regAddress = 2)
+       regDataOut      <= std_logic_vector(dataChunkStart) when(regAddress = 0)
+                       else std_logic_vector(dataChunkSize) when(regAddress = 1)
+                       else std_logic_vector(error) when(regAddress = 2)
+                       else std_logic_vector(numBlocksDone) when(regAddress = 3)
                        else std_logic_vector(timeUs);
        
        -- Register process
@@ -195,8 +222,11 @@ begin
        begin
                if(rising_edge(clk)) then
                        if(reset = '1') then
+                               dataChunkStart  <= (others => '0');
                                dataChunkSize   <= (others => '0');
                        elsif((regWrite = '1') and (regAddress = "00")) then
+                               dataChunkStart  <= unsigned(regDataIn);
+                       elsif((regWrite = '1') and (regAddress = "01")) then
                                dataChunkSize   <= unsigned(regDataIn);
                        end if;
                end if;
@@ -217,7 +247,7 @@ begin
                readData        => readData
        );
 
-       -- Input data process. Accepts data from input stream and stores it into NvmeWriteNum buffers
+       -- Input data process. Accepts data from input stream and stores it into a free buffer if available.
        dataIn.ready <= writeEnable;
 
        process(clk)
@@ -232,9 +262,8 @@ begin
                                        buffers(i).blockNumber <= (others => '0');
                                end loop;
 
-                               blockNumber     <= (others => '0');
+                               blockNumberIn   <= (others => '0');
                                writeEnable     <= '0';
-                               numIn           <= 0;
                                inState         <= INSTATE_IDLE;
                        else
                                case(inState) is
@@ -250,44 +279,42 @@ begin
                                                buffers(i).full <= '0';
                                        end loop;
 
-                                       blockNumber     <= (others => '0');
+                                       blockNumberIn   <= (others => '0');
                                        writeEnable     <= '0';
-                                       numIn           <= 0;
                                        inState         <= INSTATE_CHOOSE;
 
                                when INSTATE_CHOOSE =>
                                        if(enable = '1') then
-                                               if(blockNumber >= dataChunkSize) then
+                                               if(blockNumberIn >= dataChunkSize) then
                                                        inState <= INSTATE_COMPLETE;
+                                               else
+                                                       -- Decide on which buffer to use based on inuse state. We should implement a Fifo queue here
+                                                       for i in 0 to NvmeWriteNum-1 loop
+                                                               p := addPos(bufferInNumNext, i);
+                                                               if(buffers(p).inUse1 = buffers(p).inUse2) then
+                                                                       bufferInNum             <= p;
+                                                                       bufferInNumNext         <= addPos(p, 1);
+                                                                       buffers(p).blockNumber  <= blockNumberIn;
+                                                                       buffers(p).full         <= '0';
+                                                                       buffers(p).inUse1       <= not buffers(p).inUse2;
+                                                                       writeAddress            <= bufferAddress(p);
+                                                                       writeEnable             <= '1';
+                                                                       inState                 <= INSTATE_INPUT_BLOCK;
+                                                                       exit;
+                                                               end if;
+                                                       end loop;
                                                end if;
-                                               
-                                               -- Decide on which buffer to use based on inuse state.
-                                               for i in 0 to NvmeWriteNum-1 loop
-                                                       p := addPos(bufferInNumNext, i);
-                                                       if(buffers(p).inUse1 = buffers(p).inUse2) then
-                                                               bufferInNum             <= p;
-                                                               bufferInNumNext         <= addPos(p, 1);
-                                                               buffers(p).blockNumber  <= blockNumber;
-                                                               buffers(p).full         <= '0';
-                                                               buffers(p).inUse1       <= not buffers(p).inUse2;
-                                                               writeAddress            <= bufferAddress(p);
-                                                               writeEnable             <= '1';
-                                                               numIn                   <= numIn + 1;
-                                                               inState                 <= INSTATE_INPUT_BLOCK;
-                                                               exit;
-                                                       end if;
-                                               end loop;
                                        else
                                                inState <= INSTATE_IDLE;
                                        end if;
 
                                when INSTATE_INPUT_BLOCK =>
-                                       -- Could check for buffer full status here ...
+                                       -- Could check for buffer full status here instead of using last signal
                                        if((dataIn.valid = '1') and (dataIn.ready = '1')) then
                                                if(dataIn.last = '1') then
                                                        writeEnable                     <= '0';
                                                        buffers(bufferInNum).full       <= '1';
-                                                       blockNumber                     <= blockNumber + 1;
+                                                       blockNumberIn                   <= blockNumberIn + 1;
                                                        if(SimDelay) then
                                                                c       := 400;
                                                                inState <= INSTATE_DELAY;
@@ -300,10 +327,10 @@ begin
                                        end if;
 
                                when INSTATE_DELAY =>
+                                       -- This is for simulation so we can space out input blocks in time
                                        c := c - 1;
-                                       if(numIn = numReply) then
-                                       --if(c = 0) then
-                                               inState                         <= INSTATE_CHOOSE;
+                                       if(c = 0) then
+                                               inState <= INSTATE_CHOOSE;
                                        end if;
                                        
                                when INSTATE_COMPLETE =>
@@ -318,23 +345,24 @@ begin
 
        nvmeReplyHead <= to_NvmeReplyHeadType(replyIn.data);
        
-       -- Process data write. This takes the input buffers and sends a write request to the Nvme for each one that is full.
-       -- It waits for replices if there are more than NvmeWriteNum-1 writes in progress.
+       -- Process data write. This takes the input buffers and sends a write request to the Nvme for each one that is full and
+       -- not already processed
        process(clk)
        variable p: integer range 0 to NvmeWriteNum-1;
        begin
                if(rising_edge(clk)) then
                        if(reset = '1') then
+                               for i in 0 to NvmeWriteNum-1 loop
+                                       buffers(i).process1 <= '0';
+                               end loop;
+
                                requestOut.valid        <= '0';
                                requestOut.last         <= '0';
                                requestOut.keep         <= (others => '1');
                                timeUs                  <= (others => '0');
                                timeCounter             <= 0;
                                bufferOutNum            <= 0;
-                               num                     <= 0;
-                               for i in 0 to NvmeWriteNum-1 loop
-                                       buffers(i).process1 <= '0';
-                               end loop;
+                               numBlocksProc           <= (others => '0');
                                state                   <= STATE_IDLE;
                        else
                                case(state) is
@@ -345,21 +373,22 @@ begin
                                
                                when STATE_INIT =>
                                        -- Initialise for next run
-                                       timeUs          <= (others => '0');
-                                       timeCounter     <= 0;
-                                       num             <= 0;
                                        for i in 0 to NvmeWriteNum-1 loop
                                                buffers(i).process1 <= '0';
                                        end loop;
+
+                                       timeUs          <= (others => '0');
+                                       timeCounter     <= 0;
+                                       numBlocksProc   <= (others => '0');
                                        state           <= STATE_RUN;
                                        
                                when STATE_RUN =>
                                        if(enable = '1') then
-                                               if(num >= dataChunkSize) then
+                                               if(numBlocksProc >= dataChunkSize) then
                                                        state <= STATE_COMPLETE;
                                                
                                                else
-                                                       -- Decide on which buffer to output
+                                                       -- Decide on which buffer to output. We should implement a Fifo queue here
                                                        for i in 0 to NvmeWriteNum-1 loop
                                                                p := addPos(bufferOutNumNext, i);
                                                                if((buffers(p).full = '1') and (buffers(p).inUse1 /= buffers(p).inUse2) and (buffers(p).process1 = buffers(p).process2)) then
@@ -391,14 +420,13 @@ begin
                                when STATE_QUEUE_0 =>
                                        if(requestOut.valid = '1' and requestOut.ready = '1') then
                                                requestOut.data <= zeros(32) & pcieAddress(bufferOutNum) & zeros(64);
-                                               --requestOut.data       <= zeros(32) & x"05000000" & zeros(64); -- Data source address
-                                               --requestOut.data       <= zeros(32) & x"01800000" & zeros(64); -- Data source address
+                                               --requestOut.data       <= zeros(32) & x"01800000" & zeros(64); -- Data source address from host
                                                state           <= STATE_QUEUE_1;
                                        end if;
 
                                when STATE_QUEUE_1 =>
                                        if(requestOut.valid = '1' and requestOut.ready = '1') then
-                                               requestOut.data <= zeros(29) & std_logic_vector(buffers(bufferOutNum).blockNumber) & zeros(3 + 64);
+                                               requestOut.data <= zeros(29) & std_logic_vector(dataChunkStart + buffers(bufferOutNum).blockNumber) & zeros(3 + 64);
                                                state           <= STATE_QUEUE_2;
                                        end if;
 
@@ -406,7 +434,7 @@ begin
                                        if(requestOut.valid = '1' and requestOut.ready = '1') then
                                                requestOut.data <= zeros(96) & to_stl(NvmeBlocks-1, 32);        -- WriteMethod, NumBlocks (0 is 1 block)
                                                requestOut.last <= '1';
-                                               num             <= num + 1;
+                                               numBlocksProc   <= numBlocksProc + 1;
                                                state           <= STATE_QUEUE_3;
                                        end if;
 
@@ -415,17 +443,15 @@ begin
                                                requestOut.last         <= '0';
                                                requestOut.valid        <= '0';
                                                
-                                               state <= STATE_RUN;
-                                               
-                                               --if(num > (numReply + 4)) then
-                                               --      state <= STATE_WAIT_REPLY;
-                                               --else
-                                               --      state <= STATE_RUN;
-                                               --end if;
+                                               if(SimWaitReply) then
+                                                       state <= STATE_WAIT_REPLY;
+                                               else
+                                                       state <= STATE_RUN;
+                                               end if;
                                        end if;
 
                                when STATE_WAIT_REPLY =>
-                                       if(num > (numReply + 4)) then
+                                       if(numBlocksProc > numBlocksDone) then
                                                state <= STATE_WAIT_REPLY;
                                        else
                                                state <= STATE_RUN;
@@ -433,7 +459,8 @@ begin
 
                                end case;
                                
-                               if(timeCounter = 125) then
+                               -- Microsecond counter for statistics
+                               if(timeCounter = ((1 us / ClockPeriod) - 1)) then
                                        if(state /= STATE_COMPLETE) then
                                                timeUs <= timeUs + 1;
                                        end if;
@@ -451,41 +478,71 @@ begin
        begin
                if(rising_edge(clk)) then
                        if(reset = '1') then
-                               replyIn.ready           <= '1';
-                               numBlocks               <= (others => '0');
-                               error                   <= (others => '0');
-                               numReply                <= 0;
                                for i in 0 to NvmeWriteNum-1 loop
                                        buffers(i).inUse2       <= '0';
                                        buffers(i).process2     <= '0';
                                end loop;
-                               replyState              <= REPLY_STATE_QUEUE_REPLY1;
+
+                               replyIn.ready   <= '0';
+                               error           <= (others => '0');
+                               numBlocksDone   <= (others => '0');
+                               replyState      <= REPSTATE_IDLE;
                        else
                                case(replyState) is
-                               when REPLY_STATE_QUEUE_REPLY1 =>
-                                       if(state = STATE_INIT) then
-                                               numBlocks       <= (others => '0');
-                                               error           <= (others => '0');
-                                               numReply        <= 0;
+                               when REPSTATE_IDLE =>
+                                       if(enable = '1') then
+                                               replyState <= REPSTATE_INIT;
                                        end if;
+                               
+                               when REPSTATE_INIT =>
+                                       -- Initialise for next run
+                                       for i in 0 to NvmeWriteNum-1 loop
+                                               buffers(i).inUse2       <= '0';
+                                               buffers(i).process2     <= '0';
+                                       end loop;
+
+                                       replyIn.ready   <= '1';
+                                       error           <= (others => '0');
+                                       numBlocksDone   <= (others => '0');
+                                       replyState      <= REPSTATE_QUEUE_REPLY1;
                                        
-                                       if(replyIn.valid = '1' and replyIn.ready = '1') then
-                                               replyState <= REPLY_STATE_QUEUE_REPLY2;
+                               when REPSTATE_COMPLETE =>
+                                       if(enable = '0') then
+                                               replyIn.ready   <= '0';
+                                               replyState      <= REPSTATE_IDLE;
+                                       end if;
+                               
+                               when REPSTATE_QUEUE_REPLY1 =>
+                                       if(enable = '0') then
+                                               if(replyIn.valid = '0') then
+                                                       replyIn.ready   <= '0';
+                                               end if;
+                                               replyState <= REPSTATE_COMPLETE;
+                                       else
+                                               if(numBlocksDone >= dataChunkSize) then
+                                                       replyState <= REPSTATE_COMPLETE;
+                                       
+                                               elsif(replyIn.valid = '1' and replyIn.ready = '1') then
+                                                       replyState <= REPSTATE_QUEUE_REPLY2;
+                                               end if;
                                        end if;
 
-                               when REPLY_STATE_QUEUE_REPLY2 =>
-                                       if(replyIn.valid = '1' and replyIn.ready = '1') then
+                               when REPSTATE_QUEUE_REPLY2 =>
+                                       if(enable = '0') then
+                                               replyIn.ready   <= '0';
+                                               replyState      <= REPSTATE_COMPLETE;
+
+                                       elsif(replyIn.valid = '1' and replyIn.ready = '1') then
                                                if(error = 0) then
                                                        error(15 downto 0) <= '0' & nvmeReplyHead.status;
                                                end if;
 
-                                               numBlocks               <= numBlocks + 1;
-                                               numReply                <= numReply + 1;
+                                               numBlocksDone           <= numBlocksDone + 1;
                                                p                       := to_integer(nvmeReplyHead.cid(2 downto 0));
                                                buffers(p).inUse2       <= buffers(p).inUse1;
                                                buffers(p).process2     <= buffers(p).process1;
 
-                                               replyState              <= REPLY_STATE_QUEUE_REPLY1;
+                                               replyState              <= REPSTATE_QUEUE_REPLY1;
                                        end if;
                                
                                end case;
@@ -494,7 +551,7 @@ begin
        end process;
        
        -- Process Nvme read data requests
-       -- The processes Nvme Pcie memory read requests for the data buffers memory.
+       -- This processes the Nvme Pcie memory read requests for the data buffers memory.
        readEnable <= '1';
        -- readEnable <= memReplyOut.ready and not memReplyOut.last when((memState = MEMSTATE_READHEAD) or (memState = MEMSTATE_READDATA)) else '0';
        memRequestHead  <= to_PcieRequestHeadType(memReqIn.data);
diff --git a/source/DuneNvme/src/ip/Pcie_nvme0-250.xci b/source/DuneNvme/src/ip/Pcie_nvme0-250.xci
new file mode 100644 (file)
index 0000000..9295907
--- /dev/null
@@ -0,0 +1,918 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<spirit:design xmlns:xilinx="http://www.xilinx.com" xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <spirit:vendor>xilinx.com</spirit:vendor>
+  <spirit:library>xci</spirit:library>
+  <spirit:name>unknown</spirit:name>
+  <spirit:version>1.0</spirit:version>
+  <spirit:componentInstances>
+    <spirit:componentInstance>
+      <spirit:instanceName>Pcie_nvme0</spirit:instanceName>
+      <spirit:componentRef spirit:vendor="xilinx.com" spirit:library="ip" spirit:name="pcie3_ultrascale" spirit:version="4.4"/>
+      <spirit:configurableElementValues>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.CLK.SYS_CLK.ASSOCIATED_BUSIF"/>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.CLK.SYS_CLK.ASSOCIATED_RESET"/>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.CLK.SYS_CLK.CLK_DOMAIN"/>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.CLK.SYS_CLK.FREQ_HZ">100000000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.CLK.SYS_CLK.INSERT_VIP">0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.CLK.SYS_CLK.PHASE">0.000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.CLK.SYS_CLK_GT.ASSOCIATED_BUSIF"/>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.CLK.SYS_CLK_GT.ASSOCIATED_RESET"/>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.CLK.SYS_CLK_GT.CLK_DOMAIN"/>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.CLK.SYS_CLK_GT.FREQ_HZ">100000000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.CLK.SYS_CLK_GT.INSERT_VIP">0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.CLK.SYS_CLK_GT.PHASE">0.000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.CLK.USER_CLK.CLK_DOMAIN"/>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.CLK.USER_CLK.INSERT_VIP">0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.CLK.USER_CLK.PHASE">0.000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.M_AXIS_CQ.CLK_DOMAIN"/>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.M_AXIS_CQ.FREQ_HZ">100000000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.M_AXIS_CQ.HAS_TKEEP">1</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.M_AXIS_CQ.HAS_TLAST">1</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.M_AXIS_CQ.HAS_TREADY">1</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.M_AXIS_CQ.HAS_TSTRB">0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.M_AXIS_CQ.INSERT_VIP">0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.M_AXIS_CQ.LAYERED_METADATA">undef</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.M_AXIS_CQ.PHASE">0.000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.M_AXIS_CQ.TDATA_NUM_BYTES">16</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.M_AXIS_CQ.TDEST_WIDTH">0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.M_AXIS_CQ.TID_WIDTH">0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.M_AXIS_CQ.TUSER_WIDTH">85</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.M_AXIS_RC.CLK_DOMAIN"/>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.M_AXIS_RC.FREQ_HZ">100000000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.M_AXIS_RC.HAS_TKEEP">1</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.M_AXIS_RC.HAS_TLAST">1</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.M_AXIS_RC.HAS_TREADY">1</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.M_AXIS_RC.HAS_TSTRB">0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.M_AXIS_RC.INSERT_VIP">0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.M_AXIS_RC.LAYERED_METADATA">undef</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.M_AXIS_RC.PHASE">0.000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.M_AXIS_RC.TDATA_NUM_BYTES">16</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.M_AXIS_RC.TDEST_WIDTH">0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.M_AXIS_RC.TID_WIDTH">0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.M_AXIS_RC.TUSER_WIDTH">75</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.RST.SYS_RST.INSERT_VIP">0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.RST.SYS_RST.POLARITY">ACTIVE_LOW</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.RST.USER_RESET.INSERT_VIP">0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.S_AXIS_CC.CLK_DOMAIN"/>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.S_AXIS_CC.FREQ_HZ">100000000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.S_AXIS_CC.HAS_TKEEP">1</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.S_AXIS_CC.HAS_TLAST">1</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.S_AXIS_CC.HAS_TREADY">1</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.S_AXIS_CC.HAS_TSTRB">0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.S_AXIS_CC.INSERT_VIP">0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.S_AXIS_CC.LAYERED_METADATA">undef</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.S_AXIS_CC.PHASE">0.000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.S_AXIS_CC.TDATA_NUM_BYTES">16</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.S_AXIS_CC.TDEST_WIDTH">0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.S_AXIS_CC.TID_WIDTH">0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.S_AXIS_CC.TUSER_WIDTH">33</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.S_AXIS_RQ.CLK_DOMAIN"/>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.S_AXIS_RQ.FREQ_HZ">100000000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.S_AXIS_RQ.HAS_TKEEP">1</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.S_AXIS_RQ.HAS_TLAST">1</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.S_AXIS_RQ.HAS_TREADY">1</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.S_AXIS_RQ.HAS_TSTRB">0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.S_AXIS_RQ.INSERT_VIP">0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.S_AXIS_RQ.LAYERED_METADATA">undef</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.S_AXIS_RQ.PHASE">0.000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.S_AXIS_RQ.TDATA_NUM_BYTES">16</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.S_AXIS_RQ.TDEST_WIDTH">0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.S_AXIS_RQ.TID_WIDTH">0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.S_AXIS_RQ.TUSER_WIDTH">60</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.ACS_CAP_NEXTPTR">0x000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.ACS_EXT_CAP_ENABLE">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.ARI_CAP_ENABLE">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.AXISTEN_IF_CC_ALIGNMENT_MODE">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.AXISTEN_IF_CC_PARITY_CHK">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.AXISTEN_IF_CQ_ALIGNMENT_MODE">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.AXISTEN_IF_ENABLE_CLIENT_TAG">TRUE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.AXISTEN_IF_ENABLE_MSG_ROUTE">0x2FFFF</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.AXISTEN_IF_ENABLE_RX_MSG_INTFC">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.AXISTEN_IF_RC_ALIGNMENT_MODE">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.AXISTEN_IF_RC_STRADDLE">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.AXISTEN_IF_RQ_ALIGNMENT_MODE">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.AXISTEN_IF_RQ_PARITY_CHK">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.BMD_PIO_MODE">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.CFG_CTL_IF">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.CFG_EXT_IF">TRUE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.CFG_FC_IF">TRUE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.CFG_MGMT_IF">TRUE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.CFG_STATUS_IF">TRUE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.CFG_TX_MSG_IF">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.COMPLETION_SPACE">16KB</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.CORE_CLK_FREQ">2</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_DATA_WIDTH">128</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.DBG_DESCRAMBLE_EN">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.DEDICATE_PERST">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.DEV_PORT_TYPE">2</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.DIS_GT_WIZARD">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.ENABLE_AUTO_RXEQ">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.ENABLE_GT_V1_5">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.ENABLE_IBERT">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.ENABLE_JTAG_DBG">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.EN_GT_SELECTION">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.EXT_CH_GT_DRP">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.EXT_STARTUP_PRIMITIVE">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.EXT_XVC_VSEC_ENABLE">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.FREE_RUN_FREQ">0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.GTWIZ_IN_CORE">1</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.GT_DRP_CLK_SRC">0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.GT_TX_PD">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.INS_LOSS_PROFILE">Add-in_Card</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.MCAP_CAP_NEXTPTR">0x000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.MCAP_ENABLEMENT">NONE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.MCAP_FPGA_BITSTREAM_VERSION">0x00000000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.MSIX_EN">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.MSI_EN">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.MULT_PF_DES">TRUE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PCIE3_DRP">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PCIE_CONFIGURATION">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PCIE_FAST_CONFIG">NONE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PCIE_LINK_SPEED">3</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PCIE_USE_MODE">2.0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PER_FUNC_STATUS_IF">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_AER_CAP_ECRC_CHECK_CAPABLE">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_AER_CAP_ECRC_GEN_CAPABLE">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_AER_CAP_NEXTPTR">0x300</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_ARI_CAP_NEXTPTR">0x000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_ARI_CAP_NEXT_FUNC">0x00</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_BAR0_APERTURE_SIZE">0x09</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_BAR0_CONTROL">0x4</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_BAR1_APERTURE_SIZE">0x00</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_BAR1_CONTROL">0x0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_BAR2_APERTURE_SIZE">0x00</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_BAR2_CONTROL">0x0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_BAR3_APERTURE_SIZE">0x00</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_BAR3_CONTROL">0x0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_BAR4_APERTURE_SIZE">0x00</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_BAR4_CONTROL">0x0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_BAR5_APERTURE_SIZE">0x00</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_BAR5_CONTROL">0x0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_CAPABILITY_POINTER">0xC0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_CLASS_CODE">0x060A00</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_DEVICE_ID">0x8134</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_DEV_CAP2_128B_CAS_ATOMIC_COMPLETER_SUPPORT">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_DEV_CAP2_32B_ATOMIC_COMPLETER_SUPPORT">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_DEV_CAP2_64B_ATOMIC_COMPLETER_SUPPORT">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_DEV_CAP2_LTR_SUPPORT">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_DEV_CAP2_OBFF_SUPPORT">0x0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_DEV_CAP2_TPH_COMPLETER_SUPPORT">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_DEV_CAP_EXT_TAG_SUPPORTED">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_DEV_CAP_FUNCTION_LEVEL_RESET_CAPABLE">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_DEV_CAP_MAX_PAYLOAD_SIZE">0x3</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_DPA_CAP_NEXTPTR">0x000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_DPA_CAP_SUB_STATE_POWER_ALLOCATION0">0x00</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_DPA_CAP_SUB_STATE_POWER_ALLOCATION1">0x00</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_DPA_CAP_SUB_STATE_POWER_ALLOCATION2">0x00</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_DPA_CAP_SUB_STATE_POWER_ALLOCATION3">0x00</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_DPA_CAP_SUB_STATE_POWER_ALLOCATION4">0x00</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_DPA_CAP_SUB_STATE_POWER_ALLOCATION5">0x00</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_DPA_CAP_SUB_STATE_POWER_ALLOCATION6">0x00</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_DPA_CAP_SUB_STATE_POWER_ALLOCATION7">0x00</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_DSN_CAP_NEXTPTR">0x300</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_EXPANSION_ROM_APERTURE_SIZE">0x00</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_EXPANSION_ROM_ENABLE">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_INTERRUPT_PIN">0x0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_LINK_CAP_ASPM_SUPPORT">0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_LINK_STATUS_SLOT_CLOCK_CONFIG">TRUE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_LTR_CAP_NEXTPTR">0x000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_MSIX_CAP_NEXTPTR">0x00</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_MSIX_CAP_PBA_BIR">0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_MSIX_CAP_PBA_OFFSET">0x00000000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_MSIX_CAP_TABLE_BIR">0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_MSIX_CAP_TABLE_OFFSET">0x00000000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_MSIX_CAP_TABLE_SIZE">0x000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_MSI_CAP_MULTIMSGCAP">0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_MSI_CAP_NEXTPTR">0x00</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_PB_CAP_NEXTPTR">0x000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_PM_CAP_NEXTPTR">0x00</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_PM_CAP_PMESUPPORT_D0">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_PM_CAP_PMESUPPORT_D1">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_PM_CAP_PMESUPPORT_D3HOT">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_PM_CAP_SUPP_D1_STATE">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_RBAR_CAP_ENABLE">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_RBAR_CAP_NEXTPTR">0x000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_RBAR_CAP_SIZE0">0x00000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_RBAR_CAP_SIZE1">0x00000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_RBAR_CAP_SIZE2">0x00000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_REVISION_ID">0x00</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_SECONDARY_PCIE_CAP_NEXTPTR">0x300</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_SRIOV_BAR0_APERTURE_SIZE">0x00</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_SRIOV_BAR0_CONTROL">0x0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_SRIOV_BAR1_APERTURE_SIZE">0x00</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_SRIOV_BAR1_CONTROL">0x0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_SRIOV_BAR2_APERTURE_SIZE">0x00</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_SRIOV_BAR2_CONTROL">0x0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_SRIOV_BAR3_APERTURE_SIZE">0x00</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_SRIOV_BAR3_CONTROL">0x0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_SRIOV_BAR4_APERTURE_SIZE">0x00</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_SRIOV_BAR4_CONTROL">0x0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_SRIOV_BAR5_APERTURE_SIZE">0x00</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_SRIOV_BAR5_CONTROL">0x0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_SRIOV_CAP_INITIAL_VF">0x0000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_SRIOV_CAP_NEXTPTR">0x000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_SRIOV_CAP_TOTAL_VF">0x0000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_SRIOV_CAP_VER">0x0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_SRIOV_FIRST_VF_OFFSET">0x0000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_SRIOV_FUNC_DEP_LINK">0x0000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_SRIOV_SUPPORTED_PAGE_SIZE">0x00000553</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_SRIOV_VF_DEVICE_ID">0x0000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_SUBSYSTEM_ID">0x0007</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_SUBSYSTEM_VENDOR_ID">0x10EE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_TPHR_CAP_DEV_SPECIFIC_MODE">TRUE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_TPHR_CAP_ENABLE">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_TPHR_CAP_INT_VEC_MODE">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_TPHR_CAP_NEXTPTR">0x300</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_TPHR_CAP_ST_MODE_SEL">0x0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_TPHR_CAP_ST_TABLE_LOC">0x0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_TPHR_CAP_ST_TABLE_SIZE">0x000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_TPHR_CAP_VER">0x1</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_VC_CAP_NEXTPTR">0x000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF0_VENDOR_ID">0x10EE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_AER_CAP_ECRC_CHECK_CAPABLE">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_AER_CAP_ECRC_GEN_CAPABLE">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_AER_CAP_NEXTPTR">0x000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_ARI_CAP_NEXTPTR">0x000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_BAR0_APERTURE_SIZE">0x00</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_BAR0_CONTROL">0x0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_BAR1_APERTURE_SIZE">0x00</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_BAR1_CONTROL">0x0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_BAR2_APERTURE_SIZE">0x00</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_BAR2_CONTROL">0x0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_BAR3_APERTURE_SIZE">0x00</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_BAR3_CONTROL">0x0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_BAR4_APERTURE_SIZE">0x00</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_BAR4_CONTROL">0x0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_BAR5_APERTURE_SIZE">0x00</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_BAR5_CONTROL">0x0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_CAPABILITY_POINTER">0xC0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_CLASS_CODE">0x060A00</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_DEVICE_ID">0x8011</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_DEV_CAP_MAX_PAYLOAD_SIZE">0x2</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_DPA_CAP_NEXTPTR">0x000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_DPA_CAP_SUB_STATE_POWER_ALLOCATION0">0x00</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_DPA_CAP_SUB_STATE_POWER_ALLOCATION1">0x00</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_DPA_CAP_SUB_STATE_POWER_ALLOCATION2">0x00</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_DPA_CAP_SUB_STATE_POWER_ALLOCATION3">0x00</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_DPA_CAP_SUB_STATE_POWER_ALLOCATION4">0x00</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_DPA_CAP_SUB_STATE_POWER_ALLOCATION5">0x00</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_DPA_CAP_SUB_STATE_POWER_ALLOCATION6">0x00</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_DPA_CAP_SUB_STATE_POWER_ALLOCATION7">0x00</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_DSN_CAP_NEXTPTR">0x000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_EXPANSION_ROM_APERTURE_SIZE">0x00</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_EXPANSION_ROM_ENABLE">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_INTERRUPT_PIN">0x0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_MSIX_CAP_NEXTPTR">0x00</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_MSIX_CAP_PBA_BIR">0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_MSIX_CAP_PBA_OFFSET">0x00000000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_MSIX_CAP_TABLE_BIR">0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_MSIX_CAP_TABLE_OFFSET">0x00000000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_MSIX_CAP_TABLE_SIZE">0x000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_MSI_CAP_MULTIMSGCAP">0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_MSI_CAP_NEXTPTR">0x00</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_PB_CAP_NEXTPTR">0x000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_PM_CAP_NEXTPTR">0x00</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_RBAR_CAP_ENABLE">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_RBAR_CAP_NEXTPTR">0x000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_RBAR_CAP_SIZE0">0x00000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_RBAR_CAP_SIZE1">0x00000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_RBAR_CAP_SIZE2">0x00000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_REVISION_ID">0x00</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_SRIOV_BAR0_APERTURE_SIZE">0x00</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_SRIOV_BAR0_CONTROL">0x0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_SRIOV_BAR1_APERTURE_SIZE">0x00</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_SRIOV_BAR1_CONTROL">0x0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_SRIOV_BAR2_APERTURE_SIZE">0x00</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_SRIOV_BAR2_CONTROL">0x0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_SRIOV_BAR3_APERTURE_SIZE">0x00</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_SRIOV_BAR3_CONTROL">0x0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_SRIOV_BAR4_APERTURE_SIZE">0x00</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_SRIOV_BAR4_CONTROL">0x0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_SRIOV_BAR5_APERTURE_SIZE">0x00</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_SRIOV_BAR5_CONTROL">0x0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_SRIOV_CAP_INITIAL_VF">0x0000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_SRIOV_CAP_NEXTPTR">0x000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_SRIOV_CAP_TOTAL_VF">0x0000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_SRIOV_CAP_VER">0x0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_SRIOV_FIRST_VF_OFFSET">0x0000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_SRIOV_FUNC_DEP_LINK">0x0001</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_SRIOV_SUPPORTED_PAGE_SIZE">0x00000553</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_SRIOV_VF_DEVICE_ID">0x0000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_SUBSYSTEM_ID">0x0007</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_TPHR_CAP_DEV_SPECIFIC_MODE">TRUE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_TPHR_CAP_ENABLE">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_TPHR_CAP_INT_VEC_MODE">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_TPHR_CAP_NEXTPTR">0x000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_TPHR_CAP_ST_MODE_SEL">0x0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_TPHR_CAP_ST_TABLE_LOC">0x0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_TPHR_CAP_ST_TABLE_SIZE">0x000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PF1_TPHR_CAP_VER">0x1</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PHY_LP_TXPRESET">4</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PIPE_SIM">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PLL_TYPE">2</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PL_INTERFACE">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PL_LINK_CAP_MAX_LINK_SPEED">4</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PL_LINK_CAP_MAX_LINK_WIDTH">4</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PL_UPSTREAM_FACING">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.PM_ENABLE_L23_ENTRY">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.RCV_MSG_IF">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.REF_CLK_FREQ">0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.RX_DETECT">0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.SELECT_QUAD">GTH_Quad_228</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.SHARED_LOGIC">1</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.SPARE_WORD1">0x00000000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.SRIOV_CAP_ENABLE">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.SYS_RESET_POLARITY">0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.TL_CREDITS_CD">0x3E0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.TL_CREDITS_CH">0x20</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.TL_CREDITS_NPD">0x028</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.TL_CREDITS_NPH">0x20</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.TL_CREDITS_PD">0x198</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.TL_CREDITS_PH">0x20</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.TL_EXTENDED_CFG_EXTEND_INTERFACE_ENABLE">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.TL_LEGACY_MODE_ENABLE">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.TL_PF_ENABLE_REG">0x0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.TRANSCEIVER_CTRL_STATUS_PORTS">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.TX_FC_IF">TRUE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.USER_CLK_FREQ">3</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF0_ARI_CAP_NEXTPTR">0x000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF0_CAPABILITY_POINTER">0x00</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF0_MSIX_CAP_PBA_BIR">0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF0_MSIX_CAP_PBA_OFFSET">0x00000000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF0_MSIX_CAP_TABLE_BIR">0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF0_MSIX_CAP_TABLE_OFFSET">0x00000000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF0_MSIX_CAP_TABLE_SIZE">0x000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF0_MSI_CAP_MULTIMSGCAP">0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF0_PM_CAP_NEXTPTR">0x00</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF0_TPHR_CAP_DEV_SPECIFIC_MODE">TRUE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF0_TPHR_CAP_INT_VEC_MODE">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF0_TPHR_CAP_NEXTPTR">0x000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF0_TPHR_CAP_ST_MODE_SEL">0x0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF0_TPHR_CAP_ST_TABLE_LOC">0x0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF0_TPHR_CAP_ST_TABLE_SIZE">0x000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF0_TPHR_CAP_VER">0x1</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF1_ARI_CAP_NEXTPTR">0x000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF1_MSIX_CAP_PBA_BIR">0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF1_MSIX_CAP_PBA_OFFSET">0x00000000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF1_MSIX_CAP_TABLE_BIR">0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF1_MSIX_CAP_TABLE_OFFSET">0x00000000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF1_MSIX_CAP_TABLE_SIZE">0x000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF1_MSI_CAP_MULTIMSGCAP">0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF1_PM_CAP_NEXTPTR">0x00</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF1_TPHR_CAP_DEV_SPECIFIC_MODE">TRUE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF1_TPHR_CAP_INT_VEC_MODE">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF1_TPHR_CAP_NEXTPTR">0x000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF1_TPHR_CAP_ST_MODE_SEL">0x0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF1_TPHR_CAP_ST_TABLE_LOC">0x0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF1_TPHR_CAP_ST_TABLE_SIZE">0x000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF1_TPHR_CAP_VER">0x1</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF2_ARI_CAP_NEXTPTR">0x000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF2_MSIX_CAP_PBA_BIR">0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF2_MSIX_CAP_PBA_OFFSET">0x00000000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF2_MSIX_CAP_TABLE_BIR">0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF2_MSIX_CAP_TABLE_OFFSET">0x00000000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF2_MSIX_CAP_TABLE_SIZE">0x000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF2_MSI_CAP_MULTIMSGCAP">0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF2_PM_CAP_NEXTPTR">0x00</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF2_TPHR_CAP_DEV_SPECIFIC_MODE">TRUE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF2_TPHR_CAP_INT_VEC_MODE">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF2_TPHR_CAP_NEXTPTR">0x000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF2_TPHR_CAP_ST_MODE_SEL">0x0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF2_TPHR_CAP_ST_TABLE_LOC">0x0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF2_TPHR_CAP_ST_TABLE_SIZE">0x000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF2_TPHR_CAP_VER">0x1</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF3_ARI_CAP_NEXTPTR">0x000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF3_MSIX_CAP_PBA_BIR">0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF3_MSIX_CAP_PBA_OFFSET">0x00000000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF3_MSIX_CAP_TABLE_BIR">0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF3_MSIX_CAP_TABLE_OFFSET">0x00000000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF3_MSIX_CAP_TABLE_SIZE">0x000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF3_MSI_CAP_MULTIMSGCAP">0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF3_PM_CAP_NEXTPTR">0x00</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF3_TPHR_CAP_DEV_SPECIFIC_MODE">TRUE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF3_TPHR_CAP_INT_VEC_MODE">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF3_TPHR_CAP_NEXTPTR">0x000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF3_TPHR_CAP_ST_MODE_SEL">0x0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF3_TPHR_CAP_ST_TABLE_LOC">0x0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF3_TPHR_CAP_ST_TABLE_SIZE">0x000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF3_TPHR_CAP_VER">0x1</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF4_ARI_CAP_NEXTPTR">0x000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF4_MSIX_CAP_PBA_BIR">0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF4_MSIX_CAP_PBA_OFFSET">0x00000000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF4_MSIX_CAP_TABLE_BIR">0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF4_MSIX_CAP_TABLE_OFFSET">0x00000000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF4_MSIX_CAP_TABLE_SIZE">0x000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF4_MSI_CAP_MULTIMSGCAP">0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF4_PM_CAP_NEXTPTR">0x00</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF4_TPHR_CAP_DEV_SPECIFIC_MODE">TRUE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF4_TPHR_CAP_INT_VEC_MODE">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF4_TPHR_CAP_NEXTPTR">0x000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF4_TPHR_CAP_ST_MODE_SEL">0x0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF4_TPHR_CAP_ST_TABLE_LOC">0x0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF4_TPHR_CAP_ST_TABLE_SIZE">0x000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF4_TPHR_CAP_VER">0x1</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF5_ARI_CAP_NEXTPTR">0x000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF5_MSIX_CAP_PBA_BIR">0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF5_MSIX_CAP_PBA_OFFSET">0x00000000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF5_MSIX_CAP_TABLE_BIR">0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF5_MSIX_CAP_TABLE_OFFSET">0x00000000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF5_MSIX_CAP_TABLE_SIZE">0x000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF5_MSI_CAP_MULTIMSGCAP">0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF5_PM_CAP_NEXTPTR">0x00</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF5_TPHR_CAP_DEV_SPECIFIC_MODE">TRUE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF5_TPHR_CAP_INT_VEC_MODE">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF5_TPHR_CAP_NEXTPTR">0x000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF5_TPHR_CAP_ST_MODE_SEL">0x0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF5_TPHR_CAP_ST_TABLE_LOC">0x0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF5_TPHR_CAP_ST_TABLE_SIZE">0x000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.VF5_TPHR_CAP_VER">0x1</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.en_msi_per_vec_masking">FALSE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.gen_x0y0_xdc">0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.gen_x0y1_xdc">0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.gen_x0y2_xdc">1</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.gen_x0y3_xdc">0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.gen_x0y4_xdc">0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.gen_x0y5_xdc">0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.pcie_blk_locn">2</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.silicon_revision">Production</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.xlnx_ref_board">0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_ENABLEMENT.xlnx_ref_board">true</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.AXISTEN_IF_RC_STRADDLE">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Component_Name">Pcie_nvme0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.INS_LOSS_NYQ">15</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PF0_AER_CAP_ECRC_CHECK_CAPABLE">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PF0_AER_CAP_ECRC_GEN_CAPABLE">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PF0_CLASS_CODE">060A00</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PF0_DEVICE_ID">8134</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PF0_DEV_CAP2_128B_CAS_ATOMIC_COMPLETER_SUPPORT">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PF0_DEV_CAP2_32B_ATOMIC_COMPLETER_SUPPORT">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PF0_DEV_CAP2_64B_ATOMIC_COMPLETER_SUPPORT">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PF0_DEV_CAP2_OBFF_SUPPORT">00_Not_Supported</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PF0_DEV_CAP2_TPH_COMPLETER_SUPPORT">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PF0_DEV_CAP_FUNCTION_LEVEL_RESET_CAPABLE">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PF0_INTERRUPT_PIN">NONE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PF0_LINK_STATUS_SLOT_CLOCK_CONFIG">true</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PF0_MSIX_CAP_PBA_BIR">BAR_0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PF0_MSIX_CAP_PBA_OFFSET">00000000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PF0_MSIX_CAP_TABLE_BIR">BAR_0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PF0_MSIX_CAP_TABLE_OFFSET">00000000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PF0_MSIX_CAP_TABLE_SIZE">000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PF0_MSI_CAP_MULTIMSGCAP">1_vector</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PF0_PM_CAP_PMESUPPORT_D0">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PF0_PM_CAP_PMESUPPORT_D1">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PF0_PM_CAP_PMESUPPORT_D3HOT">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PF0_PM_CAP_SUPP_D1_STATE">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PF0_REVISION_ID">00</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PF0_SRIOV_CAP_INITIAL_VF">0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PF0_SRIOV_FIRST_VF_OFFSET">N/A</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PF0_SRIOV_FUNC_DEP_LINK">0000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PF0_SRIOV_SUPPORTED_PAGE_SIZE">00000553</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PF0_SRIOV_VF_DEVICE_ID">0000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PF0_SUBSYSTEM_ID">0007</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PF0_SUBSYSTEM_VENDOR_ID">10EE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PF0_Use_Class_Code_Lookup_Assistant">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PF1_AER_CAP_ECRC_CHECK_CAPABLE">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PF1_AER_CAP_ECRC_GEN_CAPABLE">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PF1_CLASS_CODE">060A00</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PF1_DEVICE_ID">8011</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PF1_INTERRUPT_PIN">NONE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PF1_MSIX_CAP_PBA_BIR">BAR_0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PF1_MSIX_CAP_PBA_OFFSET">00000000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PF1_MSIX_CAP_TABLE_BIR">BAR_0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PF1_MSIX_CAP_TABLE_OFFSET">00000000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PF1_MSIX_CAP_TABLE_SIZE">000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PF1_MSI_CAP_MULTIMSGCAP">1_vector</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PF1_REVISION_ID">00</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PF1_SRIOV_CAP_INITIAL_VF">0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PF1_SRIOV_CAP_VER">0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PF1_SRIOV_FIRST_VF_OFFSET">N/A</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PF1_SRIOV_FUNC_DEP_LINK">0001</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PF1_SRIOV_SUPPORTED_PAGE_SIZE">00000553</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PF1_SRIOV_VF_DEVICE_ID">0000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PF1_SUBSYSTEM_ID">0007</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PF1_Use_Class_Code_Lookup_Assistant">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PHY_LP_TXPRESET">4</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PL_LINK_CAP_MAX_LINK_SPEED">8.0_GT/s</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PL_LINK_CAP_MAX_LINK_WIDTH">X4</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.REF_CLK_FREQ">100_MHz</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.RX_DETECT">Default</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.RX_PPM_OFFSET">0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.RX_SSC_PPM">0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.SRIOV_CAP_ENABLE">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.SRIOV_CAP_ENABLE_EXT">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Shared_Logic">1</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.TL_PF_ENABLE_REG">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.VF0_MSIX_CAP_PBA_BIR">BAR_0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.VF0_MSIX_CAP_PBA_OFFSET">00000000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.VF0_MSIX_CAP_TABLE_BIR">BAR_0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.VF0_MSIX_CAP_TABLE_OFFSET">00000000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.VF0_MSIX_CAP_TABLE_SIZE">000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.VF0_MSI_CAP_MULTIMSGCAP">1_vector</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.VF1_MSIX_CAP_PBA_BIR">BAR_0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.VF1_MSIX_CAP_PBA_OFFSET">00000000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.VF1_MSIX_CAP_TABLE_BIR">BAR_0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.VF1_MSIX_CAP_TABLE_OFFSET">00000000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.VF1_MSIX_CAP_TABLE_SIZE">000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.VF1_MSI_CAP_MULTIMSGCAP">1_vector</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.VF2_MSIX_CAP_PBA_BIR">BAR_0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.VF2_MSIX_CAP_PBA_OFFSET">00000000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.VF2_MSIX_CAP_TABLE_BIR">BAR_0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.VF2_MSIX_CAP_TABLE_OFFSET">00000000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.VF2_MSIX_CAP_TABLE_SIZE">000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.VF2_MSI_CAP_MULTIMSGCAP">1_vector</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.VF3_MSIX_CAP_PBA_BIR">BAR_0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.VF3_MSIX_CAP_PBA_OFFSET">00000000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.VF3_MSIX_CAP_TABLE_BIR">BAR_0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.VF3_MSIX_CAP_TABLE_OFFSET">00000000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.VF3_MSIX_CAP_TABLE_SIZE">000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.VF3_MSI_CAP_MULTIMSGCAP">1_vector</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.VF4_MSIX_CAP_PBA_BIR">BAR_0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.VF4_MSIX_CAP_PBA_OFFSET">00000000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.VF4_MSIX_CAP_TABLE_BIR">BAR_0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.VF4_MSIX_CAP_TABLE_OFFSET">00000000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.VF4_MSIX_CAP_TABLE_SIZE">000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.VF4_MSI_CAP_MULTIMSGCAP">1_vector</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.VF5_MSIX_CAP_PBA_BIR">BAR_0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.VF5_MSIX_CAP_PBA_OFFSET">00000000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.VF5_MSIX_CAP_TABLE_BIR">BAR_0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.VF5_MSIX_CAP_TABLE_OFFSET">00000000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.VF5_MSIX_CAP_TABLE_SIZE">000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.VF5_MSI_CAP_MULTIMSGCAP">1_vector</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.acs_ext_cap_enable">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.alignment_mode">DWORD_Aligned</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.aspm_support">No_ASPM</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.axisten_freq">250</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.axisten_if_enable_client_tag">true</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.axisten_if_enable_msg_route">2FFFF</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.axisten_if_enable_msg_route_override">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.axisten_if_enable_rx_msg_intfc">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.axisten_if_width">128_bit</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.bmd_pio_mode">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.cc_cq_alignment">None</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.cfg_ctl_if">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.cfg_ext_if">true</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.cfg_fc_if">true</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.cfg_mgmt_if">true</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.cfg_status_if">true</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.cfg_tx_msg_if">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.coreclk_freq">500</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.dedicate_perst">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.device_port_type">Root_Port_of_PCI_Express_Root_Complex</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.dis_gt_wizard">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.disable_gt_loc">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.en_dbg_descramble">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.en_ext_ch_gt_drp">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.en_ext_clk">true</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.en_gt_selection">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.en_l23_entry">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.en_msi_per_vec_masking">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.en_parity">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.en_pcie_conf">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.en_pcie_drp">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.en_pl_ifc">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.en_transceiver_status_ports">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.enable_auto_rxeq">False</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.enable_gt_v1_5">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.enable_ibert">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.enable_jtag_dbg">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.ext_pcie_cfg_space_enabled">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.ext_startup_primitive">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.ext_xvc_vsec_enable">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.extended_tag_field">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.free_run_freq">100_MHz</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.gen_x0y0">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.gen_x0y1">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.gen_x0y2">true</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.gen_x0y3">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.gen_x0y4">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.gen_x0y5">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.gt_drp_clk_src">Internal</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.gt_tx_pd">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.gtwiz_in_core">1</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.ins_loss_profile">Add-in_Card</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.mcap_enablement">None</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.mcap_fpga_bitstream_version">00000000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.mode_selection">Advanced</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.mult_pf_des">true</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pcie_blk_locn">X0Y2</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.per_func_status_if">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.perf_level">Extreme</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.performance">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_aer_enabled">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_ari_enabled">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_bar0_64bit">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_bar0_enabled">true</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_bar0_prefetchable">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_bar0_scale">Kilobytes</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_bar0_size">2</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_bar0_type">Memory</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_bar1_64bit">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_bar1_enabled">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_bar1_prefetchable">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_bar1_scale">Kilobytes</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_bar1_size">2</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_bar1_type">N/A</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_bar2_64bit">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_bar2_enabled">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_bar2_prefetchable">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_bar2_scale">Kilobytes</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_bar2_size">2</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_bar2_type">N/A</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_bar3_64bit">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_bar3_enabled">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_bar3_prefetchable">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_bar3_scale">Kilobytes</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_bar3_size">2</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_bar3_type">N/A</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_bar4_64bit">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_bar4_enabled">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_bar4_prefetchable">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_bar4_scale">Kilobytes</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_bar4_size">2</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_bar4_type">N/A</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_bar5_enabled">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_bar5_prefetchable">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_bar5_scale">Kilobytes</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_bar5_size">2</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_bar5_type">N/A</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_base_class_menu">Bridge_device</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_class_code_base">06</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_class_code_interface">00</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_class_code_sub">0A</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_dev_cap_max_payload">1024_bytes</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_dpa_enabled">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_dsn_enabled">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_expansion_rom_enabled">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_expansion_rom_scale">Kilobytes</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_expansion_rom_size">2</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_ltr_enabled">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_msi_enabled">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_msix_enabled">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_pb_enabled">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_rbar_enabled">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_sriov_bar0_64bit">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_sriov_bar0_enabled">true</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_sriov_bar0_prefetchable">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_sriov_bar0_scale">Kilobytes</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_sriov_bar0_size">2</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_sriov_bar0_type">Memory</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_sriov_bar1_64bit">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_sriov_bar1_enabled">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_sriov_bar1_prefetchable">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_sriov_bar1_scale">Kilobytes</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_sriov_bar1_size">2</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_sriov_bar1_type">N/A</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_sriov_bar2_64bit">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_sriov_bar2_enabled">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_sriov_bar2_prefetchable">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_sriov_bar2_scale">Kilobytes</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_sriov_bar2_size">2</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_sriov_bar2_type">N/A</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_sriov_bar3_64bit">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_sriov_bar3_enabled">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_sriov_bar3_prefetchable">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_sriov_bar3_scale">Kilobytes</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_sriov_bar3_size">2</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_sriov_bar3_type">N/A</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_sriov_bar4_64bit">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_sriov_bar4_enabled">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_sriov_bar4_prefetchable">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_sriov_bar4_scale">Kilobytes</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_sriov_bar4_size">2</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_sriov_bar4_type">N/A</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_sriov_bar5_enabled">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_sriov_bar5_prefetchable">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_sriov_bar5_scale">Kilobytes</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_sriov_bar5_size">2</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_sriov_bar5_type">N/A</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_sriov_cap_ver">0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_sub_class_interface_menu">InfiniBand_to_PCI_host_bridge</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_tphr_enable">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf0_vc_cap_enabled">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_aer_enabled">true</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_ari_enabled">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_bar0_64bit">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_bar0_enabled">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_bar0_prefetchable">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_bar0_scale">Kilobytes</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_bar0_size">2</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_bar0_type">N/A</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_bar1_64bit">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_bar1_enabled">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_bar1_prefetchable">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_bar1_scale">Kilobytes</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_bar1_size">2</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_bar1_type">N/A</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_bar2_64bit">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_bar2_enabled">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_bar2_prefetchable">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_bar2_scale">Kilobytes</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_bar2_size">2</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_bar2_type">N/A</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_bar3_64bit">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_bar3_enabled">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_bar3_prefetchable">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_bar3_scale">Kilobytes</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_bar3_size">2</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_bar3_type">N/A</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_bar4_64bit">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_bar4_enabled">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_bar4_prefetchable">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_bar4_scale">Kilobytes</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_bar4_size">2</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_bar4_type">N/A</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_bar5_enabled">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_bar5_prefetchable">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_bar5_scale">Kilobytes</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_bar5_size">2</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_bar5_type">N/A</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_base_class_menu">Bridge_device</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_class_code_base">06</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_class_code_interface">00</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_class_code_sub">0A</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_dev_cap_max_payload">512_bytes</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_dpa_enabled">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_dsn_enabled">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_expansion_rom_enabled">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_expansion_rom_scale">Kilobytes</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_expansion_rom_size">2</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_msi_enabled">true</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_msix_enabled">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_pb_enabled">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_rbar_enabled">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_sriov_bar0_64bit">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_sriov_bar0_enabled">true</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_sriov_bar0_prefetchable">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_sriov_bar0_scale">Kilobytes</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_sriov_bar0_size">2</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_sriov_bar0_type">Memory</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_sriov_bar1_64bit">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_sriov_bar1_enabled">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_sriov_bar1_prefetchable">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_sriov_bar1_scale">Kilobytes</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_sriov_bar1_size">2</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_sriov_bar1_type">N/A</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_sriov_bar2_64bit">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_sriov_bar2_enabled">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_sriov_bar2_prefetchable">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_sriov_bar2_scale">Kilobytes</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_sriov_bar2_size">2</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_sriov_bar2_type">N/A</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_sriov_bar3_64bit">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_sriov_bar3_enabled">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_sriov_bar3_prefetchable">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_sriov_bar3_scale">Kilobytes</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_sriov_bar3_size">2</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_sriov_bar3_type">N/A</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_sriov_bar4_64bit">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_sriov_bar4_enabled">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_sriov_bar4_prefetchable">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_sriov_bar4_scale">Kilobytes</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_sriov_bar4_size">2</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_sriov_bar4_type">N/A</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_sriov_bar5_enabled">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_sriov_bar5_prefetchable">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_sriov_bar5_scale">Kilobytes</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_sriov_bar5_size">2</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_sriov_bar5_type">N/A</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_sub_class_interface_menu">InfiniBand_to_PCI_host_bridge</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pf1_tphr_enable">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.pipe_sim">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.plltype">QPLL1</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.rc_rq_alignment">None</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.rcv_msg_if">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.select_quad">GTH_Quad_228</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.special_gui">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.sys_reset_polarity">ACTIVE_LOW</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.tandem_mode">None</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.tl_pf0_enable_reg">true</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.tx_fc_if">true</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.vendor_id">10EE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.xlnx_ref_board">None</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.ARCHITECTURE">kintexu</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.BASE_BOARD_PART">xilinx.com:kcu105:part0:1.6</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.BOARD_CONNECTIONS"/>
+        <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.DEVICE">xcku040</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.PACKAGE">ffva1156</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.PREFHDL">VHDL</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.SILICON_REVISION"/>
+        <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.SIMULATOR_LANGUAGE">MIXED</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.SPEEDGRADE">-2</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.STATIC_POWER"/>
+        <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.TEMPERATURE_GRADE">E</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.USE_RDI_CUSTOMIZATION">TRUE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.USE_RDI_GENERATION">TRUE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="RUNTIME_PARAM.IPCONTEXT">IP_Flow</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="RUNTIME_PARAM.IPREVISION">6</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="RUNTIME_PARAM.MANAGED">TRUE</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="RUNTIME_PARAM.OUTPUTDIR">.</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="RUNTIME_PARAM.SELECTEDSIMMODEL"/>
+        <spirit:configurableElementValue spirit:referenceId="RUNTIME_PARAM.SHAREDDIR">.</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="RUNTIME_PARAM.SWVERSION">2019.2</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="RUNTIME_PARAM.SYNTHESISFLOW">OUT_OF_CONTEXT</spirit:configurableElementValue>
+      </spirit:configurableElementValues>
+      <spirit:vendorExtensions>
+        <xilinx:componentInstanceExtensions>
+          <xilinx:configElementInfos>
+            <xilinx:configElementInfo xilinx:referenceId="BUSIFPARAM_VALUE.M_AXIS_CQ.HAS_TKEEP" xilinx:valueSource="auto"/>
+            <xilinx:configElementInfo xilinx:referenceId="BUSIFPARAM_VALUE.M_AXIS_CQ.HAS_TLAST" xilinx:valueSource="constant"/>
+            <xilinx:configElementInfo xilinx:referenceId="BUSIFPARAM_VALUE.M_AXIS_CQ.HAS_TREADY" xilinx:valueSource="constant"/>
+            <xilinx:configElementInfo xilinx:referenceId="BUSIFPARAM_VALUE.M_AXIS_CQ.HAS_TSTRB" xilinx:valueSource="constant"/>
+            <xilinx:configElementInfo xilinx:referenceId="BUSIFPARAM_VALUE.M_AXIS_CQ.TDATA_NUM_BYTES" xilinx:valueSource="auto"/>
+            <xilinx:configElementInfo xilinx:referenceId="BUSIFPARAM_VALUE.M_AXIS_CQ.TDEST_WIDTH" xilinx:valueSource="constant"/>
+            <xilinx:configElementInfo xilinx:referenceId="BUSIFPARAM_VALUE.M_AXIS_CQ.TID_WIDTH" xilinx:valueSource="constant"/>
+            <xilinx:configElementInfo xilinx:referenceId="BUSIFPARAM_VALUE.M_AXIS_CQ.TUSER_WIDTH" xilinx:valueSource="constant"/>
+            <xilinx:configElementInfo xilinx:referenceId="BUSIFPARAM_VALUE.M_AXIS_RC.HAS_TKEEP" xilinx:valueSource="auto"/>
+            <xilinx:configElementInfo xilinx:referenceId="BUSIFPARAM_VALUE.M_AXIS_RC.HAS_TLAST" xilinx:valueSource="constant"/>
+            <xilinx:configElementInfo xilinx:referenceId="BUSIFPARAM_VALUE.M_AXIS_RC.HAS_TREADY" xilinx:valueSource="constant"/>
+            <xilinx:configElementInfo xilinx:referenceId="BUSIFPARAM_VALUE.M_AXIS_RC.HAS_TSTRB" xilinx:valueSource="constant"/>
+            <xilinx:configElementInfo xilinx:referenceId="BUSIFPARAM_VALUE.M_AXIS_RC.TDATA_NUM_BYTES" xilinx:valueSource="auto"/>
+            <xilinx:configElementInfo xilinx:referenceId="BUSIFPARAM_VALUE.M_AXIS_RC.TDEST_WIDTH" xilinx:valueSource="constant"/>
+            <xilinx:configElementInfo xilinx:referenceId="BUSIFPARAM_VALUE.M_AXIS_RC.TID_WIDTH" xilinx:valueSource="constant"/>
+            <xilinx:configElementInfo xilinx:referenceId="BUSIFPARAM_VALUE.M_AXIS_RC.TUSER_WIDTH" xilinx:valueSource="constant"/>
+            <xilinx:configElementInfo xilinx:referenceId="BUSIFPARAM_VALUE.S_AXIS_CC.HAS_TKEEP" xilinx:valueSource="auto"/>
+            <xilinx:configElementInfo xilinx:referenceId="BUSIFPARAM_VALUE.S_AXIS_CC.HAS_TLAST" xilinx:valueSource="constant"/>
+            <xilinx:configElementInfo xilinx:referenceId="BUSIFPARAM_VALUE.S_AXIS_CC.HAS_TREADY" xilinx:valueSource="constant"/>
+            <xilinx:configElementInfo xilinx:referenceId="BUSIFPARAM_VALUE.S_AXIS_CC.HAS_TSTRB" xilinx:valueSource="constant"/>
+            <xilinx:configElementInfo xilinx:referenceId="BUSIFPARAM_VALUE.S_AXIS_CC.TDATA_NUM_BYTES" xilinx:valueSource="auto"/>
+            <xilinx:configElementInfo xilinx:referenceId="BUSIFPARAM_VALUE.S_AXIS_CC.TDEST_WIDTH" xilinx:valueSource="constant"/>
+            <xilinx:configElementInfo xilinx:referenceId="BUSIFPARAM_VALUE.S_AXIS_CC.TID_WIDTH" xilinx:valueSource="constant"/>
+            <xilinx:configElementInfo xilinx:referenceId="BUSIFPARAM_VALUE.S_AXIS_CC.TUSER_WIDTH" xilinx:valueSource="constant"/>
+            <xilinx:configElementInfo xilinx:referenceId="BUSIFPARAM_VALUE.S_AXIS_RQ.HAS_TKEEP" xilinx:valueSource="auto"/>
+            <xilinx:configElementInfo xilinx:referenceId="BUSIFPARAM_VALUE.S_AXIS_RQ.HAS_TLAST" xilinx:valueSource="constant"/>
+            <xilinx:configElementInfo xilinx:referenceId="BUSIFPARAM_VALUE.S_AXIS_RQ.HAS_TREADY" xilinx:valueSource="constant"/>
+            <xilinx:configElementInfo xilinx:referenceId="BUSIFPARAM_VALUE.S_AXIS_RQ.HAS_TSTRB" xilinx:valueSource="constant"/>
+            <xilinx:configElementInfo xilinx:referenceId="BUSIFPARAM_VALUE.S_AXIS_RQ.TDATA_NUM_BYTES" xilinx:valueSource="auto"/>
+            <xilinx:configElementInfo xilinx:referenceId="BUSIFPARAM_VALUE.S_AXIS_RQ.TDEST_WIDTH" xilinx:valueSource="constant"/>
+            <xilinx:configElementInfo xilinx:referenceId="BUSIFPARAM_VALUE.S_AXIS_RQ.TID_WIDTH" xilinx:valueSource="constant"/>
+            <xilinx:configElementInfo xilinx:referenceId="BUSIFPARAM_VALUE.S_AXIS_RQ.TUSER_WIDTH" xilinx:valueSource="constant"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.PF0_CLASS_CODE" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.PF0_DEVICE_ID" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.PF0_INTERRUPT_PIN" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.PF1_CLASS_CODE" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.PF1_DEVICE_ID" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.PL_LINK_CAP_MAX_LINK_SPEED" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.PL_LINK_CAP_MAX_LINK_WIDTH" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.aspm_support" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.axisten_freq" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.axisten_if_width" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.cfg_ctl_if" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.cfg_mgmt_if" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.cfg_tx_msg_if" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.coreclk_freq" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.dedicate_perst" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.device_port_type" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.gen_x0y0" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.gen_x0y1" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.gen_x0y2" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.mcap_enablement" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.mode_selection" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.pcie_blk_locn" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.per_func_status_if" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.pf0_aer_enabled" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.pf0_bar0_type" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.pf0_bar1_type" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.pf0_bar2_type" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.pf0_bar3_type" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.pf0_bar4_type" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.pf0_bar5_type" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.pf0_base_class_menu" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.pf0_class_code_base" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.pf0_class_code_sub" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.pf0_dev_cap_max_payload" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.pf0_msi_enabled" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.pf0_sriov_bar0_type" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.pf0_sriov_bar1_type" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.pf0_sriov_bar2_type" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.pf0_sriov_bar3_type" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.pf0_sriov_bar4_type" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.pf0_sriov_bar5_type" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.pf0_sub_class_interface_menu" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.pf1_bar0_type" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.pf1_bar1_type" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.pf1_bar2_type" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.pf1_bar3_type" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.pf1_bar4_type" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.pf1_bar5_type" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.pf1_base_class_menu" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.pf1_class_code_base" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.pf1_class_code_sub" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.pf1_sriov_bar0_type" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.pf1_sriov_bar1_type" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.pf1_sriov_bar2_type" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.pf1_sriov_bar3_type" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.pf1_sriov_bar4_type" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.pf1_sriov_bar5_type" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.pf1_sub_class_interface_menu" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.plltype" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.rcv_msg_if" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.select_quad" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.sys_reset_polarity" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.tx_fc_if" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.xlnx_ref_board" xilinx:valueSource="user"/>
+          </xilinx:configElementInfos>
+        </xilinx:componentInstanceExtensions>
+      </spirit:vendorExtensions>
+    </spirit:componentInstance>
+  </spirit:componentInstances>
+</spirit:design>
index 69697cd27c3e078dd97436acf2d54aa50da12792..8cc5f3ceef20f1c75b4a38f975e1210cde1ebc9e 100644 (file)
@@ -172,7 +172,7 @@ void NvmeAccess::reset(){
 
        data = 1;
        while(data & 3){
-               readNvmeStorageReg(8, data);
+               data = readNvmeStorageReg(8);
                usleep(1000);
        }
        usleep(100000);
@@ -188,13 +188,13 @@ void NvmeAccess::reset(){
        dl1printf("NvmeAccess::reset\n");
        ts = getTime();
 
-       readNvmeStorageReg(8, data); printf("Status: %8.8x\n", data);
+       printf("Status: %8.8x\n", readNvmeStorageReg(RegStatus));
        writeNvmeStorageReg(4, 0x00000001);
-       readNvmeStorageReg(8, data); printf("Status: %8.8x\n", data);
+       printf("Status: %8.8x\n", readNvmeStorageReg(RegStatus));
        
        data = 1;
        while(data & 1){
-               readNvmeStorageReg(8, data);
+               data = readNvmeStorageReg(RegStatus);
                usleep(1000);
        }
        te = getTime();
@@ -206,7 +206,7 @@ void NvmeAccess::reset(){
        if(UseConfigEngine){
                data = 0;
                while((data & 4) == 0){
-                       readNvmeStorageReg(8, data);
+                       data = readNvmeStorageReg(RegStatus);
                        usleep(1000);
                }
                te = getTime();
@@ -456,14 +456,12 @@ int NvmeAccess::nvmeProcess(){
        return 0;
 }
 
-int NvmeAccess::readNvmeStorageReg(BUInt32 address, BUInt32& data){
-       data = oregs[address/4];
-       return 0;
+BUInt32 NvmeAccess::readNvmeStorageReg(BUInt32 address){
+       return oregs[address/4];
 }
 
-int NvmeAccess::writeNvmeStorageReg(BUInt32 address, BUInt32 data){
+void NvmeAccess::writeNvmeStorageReg(BUInt32 address, BUInt32 data){
        oregs[address/4] = data;
-       return 0;
 }
 
 int NvmeAccess::readNvmeReg32(BUInt32 address, BUInt32& data){
index b5ffc990b7f4285c7612f7a468e5963fa1bad9ae..4fb77c9bd525b8d20739b4c8f132dfbb20bc6ee9 100644 (file)
 #include <sys/ioctl.h>
 #include <bfpga_driver/bfpga.h>
 
-const Bool     UseQueueEngine = 1;             ///< Use the FPGA queue engine implementation
-const Bool     UseConfigEngine = 0;            ///< Use the FPGA configuration engine
-const BUInt    PcieMaxPayloadSize = 32;        ///< The Pcie maximim packet payload in 32bit DWords
+const Bool     UseQueueEngine = 1;                     ///< Use the FPGA queue engine implementation
+const Bool     UseConfigEngine = 0;                    ///< Use the FPGA configuration engine
+const BUInt    PcieMaxPayloadSize = 32;                ///< The Pcie maximim packet payload in 32bit DWords
+
+const BUInt    RegIdent                = 0x000;        ///< The ident and version
+const BUInt    RegControl              = 0x004;        ///< The control register
+const BUInt    RegStatus               = 0x008;        ///< The status register
+
+const BUInt    RegDataChunkStart       = 0x100;        ///< The data chunk size register
+const BUInt    RegDataChunkSize        = 0x104;        ///< The data chunk size register
+const BUInt    RegWriteError           = 0x108;        ///< The write error status
+const BUInt    RegWriteNumBlocks       = 0x10C;        ///< The number of blocks written
+const BUInt    RegWriteTime            = 0x110;        ///< The write time in microseconds
 
 class NvmeRequestPacket {
 public:
@@ -135,8 +145,8 @@ public:
        int             nvmeProcess();
        
        // NvmeStorage units register access
-       int             readNvmeStorageReg(BUInt32 address, BUInt32& data);
-       int             writeNvmeStorageReg(BUInt32 address, BUInt32 data);
+       BUInt32         readNvmeStorageReg(BUInt32 address);
+       void            writeNvmeStorageReg(BUInt32 address, BUInt32 data);
        
        // NVMe register access
        int             readNvmeReg32(BUInt32 address, BUInt32& data);
index 45e359e4749055992aa47e1c4e74e2f86c0b082e..dc528405cb8a3c1b8f4741b784929c30685fac87 100644 (file)
@@ -129,7 +129,7 @@ int Control::configureNvme(){
                printf("Start configuration\n");
                writeNvmeStorageReg(4, 0x00000002);
                usleep(100000);
-               readNvmeStorageReg(8, data); printf("Waited 100ms: Status: %8.8x\n", data);
+               printf("Waited 100ms: Status: %8.8x\n", readNvmeStorageReg(RegStatus));
        }
        else {
 #ifdef ZAP
@@ -318,7 +318,8 @@ int Control::test3(){
 
 int Control::test4(){
        int     e;
-       int     numBlocks = 8;
+       BUInt32 block = 0;
+       BUInt32 numBlocks = 8;
        
        printf("Test4: Read blocks\n");
        
@@ -328,11 +329,20 @@ int Control::test4(){
        printf("Perform block read\n");
        memset(odataBlockMem, 0x01, sizeof(odataBlockMem));
 
-       nvmeRequest(1, 1, 0x02, 0x01800000, 0x0000000, 0x00000000, numBlocks-1);        // Perform read
+       nvmeRequest(1, 1, 0x02, 0x01800000, block, 0x00000000, numBlocks-1);    // Perform read
 
        printf("DataBlock:\n");
        bhd32a(odataBlockMem, numBlocks*512/4);
 
+#ifndef ZAP
+       block = (262144 * 8);
+       printf("Block (512): %u data value: %8.8x\n", block, (block * 512) / 4);
+       nvmeRequest(1, 1, 0x02, 0x01800000, block - 1, 0x00000000, numBlocks-1);        // Perform read
+
+       printf("DataBlocks at: %u\n", block - 1);
+       bhd32a(odataBlockMem, 2*512/4);
+#endif
+
        return 0;
 }
 
@@ -366,7 +376,8 @@ int Control::test6(){
        BUInt32 t;
        double  r;
        double  ts;
-       BUInt   numBlocks = 262144;
+       BUInt   numBlocks = 262144;             // 1 GByte
+       //BUInt numBlocks = 2621440;            // 10 GByte
 
        //numBlocks = 8;
        printf("Test6: Enable FPGA write blocks\n");
@@ -377,18 +388,14 @@ int Control::test6(){
        //dumpRegs();
        
        // Set number of blocks to write
-       writeNvmeStorageReg(256, numBlocks);
-               
+       writeNvmeStorageReg(RegDataChunkSize, numBlocks);
+       
        printf("Stats\n");
-       readNvmeStorageReg(256, v);
-       printf("NvmeWrite: dataChunkSize: %8.8x\n", v);
-       readNvmeStorageReg(256+4, v);
-       printf("NvmeWrite: status:        %8.8x\n", v);
-       readNvmeStorageReg(256+8, v);
-       printf("NvmeWrite: numBlocks:     %u\n", v);
-       readNvmeStorageReg(256+12, v);
-       printf("NvmeWrite: timeUs:        %u\n", v);
-
+       printf("NvmeWrite: dataChunkStart: %8.8x\n", readNvmeStorageReg(RegDataChunkStart));
+       printf("NvmeWrite: dataChunkSize:  %8.8x\n", readNvmeStorageReg(RegDataChunkSize));
+       printf("NvmeWrite: status:         %8.8x\n", readNvmeStorageReg(RegWriteError));
+       printf("NvmeWrite: numBlocks:      %u\n", n = readNvmeStorageReg(RegWriteNumBlocks));
+       printf("NvmeWrite: timeUs:         %u\n", t = readNvmeStorageReg(RegWriteTime));
 
        // Start off NvmeWrite engine
        printf("\nStart NvmeWrite engine\n");
@@ -398,7 +405,7 @@ int Control::test6(){
        ts = getTime();
        n = 0;
        while(n != numBlocks){
-               readNvmeStorageReg(256+8, n);
+               n = readNvmeStorageReg(RegWriteNumBlocks);
                printf("NvmeWrite: numBlocks: %u\n", n);
                usleep(100000);
        }
@@ -428,7 +435,7 @@ int Control::test6(){
        ts = getTime();
        n = 0;
        while(n != numBlocks){
-               readNvmeStorageReg(256+8, n);
+               n = readNvmeStorageReg(RegWriteNumBlocks);
                printf("NvmeWrite: numBlocks: %u\n", n);
                usleep(100000);
        }
@@ -448,18 +455,12 @@ int Control::test6(){
 #endif
 #endif
 
-
-
-
        printf("Stats\n");
-       readNvmeStorageReg(256, v);
-       printf("NvmeWrite: dataChunkSize: %8.8x\n", v);
-       readNvmeStorageReg(256+4, v);
-       printf("NvmeWrite: status:        %8.8x\n", v);
-       readNvmeStorageReg(256+8, n);
-       printf("NvmeWrite: numBlocks:     %u\n", n);
-       readNvmeStorageReg(256+12, t);
-       printf("NvmeWrite: timeUs:        %u\n", t);
+       printf("NvmeWrite: dataChunkStart: %8.8x\n", readNvmeStorageReg(RegDataChunkStart));
+       printf("NvmeWrite: dataChunkSize:  %8.8x\n", readNvmeStorageReg(RegDataChunkSize));
+       printf("NvmeWrite: status:         %8.8x\n", readNvmeStorageReg(RegWriteError));
+       printf("NvmeWrite: numBlocks:      %u\n", n = readNvmeStorageReg(RegWriteNumBlocks));
+       printf("NvmeWrite: timeUs:         %u\n", t = readNvmeStorageReg(RegWriteTime));
        
        r = (4096.0 * n / (1e-6 * t));
        printf("NvmeWrite: rate:      %f MBytes/s\n", r / (1024 * 1024));
@@ -499,6 +500,29 @@ int Control::test7(){
        return 0;
 }
 
+int Control::test8(){
+       int     e;
+       BUInt32 block;
+       BUInt   maxBlocks = 32768;
+       BUInt   numBlocks = 262144;             // 1 GByte
+       //BUInt numBlocks = 2621440;            // 10 GByte
+
+       printf("Test8: Trim Nvme\n");
+       
+       if(e = configureNvme())
+               return e;
+
+       //nvmeRequest(1, 1, 0x08, 0x01800000, 0, 0x00000000, (1 << 25) | 1);    // Perform trim of 2 blocks
+
+       for(block = 0; block < numBlocks; block += (maxBlocks/8)){
+               nvmeRequest(1, 1, 0x08, 0x01800000, block * 8, 0x00000000, (1 << 25) | maxBlocks-1);    // Perform trim of 32k 512 Byte blocks
+       }
+
+
+       return 0;
+}
+
+
 int Control::test_misc(){
        BUInt32 address = 0;
        BUInt32 data[8];
@@ -643,6 +667,9 @@ int main(int argc, char** argv){
                else if(!strcmp(test, "test7")){
                        err = control.test7();
                }
+               else if(!strcmp(test, "test8")){
+                       err = control.test8();
+               }
                else if(!strcmp(test, "test_misc")){
                        err = control.test_misc();
                }