1
0
mirror of https://github.com/corundum/corundum.git synced 2025-01-30 08:32:52 +08:00

merged changes in pcie

This commit is contained in:
Alex Forencich 2021-06-27 14:05:12 -07:00
commit b1c6bdbd88
42 changed files with 808 additions and 1270 deletions

View File

@ -30,4 +30,4 @@ jobs:
pip install tox tox-gh-actions
- name: Test with tox
run: tox -- --splits 20 --group ${{ matrix.group }}
run: tox -- --splits 20 --group ${{ matrix.group }} --splitting-algorithm least_duration

View File

@ -1,682 +1,174 @@
[
[
"example/ADM_PCIE_9V3/fpga_axi_x8/tb/fpga_core/test_fpga_core.py::test_fpga_core",
1.5243839519971516
],
[
"example/AU200/fpga_axi/tb/fpga_core/test_fpga_core.py::test_fpga_core",
1.76243469901965
],
[
"example/AU250/fpga_axi/tb/fpga_core/test_fpga_core.py::test_fpga_core",
1.491015758991125
],
[
"example/AU280/fpga_axi/tb/fpga_core/test_fpga_core.py::test_fpga_core",
1.2249264740094077
],
[
"example/AU50/fpga_axi/tb/fpga_core/test_fpga_core.py::test_fpga_core",
1.3339671320136404
],
[
"example/ExaNIC_X10/fpga_axi/tb/fpga_core/test_fpga_core.py::test_fpga_core",
1.348158612003317
],
[
"example/ExaNIC_X25/fpga_axi/tb/fpga_core/test_fpga_core.py::test_fpga_core",
1.6901940579991788
],
[
"example/VCU108/fpga_axi/tb/fpga_core/test_fpga_core.py::test_fpga_core",
0.9842682190064806
],
[
"example/VCU118/fpga_axi_x8/tb/fpga_core/test_fpga_core.py::test_fpga_core",
1.319925781004713
],
[
"example/VCU1525/fpga_axi/tb/fpga_core/test_fpga_core.py::test_fpga_core",
1.5049328340101056
],
[
"example/ZCU106/fpga_axi/tb/fpga_core/test_fpga_core.py::test_fpga_core",
1.426239712003735
],
[
"example/fb2CG/fpga_axi/tb/fpga_core/test_fpga_core.py::test_fpga_core",
1.3951316330058035
],
[
"tb/dma_client_axis_sink/test_dma_client_axis_sink.py::test_dma_client_axis_sink[128-64]",
46.00127658699057
],
[
"tb/dma_client_axis_sink/test_dma_client_axis_sink.py::test_dma_client_axis_sink[256-128]",
91.17742635698232
],
[
"tb/dma_client_axis_sink/test_dma_client_axis_sink.py::test_dma_client_axis_sink[256-64]",
240.00002216700523
],
[
"tb/dma_client_axis_source/test_dma_client_axis_source.py::test_dma_client_axis_source[128-64]",
6.8301206580217695
],
[
"tb/dma_client_axis_source/test_dma_client_axis_source.py::test_dma_client_axis_source[256-128]",
14.586087189003592
],
[
"tb/dma_client_axis_source/test_dma_client_axis_source.py::test_dma_client_axis_source[256-64]",
37.89672093199624
],
[
"tb/dma_if_pcie_us/test_dma_if_pcie_us.py::test_dma_if_pcie_us[128]",
51.8897303820122
],
[
"tb/dma_if_pcie_us/test_dma_if_pcie_us.py::test_dma_if_pcie_us[256]",
79.55277641199064
],
[
"tb/dma_if_pcie_us/test_dma_if_pcie_us.py::test_dma_if_pcie_us[512]",
151.12265859701438
],
[
"tb/dma_if_pcie_us/test_dma_if_pcie_us.py::test_dma_if_pcie_us[64]",
52.77571821199672
],
[
"tb/dma_if_pcie_us_rd/test_dma_if_pcie_us_rd.py::test_dma_if_pcie_us_rd[128-0]",
70.20033050600614
],
[
"tb/dma_if_pcie_us_rd/test_dma_if_pcie_us_rd.py::test_dma_if_pcie_us_rd[128-1]",
70.88952365200385
],
[
"tb/dma_if_pcie_us_rd/test_dma_if_pcie_us_rd.py::test_dma_if_pcie_us_rd[128-2]",
73.97316572698765
],
[
"tb/dma_if_pcie_us_rd/test_dma_if_pcie_us_rd.py::test_dma_if_pcie_us_rd[128-3]",
72.49351142400701
],
[
"tb/dma_if_pcie_us_rd/test_dma_if_pcie_us_rd.py::test_dma_if_pcie_us_rd[128-4092]",
80.85378258199489
],
[
"tb/dma_if_pcie_us_rd/test_dma_if_pcie_us_rd.py::test_dma_if_pcie_us_rd[128-4093]",
79.4126091490034
],
[
"tb/dma_if_pcie_us_rd/test_dma_if_pcie_us_rd.py::test_dma_if_pcie_us_rd[128-4094]",
77.68459540099138
],
[
"tb/dma_if_pcie_us_rd/test_dma_if_pcie_us_rd.py::test_dma_if_pcie_us_rd[128-4095]",
80.6591257389955
],
[
"tb/dma_if_pcie_us_rd/test_dma_if_pcie_us_rd.py::test_dma_if_pcie_us_rd[256-0]",
179.3101165789849
],
[
"tb/dma_if_pcie_us_rd/test_dma_if_pcie_us_rd.py::test_dma_if_pcie_us_rd[256-1]",
179.50885255800677
],
[
"tb/dma_if_pcie_us_rd/test_dma_if_pcie_us_rd.py::test_dma_if_pcie_us_rd[256-2]",
179.76960617100121
],
[
"tb/dma_if_pcie_us_rd/test_dma_if_pcie_us_rd.py::test_dma_if_pcie_us_rd[256-3]",
180.53777307199198
],
[
"tb/dma_if_pcie_us_rd/test_dma_if_pcie_us_rd.py::test_dma_if_pcie_us_rd[256-4092]",
205.62238665898622
],
[
"tb/dma_if_pcie_us_rd/test_dma_if_pcie_us_rd.py::test_dma_if_pcie_us_rd[256-4093]",
208.64886539400322
],
[
"tb/dma_if_pcie_us_rd/test_dma_if_pcie_us_rd.py::test_dma_if_pcie_us_rd[256-4094]",
207.1636929380038
],
[
"tb/dma_if_pcie_us_rd/test_dma_if_pcie_us_rd.py::test_dma_if_pcie_us_rd[256-4095]",
209.14786618099606
],
[
"tb/dma_if_pcie_us_rd/test_dma_if_pcie_us_rd.py::test_dma_if_pcie_us_rd[512-0]",
566.807376561992
],
[
"tb/dma_if_pcie_us_rd/test_dma_if_pcie_us_rd.py::test_dma_if_pcie_us_rd[512-1]",
568.3152530329971
],
[
"tb/dma_if_pcie_us_rd/test_dma_if_pcie_us_rd.py::test_dma_if_pcie_us_rd[512-2]",
565.0518271290057
],
[
"tb/dma_if_pcie_us_rd/test_dma_if_pcie_us_rd.py::test_dma_if_pcie_us_rd[512-3]",
571.4604725630052
],
[
"tb/dma_if_pcie_us_rd/test_dma_if_pcie_us_rd.py::test_dma_if_pcie_us_rd[512-4092]",
676.9174377910094
],
[
"tb/dma_if_pcie_us_rd/test_dma_if_pcie_us_rd.py::test_dma_if_pcie_us_rd[512-4093]",
677.2857694230042
],
[
"tb/dma_if_pcie_us_rd/test_dma_if_pcie_us_rd.py::test_dma_if_pcie_us_rd[512-4094]",
678.4928380899946
],
[
"tb/dma_if_pcie_us_rd/test_dma_if_pcie_us_rd.py::test_dma_if_pcie_us_rd[512-4095]",
683.7732334390021
],
[
"tb/dma_if_pcie_us_rd/test_dma_if_pcie_us_rd.py::test_dma_if_pcie_us_rd[64-0]",
37.89712307899026
],
[
"tb/dma_if_pcie_us_rd/test_dma_if_pcie_us_rd.py::test_dma_if_pcie_us_rd[64-1]",
40.1728045540076
],
[
"tb/dma_if_pcie_us_rd/test_dma_if_pcie_us_rd.py::test_dma_if_pcie_us_rd[64-2]",
40.05445944600797
],
[
"tb/dma_if_pcie_us_rd/test_dma_if_pcie_us_rd.py::test_dma_if_pcie_us_rd[64-3]",
42.262771781985066
],
[
"tb/dma_if_pcie_us_rd/test_dma_if_pcie_us_rd.py::test_dma_if_pcie_us_rd[64-4092]",
41.992411358995014
],
[
"tb/dma_if_pcie_us_rd/test_dma_if_pcie_us_rd.py::test_dma_if_pcie_us_rd[64-4093]",
43.741003970004385
],
[
"tb/dma_if_pcie_us_rd/test_dma_if_pcie_us_rd.py::test_dma_if_pcie_us_rd[64-4094]",
46.70333723399381
],
[
"tb/dma_if_pcie_us_rd/test_dma_if_pcie_us_rd.py::test_dma_if_pcie_us_rd[64-4095]",
42.02594685999793
],
[
"tb/dma_if_pcie_us_wr/test_dma_if_pcie_us_wr.py::test_dma_if_pcie_us_wr[128-0]",
74.31375048597693
],
[
"tb/dma_if_pcie_us_wr/test_dma_if_pcie_us_wr.py::test_dma_if_pcie_us_wr[128-1]",
76.58823132199177
],
[
"tb/dma_if_pcie_us_wr/test_dma_if_pcie_us_wr.py::test_dma_if_pcie_us_wr[128-2]",
75.8671508970001
],
[
"tb/dma_if_pcie_us_wr/test_dma_if_pcie_us_wr.py::test_dma_if_pcie_us_wr[128-3]",
75.28741317000822
],
[
"tb/dma_if_pcie_us_wr/test_dma_if_pcie_us_wr.py::test_dma_if_pcie_us_wr[128-4092]",
82.13368982699467
],
[
"tb/dma_if_pcie_us_wr/test_dma_if_pcie_us_wr.py::test_dma_if_pcie_us_wr[128-4093]",
80.6843790619896
],
[
"tb/dma_if_pcie_us_wr/test_dma_if_pcie_us_wr.py::test_dma_if_pcie_us_wr[128-4094]",
89.86239191598725
],
[
"tb/dma_if_pcie_us_wr/test_dma_if_pcie_us_wr.py::test_dma_if_pcie_us_wr[128-4095]",
87.19748993801477
],
[
"tb/dma_if_pcie_us_wr/test_dma_if_pcie_us_wr.py::test_dma_if_pcie_us_wr[256-0]",
220.26441846700618
],
[
"tb/dma_if_pcie_us_wr/test_dma_if_pcie_us_wr.py::test_dma_if_pcie_us_wr[256-1]",
223.08477976598078
],
[
"tb/dma_if_pcie_us_wr/test_dma_if_pcie_us_wr.py::test_dma_if_pcie_us_wr[256-2]",
220.18208578600024
],
[
"tb/dma_if_pcie_us_wr/test_dma_if_pcie_us_wr.py::test_dma_if_pcie_us_wr[256-3]",
221.91155414101377
],
[
"tb/dma_if_pcie_us_wr/test_dma_if_pcie_us_wr.py::test_dma_if_pcie_us_wr[256-4092]",
235.26365364597586
],
[
"tb/dma_if_pcie_us_wr/test_dma_if_pcie_us_wr.py::test_dma_if_pcie_us_wr[256-4093]",
236.04932850300975
],
[
"tb/dma_if_pcie_us_wr/test_dma_if_pcie_us_wr.py::test_dma_if_pcie_us_wr[256-4094]",
231.05752129599568
],
[
"tb/dma_if_pcie_us_wr/test_dma_if_pcie_us_wr.py::test_dma_if_pcie_us_wr[256-4095]",
207.82479595699988
],
[
"tb/dma_if_pcie_us_wr/test_dma_if_pcie_us_wr.py::test_dma_if_pcie_us_wr[512-0]",
703.8581826370064
],
[
"tb/dma_if_pcie_us_wr/test_dma_if_pcie_us_wr.py::test_dma_if_pcie_us_wr[512-1]",
725.122007020007
],
[
"tb/dma_if_pcie_us_wr/test_dma_if_pcie_us_wr.py::test_dma_if_pcie_us_wr[512-2]",
724.1507858880213
],
[
"tb/dma_if_pcie_us_wr/test_dma_if_pcie_us_wr.py::test_dma_if_pcie_us_wr[512-3]",
732.9766290180123
],
[
"tb/dma_if_pcie_us_wr/test_dma_if_pcie_us_wr.py::test_dma_if_pcie_us_wr[512-4092]",
783.6539009899861
],
[
"tb/dma_if_pcie_us_wr/test_dma_if_pcie_us_wr.py::test_dma_if_pcie_us_wr[512-4093]",
791.0898800719879
],
[
"tb/dma_if_pcie_us_wr/test_dma_if_pcie_us_wr.py::test_dma_if_pcie_us_wr[512-4094]",
782.8256193780107
],
[
"tb/dma_if_pcie_us_wr/test_dma_if_pcie_us_wr.py::test_dma_if_pcie_us_wr[512-4095]",
766.0123344449967
],
[
"tb/dma_if_pcie_us_wr/test_dma_if_pcie_us_wr.py::test_dma_if_pcie_us_wr[64-0]",
37.26451947800524
],
[
"tb/dma_if_pcie_us_wr/test_dma_if_pcie_us_wr.py::test_dma_if_pcie_us_wr[64-1]",
38.15180132701062
],
[
"tb/dma_if_pcie_us_wr/test_dma_if_pcie_us_wr.py::test_dma_if_pcie_us_wr[64-2]",
37.28398841699527
],
[
"tb/dma_if_pcie_us_wr/test_dma_if_pcie_us_wr.py::test_dma_if_pcie_us_wr[64-3]",
39.39411821498652
],
[
"tb/dma_if_pcie_us_wr/test_dma_if_pcie_us_wr.py::test_dma_if_pcie_us_wr[64-4092]",
40.399335494003026
],
[
"tb/dma_if_pcie_us_wr/test_dma_if_pcie_us_wr.py::test_dma_if_pcie_us_wr[64-4093]",
39.40526265598601
],
[
"tb/dma_if_pcie_us_wr/test_dma_if_pcie_us_wr.py::test_dma_if_pcie_us_wr[64-4094]",
40.6300786560023
],
[
"tb/dma_if_pcie_us_wr/test_dma_if_pcie_us_wr.py::test_dma_if_pcie_us_wr[64-4095]",
39.796122963991365
],
[
"tb/pcie_us_axi_dma/test_pcie_us_axi_dma.py::test_pcie_us_axi_dma[128]",
35.20746183900337
],
[
"tb/pcie_us_axi_dma/test_pcie_us_axi_dma.py::test_pcie_us_axi_dma[256]",
42.24829524497909
],
[
"tb/pcie_us_axi_dma/test_pcie_us_axi_dma.py::test_pcie_us_axi_dma[512]",
64.2845271800179
],
[
"tb/pcie_us_axi_dma/test_pcie_us_axi_dma.py::test_pcie_us_axi_dma[64]",
42.09976391300734
],
[
"tb/pcie_us_axi_dma_rd/test_pcie_us_axi_dma_rd.py::test_pcie_us_axi_dma_rd[128-0]",
42.6654968750081
],
[
"tb/pcie_us_axi_dma_rd/test_pcie_us_axi_dma_rd.py::test_pcie_us_axi_dma_rd[128-1]",
42.712365339000826
],
[
"tb/pcie_us_axi_dma_rd/test_pcie_us_axi_dma_rd.py::test_pcie_us_axi_dma_rd[128-2]",
44.27622402898851
],
[
"tb/pcie_us_axi_dma_rd/test_pcie_us_axi_dma_rd.py::test_pcie_us_axi_dma_rd[128-3]",
44.89049796600011
],
[
"tb/pcie_us_axi_dma_rd/test_pcie_us_axi_dma_rd.py::test_pcie_us_axi_dma_rd[128-4092]",
43.43690900799993
],
[
"tb/pcie_us_axi_dma_rd/test_pcie_us_axi_dma_rd.py::test_pcie_us_axi_dma_rd[128-4093]",
43.96925371600082
],
[
"tb/pcie_us_axi_dma_rd/test_pcie_us_axi_dma_rd.py::test_pcie_us_axi_dma_rd[128-4094]",
45.121186317002866
],
[
"tb/pcie_us_axi_dma_rd/test_pcie_us_axi_dma_rd.py::test_pcie_us_axi_dma_rd[128-4095]",
45.474361579006654
],
[
"tb/pcie_us_axi_dma_rd/test_pcie_us_axi_dma_rd.py::test_pcie_us_axi_dma_rd[256-0]",
74.69470833298692
],
[
"tb/pcie_us_axi_dma_rd/test_pcie_us_axi_dma_rd.py::test_pcie_us_axi_dma_rd[256-1]",
75.44365961500444
],
[
"tb/pcie_us_axi_dma_rd/test_pcie_us_axi_dma_rd.py::test_pcie_us_axi_dma_rd[256-2]",
76.63132760100416
],
[
"tb/pcie_us_axi_dma_rd/test_pcie_us_axi_dma_rd.py::test_pcie_us_axi_dma_rd[256-3]",
76.79204788702191
],
[
"tb/pcie_us_axi_dma_rd/test_pcie_us_axi_dma_rd.py::test_pcie_us_axi_dma_rd[256-4092]",
79.52837832600926
],
[
"tb/pcie_us_axi_dma_rd/test_pcie_us_axi_dma_rd.py::test_pcie_us_axi_dma_rd[256-4093]",
81.07649565601605
],
[
"tb/pcie_us_axi_dma_rd/test_pcie_us_axi_dma_rd.py::test_pcie_us_axi_dma_rd[256-4094]",
80.88932520600792
],
[
"tb/pcie_us_axi_dma_rd/test_pcie_us_axi_dma_rd.py::test_pcie_us_axi_dma_rd[256-4095]",
82.72156022700074
],
[
"tb/pcie_us_axi_dma_rd/test_pcie_us_axi_dma_rd.py::test_pcie_us_axi_dma_rd[512-0]",
184.42105297898524
],
[
"tb/pcie_us_axi_dma_rd/test_pcie_us_axi_dma_rd.py::test_pcie_us_axi_dma_rd[512-1]",
186.41088317400136
],
[
"tb/pcie_us_axi_dma_rd/test_pcie_us_axi_dma_rd.py::test_pcie_us_axi_dma_rd[512-2]",
188.43435705199954
],
[
"tb/pcie_us_axi_dma_rd/test_pcie_us_axi_dma_rd.py::test_pcie_us_axi_dma_rd[512-3]",
186.96197864100395
],
[
"tb/pcie_us_axi_dma_rd/test_pcie_us_axi_dma_rd.py::test_pcie_us_axi_dma_rd[512-4092]",
295.56174509700213
],
[
"tb/pcie_us_axi_dma_rd/test_pcie_us_axi_dma_rd.py::test_pcie_us_axi_dma_rd[512-4093]",
289.49614788399776
],
[
"tb/pcie_us_axi_dma_rd/test_pcie_us_axi_dma_rd.py::test_pcie_us_axi_dma_rd[512-4094]",
294.6629825320124
],
[
"tb/pcie_us_axi_dma_rd/test_pcie_us_axi_dma_rd.py::test_pcie_us_axi_dma_rd[512-4095]",
293.90224149101414
],
[
"tb/pcie_us_axi_dma_rd/test_pcie_us_axi_dma_rd.py::test_pcie_us_axi_dma_rd[64-0]",
32.97340860799886
],
[
"tb/pcie_us_axi_dma_rd/test_pcie_us_axi_dma_rd.py::test_pcie_us_axi_dma_rd[64-1]",
33.13526239999919
],
[
"tb/pcie_us_axi_dma_rd/test_pcie_us_axi_dma_rd.py::test_pcie_us_axi_dma_rd[64-2]",
34.55832085201109
],
[
"tb/pcie_us_axi_dma_rd/test_pcie_us_axi_dma_rd.py::test_pcie_us_axi_dma_rd[64-3]",
33.76586171402596
],
[
"tb/pcie_us_axi_dma_rd/test_pcie_us_axi_dma_rd.py::test_pcie_us_axi_dma_rd[64-4092]",
33.21379478198651
],
[
"tb/pcie_us_axi_dma_rd/test_pcie_us_axi_dma_rd.py::test_pcie_us_axi_dma_rd[64-4093]",
36.78822062299878
],
[
"tb/pcie_us_axi_dma_rd/test_pcie_us_axi_dma_rd.py::test_pcie_us_axi_dma_rd[64-4094]",
34.76452102398616
],
[
"tb/pcie_us_axi_dma_rd/test_pcie_us_axi_dma_rd.py::test_pcie_us_axi_dma_rd[64-4095]",
35.60881289798999
],
[
"tb/pcie_us_axi_dma_wr/test_pcie_us_axi_dma_wr.py::test_pcie_us_axi_dma_wr[128-0]",
49.02375306200702
],
[
"tb/pcie_us_axi_dma_wr/test_pcie_us_axi_dma_wr.py::test_pcie_us_axi_dma_wr[128-1]",
52.07463554599963
],
[
"tb/pcie_us_axi_dma_wr/test_pcie_us_axi_dma_wr.py::test_pcie_us_axi_dma_wr[128-2]",
48.00012027499906
],
[
"tb/pcie_us_axi_dma_wr/test_pcie_us_axi_dma_wr.py::test_pcie_us_axi_dma_wr[128-3]",
48.872352507009055
],
[
"tb/pcie_us_axi_dma_wr/test_pcie_us_axi_dma_wr.py::test_pcie_us_axi_dma_wr[128-4092]",
46.6785065659933
],
[
"tb/pcie_us_axi_dma_wr/test_pcie_us_axi_dma_wr.py::test_pcie_us_axi_dma_wr[128-4093]",
46.24458213799517
],
[
"tb/pcie_us_axi_dma_wr/test_pcie_us_axi_dma_wr.py::test_pcie_us_axi_dma_wr[128-4094]",
47.468288922013016
],
[
"tb/pcie_us_axi_dma_wr/test_pcie_us_axi_dma_wr.py::test_pcie_us_axi_dma_wr[128-4095]",
46.880724348986405
],
[
"tb/pcie_us_axi_dma_wr/test_pcie_us_axi_dma_wr.py::test_pcie_us_axi_dma_wr[256-0]",
105.17909938198864
],
[
"tb/pcie_us_axi_dma_wr/test_pcie_us_axi_dma_wr.py::test_pcie_us_axi_dma_wr[256-1]",
104.68517903800239
],
[
"tb/pcie_us_axi_dma_wr/test_pcie_us_axi_dma_wr.py::test_pcie_us_axi_dma_wr[256-2]",
96.0192847050057
],
[
"tb/pcie_us_axi_dma_wr/test_pcie_us_axi_dma_wr.py::test_pcie_us_axi_dma_wr[256-3]",
97.57236824500433
],
[
"tb/pcie_us_axi_dma_wr/test_pcie_us_axi_dma_wr.py::test_pcie_us_axi_dma_wr[256-4092]",
111.94961608400627
],
[
"tb/pcie_us_axi_dma_wr/test_pcie_us_axi_dma_wr.py::test_pcie_us_axi_dma_wr[256-4093]",
109.28617230801319
],
[
"tb/pcie_us_axi_dma_wr/test_pcie_us_axi_dma_wr.py::test_pcie_us_axi_dma_wr[256-4094]",
124.53616855300788
],
[
"tb/pcie_us_axi_dma_wr/test_pcie_us_axi_dma_wr.py::test_pcie_us_axi_dma_wr[256-4095]",
105.14508583399584
],
[
"tb/pcie_us_axi_dma_wr/test_pcie_us_axi_dma_wr.py::test_pcie_us_axi_dma_wr[512-0]",
327.5213188540074
],
[
"tb/pcie_us_axi_dma_wr/test_pcie_us_axi_dma_wr.py::test_pcie_us_axi_dma_wr[512-1]",
347.24972783798876
],
[
"tb/pcie_us_axi_dma_wr/test_pcie_us_axi_dma_wr.py::test_pcie_us_axi_dma_wr[512-2]",
316.4220320579916
],
[
"tb/pcie_us_axi_dma_wr/test_pcie_us_axi_dma_wr.py::test_pcie_us_axi_dma_wr[512-3]",
351.1416489659896
],
[
"tb/pcie_us_axi_dma_wr/test_pcie_us_axi_dma_wr.py::test_pcie_us_axi_dma_wr[512-4092]",
379.9717799640057
],
[
"tb/pcie_us_axi_dma_wr/test_pcie_us_axi_dma_wr.py::test_pcie_us_axi_dma_wr[512-4093]",
381.54761943101767
],
[
"tb/pcie_us_axi_dma_wr/test_pcie_us_axi_dma_wr.py::test_pcie_us_axi_dma_wr[512-4094]",
395.5494539709907
],
[
"tb/pcie_us_axi_dma_wr/test_pcie_us_axi_dma_wr.py::test_pcie_us_axi_dma_wr[512-4095]",
385.0406939389941
],
[
"tb/pcie_us_axi_dma_wr/test_pcie_us_axi_dma_wr.py::test_pcie_us_axi_dma_wr[64-0]",
29.11078103700129
],
[
"tb/pcie_us_axi_dma_wr/test_pcie_us_axi_dma_wr.py::test_pcie_us_axi_dma_wr[64-1]",
28.179901688010432
],
[
"tb/pcie_us_axi_dma_wr/test_pcie_us_axi_dma_wr.py::test_pcie_us_axi_dma_wr[64-2]",
28.199341875020764
],
[
"tb/pcie_us_axi_dma_wr/test_pcie_us_axi_dma_wr.py::test_pcie_us_axi_dma_wr[64-3]",
28.12518125800125
],
[
"tb/pcie_us_axi_dma_wr/test_pcie_us_axi_dma_wr.py::test_pcie_us_axi_dma_wr[64-4092]",
29.074080630001845
],
[
"tb/pcie_us_axi_dma_wr/test_pcie_us_axi_dma_wr.py::test_pcie_us_axi_dma_wr[64-4093]",
30.531442519000848
],
[
"tb/pcie_us_axi_dma_wr/test_pcie_us_axi_dma_wr.py::test_pcie_us_axi_dma_wr[64-4094]",
30.27914025199425
],
[
"tb/pcie_us_axi_dma_wr/test_pcie_us_axi_dma_wr.py::test_pcie_us_axi_dma_wr[64-4095]",
36.409200820999104
],
[
"tb/pcie_us_axi_master/test_pcie_us_axi_master.py::test_pcie_us_axi_master[128]",
67.4381005760224
],
[
"tb/pcie_us_axi_master/test_pcie_us_axi_master.py::test_pcie_us_axi_master[256]",
219.00885751200258
],
[
"tb/pcie_us_axi_master/test_pcie_us_axi_master.py::test_pcie_us_axi_master[512]",
979.7326026459923
],
[
"tb/pcie_us_axi_master/test_pcie_us_axi_master.py::test_pcie_us_axi_master[64]",
27.76338974799728
],
[
"tb/pcie_us_axi_master_rd/test_pcie_us_axi_master_rd.py::test_pcie_us_axi_master_rd[128]",
40.18182637001155
],
[
"tb/pcie_us_axi_master_rd/test_pcie_us_axi_master_rd.py::test_pcie_us_axi_master_rd[256]",
76.45821011098451
],
[
"tb/pcie_us_axi_master_rd/test_pcie_us_axi_master_rd.py::test_pcie_us_axi_master_rd[512]",
280.39424890499504
],
[
"tb/pcie_us_axi_master_rd/test_pcie_us_axi_master_rd.py::test_pcie_us_axi_master_rd[64]",
13.794991126997047
],
[
"tb/pcie_us_axi_master_wr/test_pcie_us_axi_master_wr.py::test_pcie_us_axi_master_wr[128]",
61.972546608012635
],
[
"tb/pcie_us_axi_master_wr/test_pcie_us_axi_master_wr.py::test_pcie_us_axi_master_wr[256]",
236.74490054500347
],
[
"tb/pcie_us_axi_master_wr/test_pcie_us_axi_master_wr.py::test_pcie_us_axi_master_wr[512]",
1105.4977554630168
],
[
"tb/pcie_us_axi_master_wr/test_pcie_us_axi_master_wr.py::test_pcie_us_axi_master_wr[64]",
21.058773653989192
],
[
"tb/pcie_us_axil_master/test_pcie_us_axil_master.py::test_pcie_us_axil_master[128]",
6.172841271996731
],
[
"tb/pcie_us_axil_master/test_pcie_us_axil_master.py::test_pcie_us_axil_master[256]",
5.257157188010751
],
[
"tb/pcie_us_axil_master/test_pcie_us_axil_master.py::test_pcie_us_axil_master[512]",
4.43750966200605
],
[
"tb/pcie_us_axil_master/test_pcie_us_axil_master.py::test_pcie_us_axil_master[64]",
8.963140820997069
]
]
{
"example/ADM_PCIE_9V3/fpga_axi_x8/tb/fpga_core/test_fpga_core.py::test_fpga_core": 3.413415734656155,
"example/AU200/fpga_axi/tb/fpga_core/test_fpga_core.py::test_fpga_core": 2.985459345392883,
"example/AU250/fpga_axi/tb/fpga_core/test_fpga_core.py::test_fpga_core": 2.9971211729571223,
"example/AU280/fpga_axi/tb/fpga_core/test_fpga_core.py::test_fpga_core": 3.0236292453482747,
"example/AU50/fpga_axi/tb/fpga_core/test_fpga_core.py::test_fpga_core": 2.9535228349268436,
"example/ExaNIC_X10/fpga_axi/tb/fpga_core/test_fpga_core.py::test_fpga_core": 2.785971710458398,
"example/ExaNIC_X25/fpga_axi/tb/fpga_core/test_fpga_core.py::test_fpga_core": 3.0672028344124556,
"example/VCU108/fpga_axi/tb/fpga_core/test_fpga_core.py::test_fpga_core": 2.817559827119112,
"example/VCU118/fpga_axi_x8/tb/fpga_core/test_fpga_core.py::test_fpga_core": 2.9356560157611966,
"example/VCU1525/fpga_axi/tb/fpga_core/test_fpga_core.py::test_fpga_core": 2.9461685148999095,
"example/ZCU106/fpga_axi/tb/fpga_core/test_fpga_core.py::test_fpga_core": 2.8575401483103633,
"example/fb2CG/fpga_axi/tb/fpga_core/test_fpga_core.py::test_fpga_core": 3.2842603344470263,
"tb/dma_client_axis_sink/test_dma_client_axis_sink.py::test_dma_client_axis_sink[128-128]": 18.641635494306684,
"tb/dma_client_axis_sink/test_dma_client_axis_sink.py::test_dma_client_axis_sink[128-64]": 52.08057352155447,
"tb/dma_client_axis_sink/test_dma_client_axis_sink.py::test_dma_client_axis_sink[256-128]": 103.98635502438992,
"tb/dma_client_axis_sink/test_dma_client_axis_sink.py::test_dma_client_axis_sink[256-64]": 299.4800178203732,
"tb/dma_client_axis_source/test_dma_client_axis_source.py::test_dma_client_axis_source[128-128]": 5.3081003883853555,
"tb/dma_client_axis_source/test_dma_client_axis_source.py::test_dma_client_axis_source[128-64]": 9.022831154987216,
"tb/dma_client_axis_source/test_dma_client_axis_source.py::test_dma_client_axis_source[256-128]": 18.48758550733328,
"tb/dma_client_axis_source/test_dma_client_axis_source.py::test_dma_client_axis_source[256-64]": 49.54743973072618,
"tb/dma_if_pcie_us/test_dma_if_pcie_us.py::test_dma_if_pcie_us[128]": 78.29869063850492,
"tb/dma_if_pcie_us/test_dma_if_pcie_us.py::test_dma_if_pcie_us[256]": 113.70352750085294,
"tb/dma_if_pcie_us/test_dma_if_pcie_us.py::test_dma_if_pcie_us[512]": 221.6963164275512,
"tb/dma_if_pcie_us/test_dma_if_pcie_us.py::test_dma_if_pcie_us[64]": 73.46474156528711,
"tb/dma_if_pcie_us_rd/test_dma_if_pcie_us_rd.py::test_dma_if_pcie_us_rd[128-0]": 99.04344121739268,
"tb/dma_if_pcie_us_rd/test_dma_if_pcie_us_rd.py::test_dma_if_pcie_us_rd[128-1]": 90.72802155278623,
"tb/dma_if_pcie_us_rd/test_dma_if_pcie_us_rd.py::test_dma_if_pcie_us_rd[128-2]": 104.28095729462802,
"tb/dma_if_pcie_us_rd/test_dma_if_pcie_us_rd.py::test_dma_if_pcie_us_rd[128-3]": 102.56915308441967,
"tb/dma_if_pcie_us_rd/test_dma_if_pcie_us_rd.py::test_dma_if_pcie_us_rd[128-4092]": 114.06266828998923,
"tb/dma_if_pcie_us_rd/test_dma_if_pcie_us_rd.py::test_dma_if_pcie_us_rd[128-4093]": 113.56651845667511,
"tb/dma_if_pcie_us_rd/test_dma_if_pcie_us_rd.py::test_dma_if_pcie_us_rd[128-4094]": 118.0145826889202,
"tb/dma_if_pcie_us_rd/test_dma_if_pcie_us_rd.py::test_dma_if_pcie_us_rd[128-4095]": 118.12622106727213,
"tb/dma_if_pcie_us_rd/test_dma_if_pcie_us_rd.py::test_dma_if_pcie_us_rd[256-0]": 265.41342215333134,
"tb/dma_if_pcie_us_rd/test_dma_if_pcie_us_rd.py::test_dma_if_pcie_us_rd[256-1]": 268.28481538500637,
"tb/dma_if_pcie_us_rd/test_dma_if_pcie_us_rd.py::test_dma_if_pcie_us_rd[256-2]": 279.6277827275917,
"tb/dma_if_pcie_us_rd/test_dma_if_pcie_us_rd.py::test_dma_if_pcie_us_rd[256-3]": 269.7850287714973,
"tb/dma_if_pcie_us_rd/test_dma_if_pcie_us_rd.py::test_dma_if_pcie_us_rd[256-4092]": 330.4373282091692,
"tb/dma_if_pcie_us_rd/test_dma_if_pcie_us_rd.py::test_dma_if_pcie_us_rd[256-4093]": 292.69032427761704,
"tb/dma_if_pcie_us_rd/test_dma_if_pcie_us_rd.py::test_dma_if_pcie_us_rd[256-4094]": 326.7953823134303,
"tb/dma_if_pcie_us_rd/test_dma_if_pcie_us_rd.py::test_dma_if_pcie_us_rd[256-4095]": 237.74624453298748,
"tb/dma_if_pcie_us_rd/test_dma_if_pcie_us_rd.py::test_dma_if_pcie_us_rd[512-0]": 903.2891223859042,
"tb/dma_if_pcie_us_rd/test_dma_if_pcie_us_rd.py::test_dma_if_pcie_us_rd[512-1]": 811.1551029551774,
"tb/dma_if_pcie_us_rd/test_dma_if_pcie_us_rd.py::test_dma_if_pcie_us_rd[512-2]": 853.0444578034803,
"tb/dma_if_pcie_us_rd/test_dma_if_pcie_us_rd.py::test_dma_if_pcie_us_rd[512-3]": 914.6808017725125,
"tb/dma_if_pcie_us_rd/test_dma_if_pcie_us_rd.py::test_dma_if_pcie_us_rd[512-4092]": 1126.4104114621878,
"tb/dma_if_pcie_us_rd/test_dma_if_pcie_us_rd.py::test_dma_if_pcie_us_rd[512-4093]": 1144.048007728532,
"tb/dma_if_pcie_us_rd/test_dma_if_pcie_us_rd.py::test_dma_if_pcie_us_rd[512-4094]": 993.7866063760594,
"tb/dma_if_pcie_us_rd/test_dma_if_pcie_us_rd.py::test_dma_if_pcie_us_rd[512-4095]": 1156.5756951542571,
"tb/dma_if_pcie_us_rd/test_dma_if_pcie_us_rd.py::test_dma_if_pcie_us_rd[64-0]": 54.88502087537199,
"tb/dma_if_pcie_us_rd/test_dma_if_pcie_us_rd.py::test_dma_if_pcie_us_rd[64-1]": 48.05268631875515,
"tb/dma_if_pcie_us_rd/test_dma_if_pcie_us_rd.py::test_dma_if_pcie_us_rd[64-2]": 56.03906381316483,
"tb/dma_if_pcie_us_rd/test_dma_if_pcie_us_rd.py::test_dma_if_pcie_us_rd[64-3]": 49.79587393626571,
"tb/dma_if_pcie_us_rd/test_dma_if_pcie_us_rd.py::test_dma_if_pcie_us_rd[64-4092]": 63.170151750557125,
"tb/dma_if_pcie_us_rd/test_dma_if_pcie_us_rd.py::test_dma_if_pcie_us_rd[64-4093]": 60.81006769090891,
"tb/dma_if_pcie_us_rd/test_dma_if_pcie_us_rd.py::test_dma_if_pcie_us_rd[64-4094]": 63.2109669521451,
"tb/dma_if_pcie_us_rd/test_dma_if_pcie_us_rd.py::test_dma_if_pcie_us_rd[64-4095]": 61.49285046942532,
"tb/dma_if_pcie_us_wr/test_dma_if_pcie_us_wr.py::test_dma_if_pcie_us_wr[128-0]": 121.15479187201709,
"tb/dma_if_pcie_us_wr/test_dma_if_pcie_us_wr.py::test_dma_if_pcie_us_wr[128-1]": 97.8387653036043,
"tb/dma_if_pcie_us_wr/test_dma_if_pcie_us_wr.py::test_dma_if_pcie_us_wr[128-2]": 119.2989654801786,
"tb/dma_if_pcie_us_wr/test_dma_if_pcie_us_wr.py::test_dma_if_pcie_us_wr[128-3]": 124.54792612232268,
"tb/dma_if_pcie_us_wr/test_dma_if_pcie_us_wr.py::test_dma_if_pcie_us_wr[128-4092]": 143.5409589484334,
"tb/dma_if_pcie_us_wr/test_dma_if_pcie_us_wr.py::test_dma_if_pcie_us_wr[128-4093]": 124.7235464034602,
"tb/dma_if_pcie_us_wr/test_dma_if_pcie_us_wr.py::test_dma_if_pcie_us_wr[128-4094]": 143.32499154750258,
"tb/dma_if_pcie_us_wr/test_dma_if_pcie_us_wr.py::test_dma_if_pcie_us_wr[128-4095]": 141.12443763948977,
"tb/dma_if_pcie_us_wr/test_dma_if_pcie_us_wr.py::test_dma_if_pcie_us_wr[256-0]": 288.0947968708351,
"tb/dma_if_pcie_us_wr/test_dma_if_pcie_us_wr.py::test_dma_if_pcie_us_wr[256-1]": 369.4439682709053,
"tb/dma_if_pcie_us_wr/test_dma_if_pcie_us_wr.py::test_dma_if_pcie_us_wr[256-2]": 378.5444172276184,
"tb/dma_if_pcie_us_wr/test_dma_if_pcie_us_wr.py::test_dma_if_pcie_us_wr[256-3]": 378.0909353028983,
"tb/dma_if_pcie_us_wr/test_dma_if_pcie_us_wr.py::test_dma_if_pcie_us_wr[256-4092]": 397.7554972525686,
"tb/dma_if_pcie_us_wr/test_dma_if_pcie_us_wr.py::test_dma_if_pcie_us_wr[256-4093]": 414.9103280613199,
"tb/dma_if_pcie_us_wr/test_dma_if_pcie_us_wr.py::test_dma_if_pcie_us_wr[256-4094]": 412.29748968128115,
"tb/dma_if_pcie_us_wr/test_dma_if_pcie_us_wr.py::test_dma_if_pcie_us_wr[256-4095]": 420.26375349611044,
"tb/dma_if_pcie_us_wr/test_dma_if_pcie_us_wr.py::test_dma_if_pcie_us_wr[512-0]": 1227.0647562332451,
"tb/dma_if_pcie_us_wr/test_dma_if_pcie_us_wr.py::test_dma_if_pcie_us_wr[512-1]": 1345.0689298063517,
"tb/dma_if_pcie_us_wr/test_dma_if_pcie_us_wr.py::test_dma_if_pcie_us_wr[512-2]": 1336.1603576047346,
"tb/dma_if_pcie_us_wr/test_dma_if_pcie_us_wr.py::test_dma_if_pcie_us_wr[512-3]": 1343.8287524748594,
"tb/dma_if_pcie_us_wr/test_dma_if_pcie_us_wr.py::test_dma_if_pcie_us_wr[512-4092]": 1368.596827385947,
"tb/dma_if_pcie_us_wr/test_dma_if_pcie_us_wr.py::test_dma_if_pcie_us_wr[512-4093]": 1502.867609902285,
"tb/dma_if_pcie_us_wr/test_dma_if_pcie_us_wr.py::test_dma_if_pcie_us_wr[512-4094]": 1524.62009312585,
"tb/dma_if_pcie_us_wr/test_dma_if_pcie_us_wr.py::test_dma_if_pcie_us_wr[512-4095]": 1506.7605008278042,
"tb/dma_if_pcie_us_wr/test_dma_if_pcie_us_wr.py::test_dma_if_pcie_us_wr[64-0]": 55.626724475063384,
"tb/dma_if_pcie_us_wr/test_dma_if_pcie_us_wr.py::test_dma_if_pcie_us_wr[64-1]": 55.11143268831074,
"tb/dma_if_pcie_us_wr/test_dma_if_pcie_us_wr.py::test_dma_if_pcie_us_wr[64-2]": 58.63148927222937,
"tb/dma_if_pcie_us_wr/test_dma_if_pcie_us_wr.py::test_dma_if_pcie_us_wr[64-3]": 57.45176871214062,
"tb/dma_if_pcie_us_wr/test_dma_if_pcie_us_wr.py::test_dma_if_pcie_us_wr[64-4092]": 65.44900013692677,
"tb/dma_if_pcie_us_wr/test_dma_if_pcie_us_wr.py::test_dma_if_pcie_us_wr[64-4093]": 64.45425912272185,
"tb/dma_if_pcie_us_wr/test_dma_if_pcie_us_wr.py::test_dma_if_pcie_us_wr[64-4094]": 69.30808288697153,
"tb/dma_if_pcie_us_wr/test_dma_if_pcie_us_wr.py::test_dma_if_pcie_us_wr[64-4095]": 57.00203585624695,
"tb/pcie_us_axi_dma/test_pcie_us_axi_dma.py::test_pcie_us_axi_dma[128]": 55.34431986231357,
"tb/pcie_us_axi_dma/test_pcie_us_axi_dma.py::test_pcie_us_axi_dma[256]": 66.88979958370328,
"tb/pcie_us_axi_dma/test_pcie_us_axi_dma.py::test_pcie_us_axi_dma[512]": 90.04972141887993,
"tb/pcie_us_axi_dma/test_pcie_us_axi_dma.py::test_pcie_us_axi_dma[64]": 61.67373139131814,
"tb/pcie_us_axi_dma_rd/test_pcie_us_axi_dma_rd.py::test_pcie_us_axi_dma_rd[128-0]": 77.12614283710718,
"tb/pcie_us_axi_dma_rd/test_pcie_us_axi_dma_rd.py::test_pcie_us_axi_dma_rd[128-1]": 73.34287452884018,
"tb/pcie_us_axi_dma_rd/test_pcie_us_axi_dma_rd.py::test_pcie_us_axi_dma_rd[128-2]": 74.26618081331253,
"tb/pcie_us_axi_dma_rd/test_pcie_us_axi_dma_rd.py::test_pcie_us_axi_dma_rd[128-3]": 74.13526185695082,
"tb/pcie_us_axi_dma_rd/test_pcie_us_axi_dma_rd.py::test_pcie_us_axi_dma_rd[128-4092]": 79.32912429980934,
"tb/pcie_us_axi_dma_rd/test_pcie_us_axi_dma_rd.py::test_pcie_us_axi_dma_rd[128-4093]": 80.04738537222147,
"tb/pcie_us_axi_dma_rd/test_pcie_us_axi_dma_rd.py::test_pcie_us_axi_dma_rd[128-4094]": 80.08720324933529,
"tb/pcie_us_axi_dma_rd/test_pcie_us_axi_dma_rd.py::test_pcie_us_axi_dma_rd[128-4095]": 81.54104107897729,
"tb/pcie_us_axi_dma_rd/test_pcie_us_axi_dma_rd.py::test_pcie_us_axi_dma_rd[256-0]": 151.2568081030622,
"tb/pcie_us_axi_dma_rd/test_pcie_us_axi_dma_rd.py::test_pcie_us_axi_dma_rd[256-1]": 157.51574573293328,
"tb/pcie_us_axi_dma_rd/test_pcie_us_axi_dma_rd.py::test_pcie_us_axi_dma_rd[256-2]": 157.9159796051681,
"tb/pcie_us_axi_dma_rd/test_pcie_us_axi_dma_rd.py::test_pcie_us_axi_dma_rd[256-3]": 160.0399430571124,
"tb/pcie_us_axi_dma_rd/test_pcie_us_axi_dma_rd.py::test_pcie_us_axi_dma_rd[256-4092]": 180.20701172295958,
"tb/pcie_us_axi_dma_rd/test_pcie_us_axi_dma_rd.py::test_pcie_us_axi_dma_rd[256-4093]": 184.47290441114455,
"tb/pcie_us_axi_dma_rd/test_pcie_us_axi_dma_rd.py::test_pcie_us_axi_dma_rd[256-4094]": 189.7751868078485,
"tb/pcie_us_axi_dma_rd/test_pcie_us_axi_dma_rd.py::test_pcie_us_axi_dma_rd[256-4095]": 188.4678191859275,
"tb/pcie_us_axi_dma_rd/test_pcie_us_axi_dma_rd.py::test_pcie_us_axi_dma_rd[512-0]": 449.5606067106128,
"tb/pcie_us_axi_dma_rd/test_pcie_us_axi_dma_rd.py::test_pcie_us_axi_dma_rd[512-1]": 448.4408432012424,
"tb/pcie_us_axi_dma_rd/test_pcie_us_axi_dma_rd.py::test_pcie_us_axi_dma_rd[512-2]": 463.71407611016184,
"tb/pcie_us_axi_dma_rd/test_pcie_us_axi_dma_rd.py::test_pcie_us_axi_dma_rd[512-3]": 448.0736060384661,
"tb/pcie_us_axi_dma_rd/test_pcie_us_axi_dma_rd.py::test_pcie_us_axi_dma_rd[512-4092]": 616.1423984877765,
"tb/pcie_us_axi_dma_rd/test_pcie_us_axi_dma_rd.py::test_pcie_us_axi_dma_rd[512-4093]": 506.630911456421,
"tb/pcie_us_axi_dma_rd/test_pcie_us_axi_dma_rd.py::test_pcie_us_axi_dma_rd[512-4094]": 604.2038279650733,
"tb/pcie_us_axi_dma_rd/test_pcie_us_axi_dma_rd.py::test_pcie_us_axi_dma_rd[512-4095]": 617.672575446777,
"tb/pcie_us_axi_dma_rd/test_pcie_us_axi_dma_rd.py::test_pcie_us_axi_dma_rd[64-0]": 54.226667545735836,
"tb/pcie_us_axi_dma_rd/test_pcie_us_axi_dma_rd.py::test_pcie_us_axi_dma_rd[64-1]": 48.7573811635375,
"tb/pcie_us_axi_dma_rd/test_pcie_us_axi_dma_rd.py::test_pcie_us_axi_dma_rd[64-2]": 51.29145604837686,
"tb/pcie_us_axi_dma_rd/test_pcie_us_axi_dma_rd.py::test_pcie_us_axi_dma_rd[64-3]": 41.874644968658686,
"tb/pcie_us_axi_dma_rd/test_pcie_us_axi_dma_rd.py::test_pcie_us_axi_dma_rd[64-4092]": 42.01370157953352,
"tb/pcie_us_axi_dma_rd/test_pcie_us_axi_dma_rd.py::test_pcie_us_axi_dma_rd[64-4093]": 56.914606555365026,
"tb/pcie_us_axi_dma_rd/test_pcie_us_axi_dma_rd.py::test_pcie_us_axi_dma_rd[64-4094]": 52.28642243612558,
"tb/pcie_us_axi_dma_rd/test_pcie_us_axi_dma_rd.py::test_pcie_us_axi_dma_rd[64-4095]": 52.41830955259502,
"tb/pcie_us_axi_dma_wr/test_pcie_us_axi_dma_wr.py::test_pcie_us_axi_dma_wr[128-0]": 75.37933749426156,
"tb/pcie_us_axi_dma_wr/test_pcie_us_axi_dma_wr.py::test_pcie_us_axi_dma_wr[128-1]": 81.6526447571814,
"tb/pcie_us_axi_dma_wr/test_pcie_us_axi_dma_wr.py::test_pcie_us_axi_dma_wr[128-2]": 84.21671548299491,
"tb/pcie_us_axi_dma_wr/test_pcie_us_axi_dma_wr.py::test_pcie_us_axi_dma_wr[128-3]": 80.46194529067725,
"tb/pcie_us_axi_dma_wr/test_pcie_us_axi_dma_wr.py::test_pcie_us_axi_dma_wr[128-4092]": 86.88937138207257,
"tb/pcie_us_axi_dma_wr/test_pcie_us_axi_dma_wr.py::test_pcie_us_axi_dma_wr[128-4093]": 52.99224254954606,
"tb/pcie_us_axi_dma_wr/test_pcie_us_axi_dma_wr.py::test_pcie_us_axi_dma_wr[128-4094]": 79.26580656319857,
"tb/pcie_us_axi_dma_wr/test_pcie_us_axi_dma_wr.py::test_pcie_us_axi_dma_wr[128-4095]": 86.75192254781723,
"tb/pcie_us_axi_dma_wr/test_pcie_us_axi_dma_wr.py::test_pcie_us_axi_dma_wr[256-0]": 189.74875892233104,
"tb/pcie_us_axi_dma_wr/test_pcie_us_axi_dma_wr.py::test_pcie_us_axi_dma_wr[256-1]": 162.45234764087945,
"tb/pcie_us_axi_dma_wr/test_pcie_us_axi_dma_wr.py::test_pcie_us_axi_dma_wr[256-2]": 190.12465902697295,
"tb/pcie_us_axi_dma_wr/test_pcie_us_axi_dma_wr.py::test_pcie_us_axi_dma_wr[256-3]": 197.55172677431256,
"tb/pcie_us_axi_dma_wr/test_pcie_us_axi_dma_wr.py::test_pcie_us_axi_dma_wr[256-4092]": 224.5274593019858,
"tb/pcie_us_axi_dma_wr/test_pcie_us_axi_dma_wr.py::test_pcie_us_axi_dma_wr[256-4093]": 186.60994852893054,
"tb/pcie_us_axi_dma_wr/test_pcie_us_axi_dma_wr.py::test_pcie_us_axi_dma_wr[256-4094]": 214.4691426148638,
"tb/pcie_us_axi_dma_wr/test_pcie_us_axi_dma_wr.py::test_pcie_us_axi_dma_wr[256-4095]": 217.05821100622416,
"tb/pcie_us_axi_dma_wr/test_pcie_us_axi_dma_wr.py::test_pcie_us_axi_dma_wr[512-0]": 638.5206259191036,
"tb/pcie_us_axi_dma_wr/test_pcie_us_axi_dma_wr.py::test_pcie_us_axi_dma_wr[512-1]": 603.9042626637965,
"tb/pcie_us_axi_dma_wr/test_pcie_us_axi_dma_wr.py::test_pcie_us_axi_dma_wr[512-2]": 449.2410867419094,
"tb/pcie_us_axi_dma_wr/test_pcie_us_axi_dma_wr.py::test_pcie_us_axi_dma_wr[512-3]": 641.4655030183494,
"tb/pcie_us_axi_dma_wr/test_pcie_us_axi_dma_wr.py::test_pcie_us_axi_dma_wr[512-4092]": 564.17710366752,
"tb/pcie_us_axi_dma_wr/test_pcie_us_axi_dma_wr.py::test_pcie_us_axi_dma_wr[512-4093]": 716.9659776845947,
"tb/pcie_us_axi_dma_wr/test_pcie_us_axi_dma_wr.py::test_pcie_us_axi_dma_wr[512-4094]": 711.5908815609291,
"tb/pcie_us_axi_dma_wr/test_pcie_us_axi_dma_wr.py::test_pcie_us_axi_dma_wr[512-4095]": 578.5952320527285,
"tb/pcie_us_axi_dma_wr/test_pcie_us_axi_dma_wr.py::test_pcie_us_axi_dma_wr[64-0]": 44.989423242397606,
"tb/pcie_us_axi_dma_wr/test_pcie_us_axi_dma_wr.py::test_pcie_us_axi_dma_wr[64-1]": 48.38504076376557,
"tb/pcie_us_axi_dma_wr/test_pcie_us_axi_dma_wr.py::test_pcie_us_axi_dma_wr[64-2]": 42.08020547684282,
"tb/pcie_us_axi_dma_wr/test_pcie_us_axi_dma_wr.py::test_pcie_us_axi_dma_wr[64-3]": 45.857589673250914,
"tb/pcie_us_axi_dma_wr/test_pcie_us_axi_dma_wr.py::test_pcie_us_axi_dma_wr[64-4092]": 48.27580141555518,
"tb/pcie_us_axi_dma_wr/test_pcie_us_axi_dma_wr.py::test_pcie_us_axi_dma_wr[64-4093]": 50.395039771683514,
"tb/pcie_us_axi_dma_wr/test_pcie_us_axi_dma_wr.py::test_pcie_us_axi_dma_wr[64-4094]": 46.96181127987802,
"tb/pcie_us_axi_dma_wr/test_pcie_us_axi_dma_wr.py::test_pcie_us_axi_dma_wr[64-4095]": 31.98891568556428,
"tb/pcie_us_axi_master/test_pcie_us_axi_master.py::test_pcie_us_axi_master[128]": 106.57206025253981,
"tb/pcie_us_axi_master/test_pcie_us_axi_master.py::test_pcie_us_axi_master[256]": 386.05591648444533,
"tb/pcie_us_axi_master/test_pcie_us_axi_master.py::test_pcie_us_axi_master[512]": 1723.2095259064808,
"tb/pcie_us_axi_master/test_pcie_us_axi_master.py::test_pcie_us_axi_master[64]": 46.193137815222144,
"tb/pcie_us_axi_master_rd/test_pcie_us_axi_master_rd.py::test_pcie_us_axi_master_rd[128]": 72.12794999033213,
"tb/pcie_us_axi_master_rd/test_pcie_us_axi_master_rd.py::test_pcie_us_axi_master_rd[256]": 186.20972919091582,
"tb/pcie_us_axi_master_rd/test_pcie_us_axi_master_rd.py::test_pcie_us_axi_master_rd[512]": 795.3022854682058,
"tb/pcie_us_axi_master_rd/test_pcie_us_axi_master_rd.py::test_pcie_us_axi_master_rd[64]": 32.59987386036664,
"tb/pcie_us_axi_master_wr/test_pcie_us_axi_master_wr.py::test_pcie_us_axi_master_wr[128]": 110.00076509267092,
"tb/pcie_us_axi_master_wr/test_pcie_us_axi_master_wr.py::test_pcie_us_axi_master_wr[256]": 414.3887374503538,
"tb/pcie_us_axi_master_wr/test_pcie_us_axi_master_wr.py::test_pcie_us_axi_master_wr[512]": 1911.0218827025965,
"tb/pcie_us_axi_master_wr/test_pcie_us_axi_master_wr.py::test_pcie_us_axi_master_wr[64]": 40.07847321219742,
"tb/pcie_us_axil_master/test_pcie_us_axil_master.py::test_pcie_us_axil_master[128]": 18.99232353642583,
"tb/pcie_us_axil_master/test_pcie_us_axil_master.py::test_pcie_us_axil_master[256]": 17.421819648705423,
"tb/pcie_us_axil_master/test_pcie_us_axil_master.py::test_pcie_us_axil_master[512]": 17.34581908863038,
"tb/pcie_us_axil_master/test_pcie_us_axil_master.py::test_pcie_us_axil_master[64]": 15.06752866320312
}

View File

@ -17,12 +17,16 @@ set_property -dict [list \
CONFIG.pf0_class_code_sub {00} \
CONFIG.pf0_base_class_menu {Network_controller} \
CONFIG.pf0_sub_class_interface_menu {Ethernet_controller} \
CONFIG.pf0_bar0_64bit {true} \
CONFIG.pf0_bar0_prefetchable {true} \
CONFIG.pf0_bar0_scale {Megabytes} \
CONFIG.pf0_bar0_size {16} \
CONFIG.pf0_bar1_enabled {true} \
CONFIG.pf0_bar1_type {Memory} \
CONFIG.pf0_bar1_scale {Megabytes} \
CONFIG.pf0_bar1_size {16} \
CONFIG.pf0_bar2_64bit {true} \
CONFIG.pf0_bar2_prefetchable {true} \
CONFIG.pf0_bar2_enabled {true} \
CONFIG.pf0_bar2_type {Memory} \
CONFIG.pf0_bar2_scale {Megabytes} \
CONFIG.pf0_bar2_size {16} \
CONFIG.vendor_id {1234} \
CONFIG.en_msi_per_vec_masking {true} \
] [get_ips pcie4_uscale_plus_0]

View File

@ -145,19 +145,19 @@ wire axis_cc_tready_bar_0;
wire axis_cc_tlast_bar_0;
wire [AXIS_PCIE_CC_USER_WIDTH-1:0] axis_cc_tuser_bar_0;
wire [AXIS_PCIE_DATA_WIDTH-1:0] axis_cq_tdata_bar_1;
wire [AXIS_PCIE_KEEP_WIDTH-1:0] axis_cq_tkeep_bar_1;
wire axis_cq_tvalid_bar_1;
wire axis_cq_tready_bar_1;
wire axis_cq_tlast_bar_1;
wire [AXIS_PCIE_CQ_USER_WIDTH-1:0] axis_cq_tuser_bar_1;
wire [AXIS_PCIE_DATA_WIDTH-1:0] axis_cq_tdata_bar_2;
wire [AXIS_PCIE_KEEP_WIDTH-1:0] axis_cq_tkeep_bar_2;
wire axis_cq_tvalid_bar_2;
wire axis_cq_tready_bar_2;
wire axis_cq_tlast_bar_2;
wire [AXIS_PCIE_CQ_USER_WIDTH-1:0] axis_cq_tuser_bar_2;
wire [AXIS_PCIE_DATA_WIDTH-1:0] axis_cc_tdata_bar_1;
wire [AXIS_PCIE_KEEP_WIDTH-1:0] axis_cc_tkeep_bar_1;
wire axis_cc_tvalid_bar_1;
wire axis_cc_tready_bar_1;
wire axis_cc_tlast_bar_1;
wire [AXIS_PCIE_CC_USER_WIDTH-1:0] axis_cc_tuser_bar_1;
wire [AXIS_PCIE_DATA_WIDTH-1:0] axis_cc_tdata_bar_2;
wire [AXIS_PCIE_KEEP_WIDTH-1:0] axis_cc_tkeep_bar_2;
wire axis_cc_tvalid_bar_2;
wire axis_cc_tready_bar_2;
wire axis_cc_tlast_bar_2;
wire [AXIS_PCIE_CC_USER_WIDTH-1:0] axis_cc_tuser_bar_2;
wire [2:0] bar_id;
wire [1:0] select;
@ -185,12 +185,12 @@ cq_demux_inst (
/*
* AXI output (CQ)
*/
.m_axis_cq_tdata({axis_cq_tdata_bar_1, axis_cq_tdata_bar_0}),
.m_axis_cq_tkeep({axis_cq_tkeep_bar_1, axis_cq_tkeep_bar_0}),
.m_axis_cq_tvalid({axis_cq_tvalid_bar_1, axis_cq_tvalid_bar_0}),
.m_axis_cq_tready({axis_cq_tready_bar_1, axis_cq_tready_bar_0}),
.m_axis_cq_tlast({axis_cq_tlast_bar_1, axis_cq_tlast_bar_0}),
.m_axis_cq_tuser({axis_cq_tuser_bar_1, axis_cq_tuser_bar_0}),
.m_axis_cq_tdata({axis_cq_tdata_bar_2, axis_cq_tdata_bar_0}),
.m_axis_cq_tkeep({axis_cq_tkeep_bar_2, axis_cq_tkeep_bar_0}),
.m_axis_cq_tvalid({axis_cq_tvalid_bar_2, axis_cq_tvalid_bar_0}),
.m_axis_cq_tready({axis_cq_tready_bar_2, axis_cq_tready_bar_0}),
.m_axis_cq_tlast({axis_cq_tlast_bar_2, axis_cq_tlast_bar_0}),
.m_axis_cq_tuser({axis_cq_tuser_bar_2, axis_cq_tuser_bar_0}),
/*
* Fields
@ -209,7 +209,7 @@ cq_demux_inst (
.select(select)
);
assign select[1] = bar_id == 3'd1;
assign select[1] = bar_id == 3'd2;
assign select[0] = bar_id == 3'd0;
axis_arb_mux #(
@ -229,14 +229,14 @@ cc_mux_inst (
/*
* AXI inputs
*/
.s_axis_tdata({axis_cc_tdata_bar_1, axis_cc_tdata_bar_0}),
.s_axis_tkeep({axis_cc_tkeep_bar_1, axis_cc_tkeep_bar_0}),
.s_axis_tvalid({axis_cc_tvalid_bar_1, axis_cc_tvalid_bar_0}),
.s_axis_tready({axis_cc_tready_bar_1, axis_cc_tready_bar_0}),
.s_axis_tlast({axis_cc_tlast_bar_1, axis_cc_tlast_bar_0}),
.s_axis_tdata({axis_cc_tdata_bar_2, axis_cc_tdata_bar_0}),
.s_axis_tkeep({axis_cc_tkeep_bar_2, axis_cc_tkeep_bar_0}),
.s_axis_tvalid({axis_cc_tvalid_bar_2, axis_cc_tvalid_bar_0}),
.s_axis_tready({axis_cc_tready_bar_2, axis_cc_tready_bar_0}),
.s_axis_tlast({axis_cc_tlast_bar_2, axis_cc_tlast_bar_0}),
.s_axis_tid(0),
.s_axis_tdest(0),
.s_axis_tuser({axis_cc_tuser_bar_1, axis_cc_tuser_bar_0}),
.s_axis_tuser({axis_cc_tuser_bar_2, axis_cc_tuser_bar_0}),
/*
* AXI output
@ -697,22 +697,22 @@ pcie_us_axi_master_inst (
/*
* AXI input (CQ)
*/
.s_axis_cq_tdata(axis_cq_tdata_bar_1),
.s_axis_cq_tkeep(axis_cq_tkeep_bar_1),
.s_axis_cq_tvalid(axis_cq_tvalid_bar_1),
.s_axis_cq_tready(axis_cq_tready_bar_1),
.s_axis_cq_tlast(axis_cq_tlast_bar_1),
.s_axis_cq_tuser(axis_cq_tuser_bar_1),
.s_axis_cq_tdata(axis_cq_tdata_bar_2),
.s_axis_cq_tkeep(axis_cq_tkeep_bar_2),
.s_axis_cq_tvalid(axis_cq_tvalid_bar_2),
.s_axis_cq_tready(axis_cq_tready_bar_2),
.s_axis_cq_tlast(axis_cq_tlast_bar_2),
.s_axis_cq_tuser(axis_cq_tuser_bar_2),
/*
* AXI output (CC)
*/
.m_axis_cc_tdata(axis_cc_tdata_bar_1),
.m_axis_cc_tkeep(axis_cc_tkeep_bar_1),
.m_axis_cc_tvalid(axis_cc_tvalid_bar_1),
.m_axis_cc_tready(axis_cc_tready_bar_1),
.m_axis_cc_tlast(axis_cc_tlast_bar_1),
.m_axis_cc_tuser(axis_cc_tuser_bar_1),
.m_axis_cc_tdata(axis_cc_tdata_bar_2),
.m_axis_cc_tkeep(axis_cc_tkeep_bar_2),
.m_axis_cc_tvalid(axis_cc_tvalid_bar_2),
.m_axis_cc_tready(axis_cc_tready_bar_2),
.m_axis_cc_tlast(axis_cc_tlast_bar_2),
.m_axis_cc_tuser(axis_cc_tuser_bar_2),
/*
* AXI Master output

View File

@ -235,7 +235,7 @@ class TB(object):
self.dev.functions[0].msi_multiple_message_capable = 5
self.dev.functions[0].configure_bar(0, 2**22)
self.dev.functions[0].configure_bar(1, 2**22)
self.dev.functions[0].configure_bar(2, 2**22)
async def init(self):
@ -255,17 +255,17 @@ async def run_test(dut):
mem_base, mem_data = tb.rc.alloc_region(16*1024*1024)
dev_pf0_bar0 = tb.rc.tree[0][0].bar_addr[0]
dev_pf0_bar1 = tb.rc.tree[0][0].bar_addr[1]
dev_pf0_bar2 = tb.rc.tree[0][0].bar_addr[2]
tb.log.info("Test memory write to BAR 1")
tb.log.info("Test memory write to BAR 2")
await tb.rc.mem_write(dev_pf0_bar1, b'\x11\x22\x33\x44')
await tb.rc.mem_write(dev_pf0_bar2, b'\x11\x22\x33\x44')
await Timer(100, 'ns')
tb.log.info("Test memory read from BAR 1")
tb.log.info("Test memory read from BAR 2")
val = await tb.rc.mem_read(dev_pf0_bar1, 4, 1000)
val = await tb.rc.mem_read(dev_pf0_bar2, 4, 1000)
tb.log.info("Read data: %s", val)
assert val == b'\x11\x22\x33\x44'

View File

@ -17,12 +17,16 @@ set_property -dict [list \
CONFIG.pf0_class_code_sub {00} \
CONFIG.pf0_base_class_menu {Network_controller} \
CONFIG.pf0_sub_class_interface_menu {Ethernet_controller} \
CONFIG.pf0_bar0_64bit {true} \
CONFIG.pf0_bar0_prefetchable {true} \
CONFIG.pf0_bar0_scale {Megabytes} \
CONFIG.pf0_bar0_size {16} \
CONFIG.pf0_bar1_enabled {true} \
CONFIG.pf0_bar1_type {Memory} \
CONFIG.pf0_bar1_scale {Megabytes} \
CONFIG.pf0_bar1_size {16} \
CONFIG.pf0_bar2_64bit {true} \
CONFIG.pf0_bar2_prefetchable {true} \
CONFIG.pf0_bar2_enabled {true} \
CONFIG.pf0_bar2_type {Memory} \
CONFIG.pf0_bar2_scale {Megabytes} \
CONFIG.pf0_bar2_size {16} \
CONFIG.vendor_id {1234} \
CONFIG.en_msi_per_vec_masking {true} \
] [get_ips pcie4_uscale_plus_0]

View File

@ -144,19 +144,19 @@ wire axis_cc_tready_bar_0;
wire axis_cc_tlast_bar_0;
wire [AXIS_PCIE_CC_USER_WIDTH-1:0] axis_cc_tuser_bar_0;
wire [AXIS_PCIE_DATA_WIDTH-1:0] axis_cq_tdata_bar_1;
wire [AXIS_PCIE_KEEP_WIDTH-1:0] axis_cq_tkeep_bar_1;
wire axis_cq_tvalid_bar_1;
wire axis_cq_tready_bar_1;
wire axis_cq_tlast_bar_1;
wire [AXIS_PCIE_CQ_USER_WIDTH-1:0] axis_cq_tuser_bar_1;
wire [AXIS_PCIE_DATA_WIDTH-1:0] axis_cq_tdata_bar_2;
wire [AXIS_PCIE_KEEP_WIDTH-1:0] axis_cq_tkeep_bar_2;
wire axis_cq_tvalid_bar_2;
wire axis_cq_tready_bar_2;
wire axis_cq_tlast_bar_2;
wire [AXIS_PCIE_CQ_USER_WIDTH-1:0] axis_cq_tuser_bar_2;
wire [AXIS_PCIE_DATA_WIDTH-1:0] axis_cc_tdata_bar_1;
wire [AXIS_PCIE_KEEP_WIDTH-1:0] axis_cc_tkeep_bar_1;
wire axis_cc_tvalid_bar_1;
wire axis_cc_tready_bar_1;
wire axis_cc_tlast_bar_1;
wire [AXIS_PCIE_CC_USER_WIDTH-1:0] axis_cc_tuser_bar_1;
wire [AXIS_PCIE_DATA_WIDTH-1:0] axis_cc_tdata_bar_2;
wire [AXIS_PCIE_KEEP_WIDTH-1:0] axis_cc_tkeep_bar_2;
wire axis_cc_tvalid_bar_2;
wire axis_cc_tready_bar_2;
wire axis_cc_tlast_bar_2;
wire [AXIS_PCIE_CC_USER_WIDTH-1:0] axis_cc_tuser_bar_2;
wire [2:0] bar_id;
wire [1:0] select;
@ -184,12 +184,12 @@ cq_demux_inst (
/*
* AXI output (CQ)
*/
.m_axis_cq_tdata({axis_cq_tdata_bar_1, axis_cq_tdata_bar_0}),
.m_axis_cq_tkeep({axis_cq_tkeep_bar_1, axis_cq_tkeep_bar_0}),
.m_axis_cq_tvalid({axis_cq_tvalid_bar_1, axis_cq_tvalid_bar_0}),
.m_axis_cq_tready({axis_cq_tready_bar_1, axis_cq_tready_bar_0}),
.m_axis_cq_tlast({axis_cq_tlast_bar_1, axis_cq_tlast_bar_0}),
.m_axis_cq_tuser({axis_cq_tuser_bar_1, axis_cq_tuser_bar_0}),
.m_axis_cq_tdata({axis_cq_tdata_bar_2, axis_cq_tdata_bar_0}),
.m_axis_cq_tkeep({axis_cq_tkeep_bar_2, axis_cq_tkeep_bar_0}),
.m_axis_cq_tvalid({axis_cq_tvalid_bar_2, axis_cq_tvalid_bar_0}),
.m_axis_cq_tready({axis_cq_tready_bar_2, axis_cq_tready_bar_0}),
.m_axis_cq_tlast({axis_cq_tlast_bar_2, axis_cq_tlast_bar_0}),
.m_axis_cq_tuser({axis_cq_tuser_bar_2, axis_cq_tuser_bar_0}),
/*
* Fields
@ -208,7 +208,7 @@ cq_demux_inst (
.select(select)
);
assign select[1] = bar_id == 3'd1;
assign select[1] = bar_id == 3'd2;
assign select[0] = bar_id == 3'd0;
axis_arb_mux #(
@ -228,14 +228,14 @@ cc_mux_inst (
/*
* AXI inputs
*/
.s_axis_tdata({axis_cc_tdata_bar_1, axis_cc_tdata_bar_0}),
.s_axis_tkeep({axis_cc_tkeep_bar_1, axis_cc_tkeep_bar_0}),
.s_axis_tvalid({axis_cc_tvalid_bar_1, axis_cc_tvalid_bar_0}),
.s_axis_tready({axis_cc_tready_bar_1, axis_cc_tready_bar_0}),
.s_axis_tlast({axis_cc_tlast_bar_1, axis_cc_tlast_bar_0}),
.s_axis_tdata({axis_cc_tdata_bar_2, axis_cc_tdata_bar_0}),
.s_axis_tkeep({axis_cc_tkeep_bar_2, axis_cc_tkeep_bar_0}),
.s_axis_tvalid({axis_cc_tvalid_bar_2, axis_cc_tvalid_bar_0}),
.s_axis_tready({axis_cc_tready_bar_2, axis_cc_tready_bar_0}),
.s_axis_tlast({axis_cc_tlast_bar_2, axis_cc_tlast_bar_0}),
.s_axis_tid(0),
.s_axis_tdest(0),
.s_axis_tuser({axis_cc_tuser_bar_1, axis_cc_tuser_bar_0}),
.s_axis_tuser({axis_cc_tuser_bar_2, axis_cc_tuser_bar_0}),
/*
* AXI output
@ -694,22 +694,22 @@ pcie_us_axi_master_inst (
/*
* AXI input (CQ)
*/
.s_axis_cq_tdata(axis_cq_tdata_bar_1),
.s_axis_cq_tkeep(axis_cq_tkeep_bar_1),
.s_axis_cq_tvalid(axis_cq_tvalid_bar_1),
.s_axis_cq_tready(axis_cq_tready_bar_1),
.s_axis_cq_tlast(axis_cq_tlast_bar_1),
.s_axis_cq_tuser(axis_cq_tuser_bar_1),
.s_axis_cq_tdata(axis_cq_tdata_bar_2),
.s_axis_cq_tkeep(axis_cq_tkeep_bar_2),
.s_axis_cq_tvalid(axis_cq_tvalid_bar_2),
.s_axis_cq_tready(axis_cq_tready_bar_2),
.s_axis_cq_tlast(axis_cq_tlast_bar_2),
.s_axis_cq_tuser(axis_cq_tuser_bar_2),
/*
* AXI output (CC)
*/
.m_axis_cc_tdata(axis_cc_tdata_bar_1),
.m_axis_cc_tkeep(axis_cc_tkeep_bar_1),
.m_axis_cc_tvalid(axis_cc_tvalid_bar_1),
.m_axis_cc_tready(axis_cc_tready_bar_1),
.m_axis_cc_tlast(axis_cc_tlast_bar_1),
.m_axis_cc_tuser(axis_cc_tuser_bar_1),
.m_axis_cc_tdata(axis_cc_tdata_bar_2),
.m_axis_cc_tkeep(axis_cc_tkeep_bar_2),
.m_axis_cc_tvalid(axis_cc_tvalid_bar_2),
.m_axis_cc_tready(axis_cc_tready_bar_2),
.m_axis_cc_tlast(axis_cc_tlast_bar_2),
.m_axis_cc_tuser(axis_cc_tuser_bar_2),
/*
* AXI Master output

View File

@ -235,7 +235,7 @@ class TB(object):
self.dev.functions[0].msi_multiple_message_capable = 5
self.dev.functions[0].configure_bar(0, 2**22)
self.dev.functions[0].configure_bar(1, 2**22)
self.dev.functions[0].configure_bar(2, 2**22)
dut.sw.setimmediatevalue(0)
@ -257,17 +257,17 @@ async def run_test(dut):
mem_base, mem_data = tb.rc.alloc_region(16*1024*1024)
dev_pf0_bar0 = tb.rc.tree[0][0].bar_addr[0]
dev_pf0_bar1 = tb.rc.tree[0][0].bar_addr[1]
dev_pf0_bar2 = tb.rc.tree[0][0].bar_addr[2]
tb.log.info("Test memory write to BAR 1")
tb.log.info("Test memory write to BAR 2")
await tb.rc.mem_write(dev_pf0_bar1, b'\x11\x22\x33\x44')
await tb.rc.mem_write(dev_pf0_bar2, b'\x11\x22\x33\x44')
await Timer(100, 'ns')
tb.log.info("Test memory read from BAR 1")
tb.log.info("Test memory read from BAR 2")
val = await tb.rc.mem_read(dev_pf0_bar1, 4, 1000)
val = await tb.rc.mem_read(dev_pf0_bar2, 4, 1000)
tb.log.info("Read data: %s", val)
assert val == b'\x11\x22\x33\x44'

View File

@ -17,12 +17,16 @@ set_property -dict [list \
CONFIG.pf0_class_code_sub {00} \
CONFIG.pf0_base_class_menu {Network_controller} \
CONFIG.pf0_sub_class_interface_menu {Ethernet_controller} \
CONFIG.pf0_bar0_64bit {true} \
CONFIG.pf0_bar0_prefetchable {true} \
CONFIG.pf0_bar0_scale {Megabytes} \
CONFIG.pf0_bar0_size {16} \
CONFIG.pf0_bar1_enabled {true} \
CONFIG.pf0_bar1_type {Memory} \
CONFIG.pf0_bar1_scale {Megabytes} \
CONFIG.pf0_bar1_size {16} \
CONFIG.pf0_bar2_64bit {true} \
CONFIG.pf0_bar2_prefetchable {true} \
CONFIG.pf0_bar2_enabled {true} \
CONFIG.pf0_bar2_type {Memory} \
CONFIG.pf0_bar2_scale {Megabytes} \
CONFIG.pf0_bar2_size {16} \
CONFIG.vendor_id {1234} \
CONFIG.en_msi_per_vec_masking {true} \
] [get_ips pcie4_uscale_plus_0]

View File

@ -144,19 +144,19 @@ wire axis_cc_tready_bar_0;
wire axis_cc_tlast_bar_0;
wire [AXIS_PCIE_CC_USER_WIDTH-1:0] axis_cc_tuser_bar_0;
wire [AXIS_PCIE_DATA_WIDTH-1:0] axis_cq_tdata_bar_1;
wire [AXIS_PCIE_KEEP_WIDTH-1:0] axis_cq_tkeep_bar_1;
wire axis_cq_tvalid_bar_1;
wire axis_cq_tready_bar_1;
wire axis_cq_tlast_bar_1;
wire [AXIS_PCIE_CQ_USER_WIDTH-1:0] axis_cq_tuser_bar_1;
wire [AXIS_PCIE_DATA_WIDTH-1:0] axis_cq_tdata_bar_2;
wire [AXIS_PCIE_KEEP_WIDTH-1:0] axis_cq_tkeep_bar_2;
wire axis_cq_tvalid_bar_2;
wire axis_cq_tready_bar_2;
wire axis_cq_tlast_bar_2;
wire [AXIS_PCIE_CQ_USER_WIDTH-1:0] axis_cq_tuser_bar_2;
wire [AXIS_PCIE_DATA_WIDTH-1:0] axis_cc_tdata_bar_1;
wire [AXIS_PCIE_KEEP_WIDTH-1:0] axis_cc_tkeep_bar_1;
wire axis_cc_tvalid_bar_1;
wire axis_cc_tready_bar_1;
wire axis_cc_tlast_bar_1;
wire [AXIS_PCIE_CC_USER_WIDTH-1:0] axis_cc_tuser_bar_1;
wire [AXIS_PCIE_DATA_WIDTH-1:0] axis_cc_tdata_bar_2;
wire [AXIS_PCIE_KEEP_WIDTH-1:0] axis_cc_tkeep_bar_2;
wire axis_cc_tvalid_bar_2;
wire axis_cc_tready_bar_2;
wire axis_cc_tlast_bar_2;
wire [AXIS_PCIE_CC_USER_WIDTH-1:0] axis_cc_tuser_bar_2;
wire [2:0] bar_id;
wire [1:0] select;
@ -184,12 +184,12 @@ cq_demux_inst (
/*
* AXI output (CQ)
*/
.m_axis_cq_tdata({axis_cq_tdata_bar_1, axis_cq_tdata_bar_0}),
.m_axis_cq_tkeep({axis_cq_tkeep_bar_1, axis_cq_tkeep_bar_0}),
.m_axis_cq_tvalid({axis_cq_tvalid_bar_1, axis_cq_tvalid_bar_0}),
.m_axis_cq_tready({axis_cq_tready_bar_1, axis_cq_tready_bar_0}),
.m_axis_cq_tlast({axis_cq_tlast_bar_1, axis_cq_tlast_bar_0}),
.m_axis_cq_tuser({axis_cq_tuser_bar_1, axis_cq_tuser_bar_0}),
.m_axis_cq_tdata({axis_cq_tdata_bar_2, axis_cq_tdata_bar_0}),
.m_axis_cq_tkeep({axis_cq_tkeep_bar_2, axis_cq_tkeep_bar_0}),
.m_axis_cq_tvalid({axis_cq_tvalid_bar_2, axis_cq_tvalid_bar_0}),
.m_axis_cq_tready({axis_cq_tready_bar_2, axis_cq_tready_bar_0}),
.m_axis_cq_tlast({axis_cq_tlast_bar_2, axis_cq_tlast_bar_0}),
.m_axis_cq_tuser({axis_cq_tuser_bar_2, axis_cq_tuser_bar_0}),
/*
* Fields
@ -208,7 +208,7 @@ cq_demux_inst (
.select(select)
);
assign select[1] = bar_id == 3'd1;
assign select[1] = bar_id == 3'd2;
assign select[0] = bar_id == 3'd0;
axis_arb_mux #(
@ -228,14 +228,14 @@ cc_mux_inst (
/*
* AXI inputs
*/
.s_axis_tdata({axis_cc_tdata_bar_1, axis_cc_tdata_bar_0}),
.s_axis_tkeep({axis_cc_tkeep_bar_1, axis_cc_tkeep_bar_0}),
.s_axis_tvalid({axis_cc_tvalid_bar_1, axis_cc_tvalid_bar_0}),
.s_axis_tready({axis_cc_tready_bar_1, axis_cc_tready_bar_0}),
.s_axis_tlast({axis_cc_tlast_bar_1, axis_cc_tlast_bar_0}),
.s_axis_tdata({axis_cc_tdata_bar_2, axis_cc_tdata_bar_0}),
.s_axis_tkeep({axis_cc_tkeep_bar_2, axis_cc_tkeep_bar_0}),
.s_axis_tvalid({axis_cc_tvalid_bar_2, axis_cc_tvalid_bar_0}),
.s_axis_tready({axis_cc_tready_bar_2, axis_cc_tready_bar_0}),
.s_axis_tlast({axis_cc_tlast_bar_2, axis_cc_tlast_bar_0}),
.s_axis_tid(0),
.s_axis_tdest(0),
.s_axis_tuser({axis_cc_tuser_bar_1, axis_cc_tuser_bar_0}),
.s_axis_tuser({axis_cc_tuser_bar_2, axis_cc_tuser_bar_0}),
/*
* AXI output
@ -694,22 +694,22 @@ pcie_us_axi_master_inst (
/*
* AXI input (CQ)
*/
.s_axis_cq_tdata(axis_cq_tdata_bar_1),
.s_axis_cq_tkeep(axis_cq_tkeep_bar_1),
.s_axis_cq_tvalid(axis_cq_tvalid_bar_1),
.s_axis_cq_tready(axis_cq_tready_bar_1),
.s_axis_cq_tlast(axis_cq_tlast_bar_1),
.s_axis_cq_tuser(axis_cq_tuser_bar_1),
.s_axis_cq_tdata(axis_cq_tdata_bar_2),
.s_axis_cq_tkeep(axis_cq_tkeep_bar_2),
.s_axis_cq_tvalid(axis_cq_tvalid_bar_2),
.s_axis_cq_tready(axis_cq_tready_bar_2),
.s_axis_cq_tlast(axis_cq_tlast_bar_2),
.s_axis_cq_tuser(axis_cq_tuser_bar_2),
/*
* AXI output (CC)
*/
.m_axis_cc_tdata(axis_cc_tdata_bar_1),
.m_axis_cc_tkeep(axis_cc_tkeep_bar_1),
.m_axis_cc_tvalid(axis_cc_tvalid_bar_1),
.m_axis_cc_tready(axis_cc_tready_bar_1),
.m_axis_cc_tlast(axis_cc_tlast_bar_1),
.m_axis_cc_tuser(axis_cc_tuser_bar_1),
.m_axis_cc_tdata(axis_cc_tdata_bar_2),
.m_axis_cc_tkeep(axis_cc_tkeep_bar_2),
.m_axis_cc_tvalid(axis_cc_tvalid_bar_2),
.m_axis_cc_tready(axis_cc_tready_bar_2),
.m_axis_cc_tlast(axis_cc_tlast_bar_2),
.m_axis_cc_tuser(axis_cc_tuser_bar_2),
/*
* AXI Master output

View File

@ -235,7 +235,7 @@ class TB(object):
self.dev.functions[0].msi_multiple_message_capable = 5
self.dev.functions[0].configure_bar(0, 2**22)
self.dev.functions[0].configure_bar(1, 2**22)
self.dev.functions[0].configure_bar(2, 2**22)
dut.sw.setimmediatevalue(0)
@ -257,17 +257,17 @@ async def run_test(dut):
mem_base, mem_data = tb.rc.alloc_region(16*1024*1024)
dev_pf0_bar0 = tb.rc.tree[0][0].bar_addr[0]
dev_pf0_bar1 = tb.rc.tree[0][0].bar_addr[1]
dev_pf0_bar2 = tb.rc.tree[0][0].bar_addr[2]
tb.log.info("Test memory write to BAR 1")
tb.log.info("Test memory write to BAR 2")
await tb.rc.mem_write(dev_pf0_bar1, b'\x11\x22\x33\x44')
await tb.rc.mem_write(dev_pf0_bar2, b'\x11\x22\x33\x44')
await Timer(100, 'ns')
tb.log.info("Test memory read from BAR 1")
tb.log.info("Test memory read from BAR 2")
val = await tb.rc.mem_read(dev_pf0_bar1, 4, 1000)
val = await tb.rc.mem_read(dev_pf0_bar2, 4, 1000)
tb.log.info("Read data: %s", val)
assert val == b'\x11\x22\x33\x44'

View File

@ -17,12 +17,16 @@ set_property -dict [list \
CONFIG.pf0_class_code_sub {00} \
CONFIG.pf0_base_class_menu {Network_controller} \
CONFIG.pf0_sub_class_interface_menu {Ethernet_controller} \
CONFIG.pf0_bar0_64bit {true} \
CONFIG.pf0_bar0_prefetchable {true} \
CONFIG.pf0_bar0_scale {Megabytes} \
CONFIG.pf0_bar0_size {16} \
CONFIG.pf0_bar1_enabled {true} \
CONFIG.pf0_bar1_type {Memory} \
CONFIG.pf0_bar1_scale {Megabytes} \
CONFIG.pf0_bar1_size {16} \
CONFIG.pf0_bar2_64bit {true} \
CONFIG.pf0_bar2_prefetchable {true} \
CONFIG.pf0_bar2_enabled {true} \
CONFIG.pf0_bar2_type {Memory} \
CONFIG.pf0_bar2_scale {Megabytes} \
CONFIG.pf0_bar2_size {16} \
CONFIG.vendor_id {1234} \
CONFIG.en_msi_per_vec_masking {true} \
] [get_ips pcie4c_uscale_plus_0]

View File

@ -138,19 +138,19 @@ wire axis_cc_tready_bar_0;
wire axis_cc_tlast_bar_0;
wire [AXIS_PCIE_CC_USER_WIDTH-1:0] axis_cc_tuser_bar_0;
wire [AXIS_PCIE_DATA_WIDTH-1:0] axis_cq_tdata_bar_1;
wire [AXIS_PCIE_KEEP_WIDTH-1:0] axis_cq_tkeep_bar_1;
wire axis_cq_tvalid_bar_1;
wire axis_cq_tready_bar_1;
wire axis_cq_tlast_bar_1;
wire [AXIS_PCIE_CQ_USER_WIDTH-1:0] axis_cq_tuser_bar_1;
wire [AXIS_PCIE_DATA_WIDTH-1:0] axis_cq_tdata_bar_2;
wire [AXIS_PCIE_KEEP_WIDTH-1:0] axis_cq_tkeep_bar_2;
wire axis_cq_tvalid_bar_2;
wire axis_cq_tready_bar_2;
wire axis_cq_tlast_bar_2;
wire [AXIS_PCIE_CQ_USER_WIDTH-1:0] axis_cq_tuser_bar_2;
wire [AXIS_PCIE_DATA_WIDTH-1:0] axis_cc_tdata_bar_1;
wire [AXIS_PCIE_KEEP_WIDTH-1:0] axis_cc_tkeep_bar_1;
wire axis_cc_tvalid_bar_1;
wire axis_cc_tready_bar_1;
wire axis_cc_tlast_bar_1;
wire [AXIS_PCIE_CC_USER_WIDTH-1:0] axis_cc_tuser_bar_1;
wire [AXIS_PCIE_DATA_WIDTH-1:0] axis_cc_tdata_bar_2;
wire [AXIS_PCIE_KEEP_WIDTH-1:0] axis_cc_tkeep_bar_2;
wire axis_cc_tvalid_bar_2;
wire axis_cc_tready_bar_2;
wire axis_cc_tlast_bar_2;
wire [AXIS_PCIE_CC_USER_WIDTH-1:0] axis_cc_tuser_bar_2;
wire [2:0] bar_id;
wire [1:0] select;
@ -178,12 +178,12 @@ cq_demux_inst (
/*
* AXI output (CQ)
*/
.m_axis_cq_tdata({axis_cq_tdata_bar_1, axis_cq_tdata_bar_0}),
.m_axis_cq_tkeep({axis_cq_tkeep_bar_1, axis_cq_tkeep_bar_0}),
.m_axis_cq_tvalid({axis_cq_tvalid_bar_1, axis_cq_tvalid_bar_0}),
.m_axis_cq_tready({axis_cq_tready_bar_1, axis_cq_tready_bar_0}),
.m_axis_cq_tlast({axis_cq_tlast_bar_1, axis_cq_tlast_bar_0}),
.m_axis_cq_tuser({axis_cq_tuser_bar_1, axis_cq_tuser_bar_0}),
.m_axis_cq_tdata({axis_cq_tdata_bar_2, axis_cq_tdata_bar_0}),
.m_axis_cq_tkeep({axis_cq_tkeep_bar_2, axis_cq_tkeep_bar_0}),
.m_axis_cq_tvalid({axis_cq_tvalid_bar_2, axis_cq_tvalid_bar_0}),
.m_axis_cq_tready({axis_cq_tready_bar_2, axis_cq_tready_bar_0}),
.m_axis_cq_tlast({axis_cq_tlast_bar_2, axis_cq_tlast_bar_0}),
.m_axis_cq_tuser({axis_cq_tuser_bar_2, axis_cq_tuser_bar_0}),
/*
* Fields
@ -202,7 +202,7 @@ cq_demux_inst (
.select(select)
);
assign select[1] = bar_id == 3'd1;
assign select[1] = bar_id == 3'd2;
assign select[0] = bar_id == 3'd0;
axis_arb_mux #(
@ -222,14 +222,14 @@ cc_mux_inst (
/*
* AXI inputs
*/
.s_axis_tdata({axis_cc_tdata_bar_1, axis_cc_tdata_bar_0}),
.s_axis_tkeep({axis_cc_tkeep_bar_1, axis_cc_tkeep_bar_0}),
.s_axis_tvalid({axis_cc_tvalid_bar_1, axis_cc_tvalid_bar_0}),
.s_axis_tready({axis_cc_tready_bar_1, axis_cc_tready_bar_0}),
.s_axis_tlast({axis_cc_tlast_bar_1, axis_cc_tlast_bar_0}),
.s_axis_tdata({axis_cc_tdata_bar_2, axis_cc_tdata_bar_0}),
.s_axis_tkeep({axis_cc_tkeep_bar_2, axis_cc_tkeep_bar_0}),
.s_axis_tvalid({axis_cc_tvalid_bar_2, axis_cc_tvalid_bar_0}),
.s_axis_tready({axis_cc_tready_bar_2, axis_cc_tready_bar_0}),
.s_axis_tlast({axis_cc_tlast_bar_2, axis_cc_tlast_bar_0}),
.s_axis_tid(0),
.s_axis_tdest(0),
.s_axis_tuser({axis_cc_tuser_bar_1, axis_cc_tuser_bar_0}),
.s_axis_tuser({axis_cc_tuser_bar_2, axis_cc_tuser_bar_0}),
/*
* AXI output
@ -686,22 +686,22 @@ pcie_us_axi_master_inst (
/*
* AXI input (CQ)
*/
.s_axis_cq_tdata(axis_cq_tdata_bar_1),
.s_axis_cq_tkeep(axis_cq_tkeep_bar_1),
.s_axis_cq_tvalid(axis_cq_tvalid_bar_1),
.s_axis_cq_tready(axis_cq_tready_bar_1),
.s_axis_cq_tlast(axis_cq_tlast_bar_1),
.s_axis_cq_tuser(axis_cq_tuser_bar_1),
.s_axis_cq_tdata(axis_cq_tdata_bar_2),
.s_axis_cq_tkeep(axis_cq_tkeep_bar_2),
.s_axis_cq_tvalid(axis_cq_tvalid_bar_2),
.s_axis_cq_tready(axis_cq_tready_bar_2),
.s_axis_cq_tlast(axis_cq_tlast_bar_2),
.s_axis_cq_tuser(axis_cq_tuser_bar_2),
/*
* AXI output (CC)
*/
.m_axis_cc_tdata(axis_cc_tdata_bar_1),
.m_axis_cc_tkeep(axis_cc_tkeep_bar_1),
.m_axis_cc_tvalid(axis_cc_tvalid_bar_1),
.m_axis_cc_tready(axis_cc_tready_bar_1),
.m_axis_cc_tlast(axis_cc_tlast_bar_1),
.m_axis_cc_tuser(axis_cc_tuser_bar_1),
.m_axis_cc_tdata(axis_cc_tdata_bar_2),
.m_axis_cc_tkeep(axis_cc_tkeep_bar_2),
.m_axis_cc_tvalid(axis_cc_tvalid_bar_2),
.m_axis_cc_tready(axis_cc_tready_bar_2),
.m_axis_cc_tlast(axis_cc_tlast_bar_2),
.m_axis_cc_tuser(axis_cc_tuser_bar_2),
/*
* AXI Master output

View File

@ -235,7 +235,7 @@ class TB(object):
self.dev.functions[0].msi_multiple_message_capable = 5
self.dev.functions[0].configure_bar(0, 2**22)
self.dev.functions[0].configure_bar(1, 2**22)
self.dev.functions[0].configure_bar(2, 2**22)
async def init(self):
@ -255,17 +255,17 @@ async def run_test(dut):
mem_base, mem_data = tb.rc.alloc_region(16*1024*1024)
dev_pf0_bar0 = tb.rc.tree[0][0].bar_addr[0]
dev_pf0_bar1 = tb.rc.tree[0][0].bar_addr[1]
dev_pf0_bar2 = tb.rc.tree[0][0].bar_addr[2]
tb.log.info("Test memory write to BAR 1")
tb.log.info("Test memory write to BAR 2")
await tb.rc.mem_write(dev_pf0_bar1, b'\x11\x22\x33\x44')
await tb.rc.mem_write(dev_pf0_bar2, b'\x11\x22\x33\x44')
await Timer(100, 'ns')
tb.log.info("Test memory read from BAR 1")
tb.log.info("Test memory read from BAR 2")
val = await tb.rc.mem_read(dev_pf0_bar1, 4, 1000)
val = await tb.rc.mem_read(dev_pf0_bar2, 4, 1000)
tb.log.info("Read data: %s", val)
assert val == b'\x11\x22\x33\x44'

View File

@ -17,12 +17,16 @@ set_property -dict [list \
CONFIG.pf0_class_code_sub {00} \
CONFIG.pf0_base_class_menu {Network_controller} \
CONFIG.pf0_sub_class_interface_menu {Ethernet_controller} \
CONFIG.pf0_bar0_64bit {true} \
CONFIG.pf0_bar0_prefetchable {true} \
CONFIG.pf0_bar0_scale {Megabytes} \
CONFIG.pf0_bar0_size {16} \
CONFIG.pf0_bar1_enabled {true} \
CONFIG.pf0_bar1_type {Memory} \
CONFIG.pf0_bar1_scale {Megabytes} \
CONFIG.pf0_bar1_size {16} \
CONFIG.pf0_bar2_64bit {true} \
CONFIG.pf0_bar2_prefetchable {true} \
CONFIG.pf0_bar2_enabled {true} \
CONFIG.pf0_bar2_type {Memory} \
CONFIG.pf0_bar2_scale {Megabytes} \
CONFIG.pf0_bar2_size {16} \
CONFIG.vendor_id {1234} \
CONFIG.en_msi_per_vec_masking {true} \
] [get_ips pcie4c_uscale_plus_0]

View File

@ -145,19 +145,19 @@ wire axis_cc_tready_bar_0;
wire axis_cc_tlast_bar_0;
wire [AXIS_PCIE_CC_USER_WIDTH-1:0] axis_cc_tuser_bar_0;
wire [AXIS_PCIE_DATA_WIDTH-1:0] axis_cq_tdata_bar_1;
wire [AXIS_PCIE_KEEP_WIDTH-1:0] axis_cq_tkeep_bar_1;
wire axis_cq_tvalid_bar_1;
wire axis_cq_tready_bar_1;
wire axis_cq_tlast_bar_1;
wire [AXIS_PCIE_CQ_USER_WIDTH-1:0] axis_cq_tuser_bar_1;
wire [AXIS_PCIE_DATA_WIDTH-1:0] axis_cq_tdata_bar_2;
wire [AXIS_PCIE_KEEP_WIDTH-1:0] axis_cq_tkeep_bar_2;
wire axis_cq_tvalid_bar_2;
wire axis_cq_tready_bar_2;
wire axis_cq_tlast_bar_2;
wire [AXIS_PCIE_CQ_USER_WIDTH-1:0] axis_cq_tuser_bar_2;
wire [AXIS_PCIE_DATA_WIDTH-1:0] axis_cc_tdata_bar_1;
wire [AXIS_PCIE_KEEP_WIDTH-1:0] axis_cc_tkeep_bar_1;
wire axis_cc_tvalid_bar_1;
wire axis_cc_tready_bar_1;
wire axis_cc_tlast_bar_1;
wire [AXIS_PCIE_CC_USER_WIDTH-1:0] axis_cc_tuser_bar_1;
wire [AXIS_PCIE_DATA_WIDTH-1:0] axis_cc_tdata_bar_2;
wire [AXIS_PCIE_KEEP_WIDTH-1:0] axis_cc_tkeep_bar_2;
wire axis_cc_tvalid_bar_2;
wire axis_cc_tready_bar_2;
wire axis_cc_tlast_bar_2;
wire [AXIS_PCIE_CC_USER_WIDTH-1:0] axis_cc_tuser_bar_2;
wire [2:0] bar_id;
wire [1:0] select;
@ -185,12 +185,12 @@ cq_demux_inst (
/*
* AXI output (CQ)
*/
.m_axis_cq_tdata({axis_cq_tdata_bar_1, axis_cq_tdata_bar_0}),
.m_axis_cq_tkeep({axis_cq_tkeep_bar_1, axis_cq_tkeep_bar_0}),
.m_axis_cq_tvalid({axis_cq_tvalid_bar_1, axis_cq_tvalid_bar_0}),
.m_axis_cq_tready({axis_cq_tready_bar_1, axis_cq_tready_bar_0}),
.m_axis_cq_tlast({axis_cq_tlast_bar_1, axis_cq_tlast_bar_0}),
.m_axis_cq_tuser({axis_cq_tuser_bar_1, axis_cq_tuser_bar_0}),
.m_axis_cq_tdata({axis_cq_tdata_bar_2, axis_cq_tdata_bar_0}),
.m_axis_cq_tkeep({axis_cq_tkeep_bar_2, axis_cq_tkeep_bar_0}),
.m_axis_cq_tvalid({axis_cq_tvalid_bar_2, axis_cq_tvalid_bar_0}),
.m_axis_cq_tready({axis_cq_tready_bar_2, axis_cq_tready_bar_0}),
.m_axis_cq_tlast({axis_cq_tlast_bar_2, axis_cq_tlast_bar_0}),
.m_axis_cq_tuser({axis_cq_tuser_bar_2, axis_cq_tuser_bar_0}),
/*
* Fields
@ -209,7 +209,7 @@ cq_demux_inst (
.select(select)
);
assign select[1] = bar_id == 3'd1;
assign select[1] = bar_id == 3'd2;
assign select[0] = bar_id == 3'd0;
axis_arb_mux #(
@ -229,14 +229,14 @@ cc_mux_inst (
/*
* AXI inputs
*/
.s_axis_tdata({axis_cc_tdata_bar_1, axis_cc_tdata_bar_0}),
.s_axis_tkeep({axis_cc_tkeep_bar_1, axis_cc_tkeep_bar_0}),
.s_axis_tvalid({axis_cc_tvalid_bar_1, axis_cc_tvalid_bar_0}),
.s_axis_tready({axis_cc_tready_bar_1, axis_cc_tready_bar_0}),
.s_axis_tlast({axis_cc_tlast_bar_1, axis_cc_tlast_bar_0}),
.s_axis_tdata({axis_cc_tdata_bar_2, axis_cc_tdata_bar_0}),
.s_axis_tkeep({axis_cc_tkeep_bar_2, axis_cc_tkeep_bar_0}),
.s_axis_tvalid({axis_cc_tvalid_bar_2, axis_cc_tvalid_bar_0}),
.s_axis_tready({axis_cc_tready_bar_2, axis_cc_tready_bar_0}),
.s_axis_tlast({axis_cc_tlast_bar_2, axis_cc_tlast_bar_0}),
.s_axis_tid(0),
.s_axis_tdest(0),
.s_axis_tuser({axis_cc_tuser_bar_1, axis_cc_tuser_bar_0}),
.s_axis_tuser({axis_cc_tuser_bar_2, axis_cc_tuser_bar_0}),
/*
* AXI output
@ -697,22 +697,22 @@ pcie_us_axi_master_inst (
/*
* AXI input (CQ)
*/
.s_axis_cq_tdata(axis_cq_tdata_bar_1),
.s_axis_cq_tkeep(axis_cq_tkeep_bar_1),
.s_axis_cq_tvalid(axis_cq_tvalid_bar_1),
.s_axis_cq_tready(axis_cq_tready_bar_1),
.s_axis_cq_tlast(axis_cq_tlast_bar_1),
.s_axis_cq_tuser(axis_cq_tuser_bar_1),
.s_axis_cq_tdata(axis_cq_tdata_bar_2),
.s_axis_cq_tkeep(axis_cq_tkeep_bar_2),
.s_axis_cq_tvalid(axis_cq_tvalid_bar_2),
.s_axis_cq_tready(axis_cq_tready_bar_2),
.s_axis_cq_tlast(axis_cq_tlast_bar_2),
.s_axis_cq_tuser(axis_cq_tuser_bar_2),
/*
* AXI output (CC)
*/
.m_axis_cc_tdata(axis_cc_tdata_bar_1),
.m_axis_cc_tkeep(axis_cc_tkeep_bar_1),
.m_axis_cc_tvalid(axis_cc_tvalid_bar_1),
.m_axis_cc_tready(axis_cc_tready_bar_1),
.m_axis_cc_tlast(axis_cc_tlast_bar_1),
.m_axis_cc_tuser(axis_cc_tuser_bar_1),
.m_axis_cc_tdata(axis_cc_tdata_bar_2),
.m_axis_cc_tkeep(axis_cc_tkeep_bar_2),
.m_axis_cc_tvalid(axis_cc_tvalid_bar_2),
.m_axis_cc_tready(axis_cc_tready_bar_2),
.m_axis_cc_tlast(axis_cc_tlast_bar_2),
.m_axis_cc_tuser(axis_cc_tuser_bar_2),
/*
* AXI Master output

View File

@ -235,7 +235,7 @@ class TB(object):
self.dev.functions[0].msi_multiple_message_capable = 5
self.dev.functions[0].configure_bar(0, 2**22)
self.dev.functions[0].configure_bar(1, 2**22)
self.dev.functions[0].configure_bar(2, 2**22)
async def init(self):
@ -255,17 +255,17 @@ async def run_test(dut):
mem_base, mem_data = tb.rc.alloc_region(16*1024*1024)
dev_pf0_bar0 = tb.rc.tree[0][0].bar_addr[0]
dev_pf0_bar1 = tb.rc.tree[0][0].bar_addr[1]
dev_pf0_bar2 = tb.rc.tree[0][0].bar_addr[2]
tb.log.info("Test memory write to BAR 1")
tb.log.info("Test memory write to BAR 2")
await tb.rc.mem_write(dev_pf0_bar1, b'\x11\x22\x33\x44')
await tb.rc.mem_write(dev_pf0_bar2, b'\x11\x22\x33\x44')
await Timer(100, 'ns')
tb.log.info("Test memory read from BAR 1")
tb.log.info("Test memory read from BAR 2")
val = await tb.rc.mem_read(dev_pf0_bar1, 4, 1000)
val = await tb.rc.mem_read(dev_pf0_bar2, 4, 1000)
tb.log.info("Read data: %s", val)
assert val == b'\x11\x22\x33\x44'

View File

@ -18,12 +18,16 @@ set_property -dict [list \
CONFIG.pf0_sub_class_interface_menu {Ethernet_controller} \
CONFIG.pf0_class_code_base {02} \
CONFIG.pf0_class_code_sub {00} \
CONFIG.pf0_bar0_64bit {true} \
CONFIG.pf0_bar0_prefetchable {true} \
CONFIG.pf0_bar0_scale {Megabytes} \
CONFIG.pf0_bar0_size {16} \
CONFIG.pf0_bar1_enabled {true} \
CONFIG.pf0_bar1_type {Memory} \
CONFIG.pf0_bar1_scale {Megabytes} \
CONFIG.pf0_bar1_size {16} \
CONFIG.pf0_bar2_64bit {true} \
CONFIG.pf0_bar2_prefetchable {true} \
CONFIG.pf0_bar2_enabled {true} \
CONFIG.pf0_bar2_type {Memory} \
CONFIG.pf0_bar2_scale {Megabytes} \
CONFIG.pf0_bar2_size {16} \
CONFIG.PF0_INTERRUPT_PIN {NONE} \
CONFIG.PF0_MSIX_CAP_TABLE_BIR {BAR_0} \
CONFIG.PF0_MSIX_CAP_PBA_BIR {BAR_0} \

View File

@ -145,19 +145,19 @@ wire axis_cc_tready_bar_0;
wire axis_cc_tlast_bar_0;
wire [AXIS_PCIE_CC_USER_WIDTH-1:0] axis_cc_tuser_bar_0;
wire [AXIS_PCIE_DATA_WIDTH-1:0] axis_cq_tdata_bar_1;
wire [AXIS_PCIE_KEEP_WIDTH-1:0] axis_cq_tkeep_bar_1;
wire axis_cq_tvalid_bar_1;
wire axis_cq_tready_bar_1;
wire axis_cq_tlast_bar_1;
wire [AXIS_PCIE_CQ_USER_WIDTH-1:0] axis_cq_tuser_bar_1;
wire [AXIS_PCIE_DATA_WIDTH-1:0] axis_cq_tdata_bar_2;
wire [AXIS_PCIE_KEEP_WIDTH-1:0] axis_cq_tkeep_bar_2;
wire axis_cq_tvalid_bar_2;
wire axis_cq_tready_bar_2;
wire axis_cq_tlast_bar_2;
wire [AXIS_PCIE_CQ_USER_WIDTH-1:0] axis_cq_tuser_bar_2;
wire [AXIS_PCIE_DATA_WIDTH-1:0] axis_cc_tdata_bar_1;
wire [AXIS_PCIE_KEEP_WIDTH-1:0] axis_cc_tkeep_bar_1;
wire axis_cc_tvalid_bar_1;
wire axis_cc_tready_bar_1;
wire axis_cc_tlast_bar_1;
wire [AXIS_PCIE_CC_USER_WIDTH-1:0] axis_cc_tuser_bar_1;
wire [AXIS_PCIE_DATA_WIDTH-1:0] axis_cc_tdata_bar_2;
wire [AXIS_PCIE_KEEP_WIDTH-1:0] axis_cc_tkeep_bar_2;
wire axis_cc_tvalid_bar_2;
wire axis_cc_tready_bar_2;
wire axis_cc_tlast_bar_2;
wire [AXIS_PCIE_CC_USER_WIDTH-1:0] axis_cc_tuser_bar_2;
wire [2:0] bar_id;
wire [1:0] select;
@ -185,12 +185,12 @@ cq_demux_inst (
/*
* AXI output (CQ)
*/
.m_axis_cq_tdata({axis_cq_tdata_bar_1, axis_cq_tdata_bar_0}),
.m_axis_cq_tkeep({axis_cq_tkeep_bar_1, axis_cq_tkeep_bar_0}),
.m_axis_cq_tvalid({axis_cq_tvalid_bar_1, axis_cq_tvalid_bar_0}),
.m_axis_cq_tready({axis_cq_tready_bar_1, axis_cq_tready_bar_0}),
.m_axis_cq_tlast({axis_cq_tlast_bar_1, axis_cq_tlast_bar_0}),
.m_axis_cq_tuser({axis_cq_tuser_bar_1, axis_cq_tuser_bar_0}),
.m_axis_cq_tdata({axis_cq_tdata_bar_2, axis_cq_tdata_bar_0}),
.m_axis_cq_tkeep({axis_cq_tkeep_bar_2, axis_cq_tkeep_bar_0}),
.m_axis_cq_tvalid({axis_cq_tvalid_bar_2, axis_cq_tvalid_bar_0}),
.m_axis_cq_tready({axis_cq_tready_bar_2, axis_cq_tready_bar_0}),
.m_axis_cq_tlast({axis_cq_tlast_bar_2, axis_cq_tlast_bar_0}),
.m_axis_cq_tuser({axis_cq_tuser_bar_2, axis_cq_tuser_bar_0}),
/*
* Fields
@ -209,7 +209,7 @@ cq_demux_inst (
.select(select)
);
assign select[1] = bar_id == 3'd1;
assign select[1] = bar_id == 3'd2;
assign select[0] = bar_id == 3'd0;
axis_arb_mux #(
@ -229,14 +229,14 @@ cc_mux_inst (
/*
* AXI inputs
*/
.s_axis_tdata({axis_cc_tdata_bar_1, axis_cc_tdata_bar_0}),
.s_axis_tkeep({axis_cc_tkeep_bar_1, axis_cc_tkeep_bar_0}),
.s_axis_tvalid({axis_cc_tvalid_bar_1, axis_cc_tvalid_bar_0}),
.s_axis_tready({axis_cc_tready_bar_1, axis_cc_tready_bar_0}),
.s_axis_tlast({axis_cc_tlast_bar_1, axis_cc_tlast_bar_0}),
.s_axis_tdata({axis_cc_tdata_bar_2, axis_cc_tdata_bar_0}),
.s_axis_tkeep({axis_cc_tkeep_bar_2, axis_cc_tkeep_bar_0}),
.s_axis_tvalid({axis_cc_tvalid_bar_2, axis_cc_tvalid_bar_0}),
.s_axis_tready({axis_cc_tready_bar_2, axis_cc_tready_bar_0}),
.s_axis_tlast({axis_cc_tlast_bar_2, axis_cc_tlast_bar_0}),
.s_axis_tid(0),
.s_axis_tdest(0),
.s_axis_tuser({axis_cc_tuser_bar_1, axis_cc_tuser_bar_0}),
.s_axis_tuser({axis_cc_tuser_bar_2, axis_cc_tuser_bar_0}),
/*
* AXI output
@ -699,22 +699,22 @@ pcie_us_axi_master_inst (
/*
* AXI input (CQ)
*/
.s_axis_cq_tdata(axis_cq_tdata_bar_1),
.s_axis_cq_tkeep(axis_cq_tkeep_bar_1),
.s_axis_cq_tvalid(axis_cq_tvalid_bar_1),
.s_axis_cq_tready(axis_cq_tready_bar_1),
.s_axis_cq_tlast(axis_cq_tlast_bar_1),
.s_axis_cq_tuser(axis_cq_tuser_bar_1),
.s_axis_cq_tdata(axis_cq_tdata_bar_2),
.s_axis_cq_tkeep(axis_cq_tkeep_bar_2),
.s_axis_cq_tvalid(axis_cq_tvalid_bar_2),
.s_axis_cq_tready(axis_cq_tready_bar_2),
.s_axis_cq_tlast(axis_cq_tlast_bar_2),
.s_axis_cq_tuser(axis_cq_tuser_bar_2),
/*
* AXI output (CC)
*/
.m_axis_cc_tdata(axis_cc_tdata_bar_1),
.m_axis_cc_tkeep(axis_cc_tkeep_bar_1),
.m_axis_cc_tvalid(axis_cc_tvalid_bar_1),
.m_axis_cc_tready(axis_cc_tready_bar_1),
.m_axis_cc_tlast(axis_cc_tlast_bar_1),
.m_axis_cc_tuser(axis_cc_tuser_bar_1),
.m_axis_cc_tdata(axis_cc_tdata_bar_2),
.m_axis_cc_tkeep(axis_cc_tkeep_bar_2),
.m_axis_cc_tvalid(axis_cc_tvalid_bar_2),
.m_axis_cc_tready(axis_cc_tready_bar_2),
.m_axis_cc_tlast(axis_cc_tlast_bar_2),
.m_axis_cc_tuser(axis_cc_tuser_bar_2),
/*
* AXI Master output

View File

@ -229,7 +229,7 @@ class TB(object):
self.dev.functions[0].msi_multiple_message_capable = 5
self.dev.functions[0].configure_bar(0, 2**22)
self.dev.functions[0].configure_bar(1, 2**22)
self.dev.functions[0].configure_bar(2, 2**22)
async def init(self):
@ -249,17 +249,17 @@ async def run_test(dut):
mem_base, mem_data = tb.rc.alloc_region(16*1024*1024)
dev_pf0_bar0 = tb.rc.tree[0][0].bar_addr[0]
dev_pf0_bar1 = tb.rc.tree[0][0].bar_addr[1]
dev_pf0_bar2 = tb.rc.tree[0][0].bar_addr[2]
tb.log.info("Test memory write to BAR 1")
tb.log.info("Test memory write to BAR 2")
await tb.rc.mem_write(dev_pf0_bar1, b'\x11\x22\x33\x44')
await tb.rc.mem_write(dev_pf0_bar2, b'\x11\x22\x33\x44')
await Timer(100, 'ns')
tb.log.info("Test memory read from BAR 1")
tb.log.info("Test memory read from BAR 2")
val = await tb.rc.mem_read(dev_pf0_bar1, 4, 1000)
val = await tb.rc.mem_read(dev_pf0_bar2, 4, 1000)
tb.log.info("Read data: %s", val)
assert val == b'\x11\x22\x33\x44'

View File

@ -19,12 +19,16 @@ set_property -dict [list \
CONFIG.pf0_class_code_sub {00} \
CONFIG.pf0_base_class_menu {Network_controller} \
CONFIG.pf0_sub_class_interface_menu {Ethernet_controller} \
CONFIG.pf0_bar0_64bit {true} \
CONFIG.pf0_bar0_prefetchable {true} \
CONFIG.pf0_bar0_scale {Megabytes} \
CONFIG.pf0_bar0_size {16} \
CONFIG.pf0_bar1_enabled {true} \
CONFIG.pf0_bar1_type {Memory} \
CONFIG.pf0_bar1_scale {Megabytes} \
CONFIG.pf0_bar1_size {16} \
CONFIG.pf0_bar2_64bit {true} \
CONFIG.pf0_bar2_prefetchable {true} \
CONFIG.pf0_bar2_enabled {true} \
CONFIG.pf0_bar2_type {Memory} \
CONFIG.pf0_bar2_scale {Megabytes} \
CONFIG.pf0_bar2_size {16} \
CONFIG.vendor_id {1234} \
CONFIG.en_msi_per_vec_masking {true} \
CONFIG.mode_selection {Advanced} \

View File

@ -145,19 +145,19 @@ wire axis_cc_tready_bar_0;
wire axis_cc_tlast_bar_0;
wire [AXIS_PCIE_CC_USER_WIDTH-1:0] axis_cc_tuser_bar_0;
wire [AXIS_PCIE_DATA_WIDTH-1:0] axis_cq_tdata_bar_1;
wire [AXIS_PCIE_KEEP_WIDTH-1:0] axis_cq_tkeep_bar_1;
wire axis_cq_tvalid_bar_1;
wire axis_cq_tready_bar_1;
wire axis_cq_tlast_bar_1;
wire [AXIS_PCIE_CQ_USER_WIDTH-1:0] axis_cq_tuser_bar_1;
wire [AXIS_PCIE_DATA_WIDTH-1:0] axis_cq_tdata_bar_2;
wire [AXIS_PCIE_KEEP_WIDTH-1:0] axis_cq_tkeep_bar_2;
wire axis_cq_tvalid_bar_2;
wire axis_cq_tready_bar_2;
wire axis_cq_tlast_bar_2;
wire [AXIS_PCIE_CQ_USER_WIDTH-1:0] axis_cq_tuser_bar_2;
wire [AXIS_PCIE_DATA_WIDTH-1:0] axis_cc_tdata_bar_1;
wire [AXIS_PCIE_KEEP_WIDTH-1:0] axis_cc_tkeep_bar_1;
wire axis_cc_tvalid_bar_1;
wire axis_cc_tready_bar_1;
wire axis_cc_tlast_bar_1;
wire [AXIS_PCIE_CC_USER_WIDTH-1:0] axis_cc_tuser_bar_1;
wire [AXIS_PCIE_DATA_WIDTH-1:0] axis_cc_tdata_bar_2;
wire [AXIS_PCIE_KEEP_WIDTH-1:0] axis_cc_tkeep_bar_2;
wire axis_cc_tvalid_bar_2;
wire axis_cc_tready_bar_2;
wire axis_cc_tlast_bar_2;
wire [AXIS_PCIE_CC_USER_WIDTH-1:0] axis_cc_tuser_bar_2;
wire [2:0] bar_id;
wire [1:0] select;
@ -185,12 +185,12 @@ cq_demux_inst (
/*
* AXI output (CQ)
*/
.m_axis_cq_tdata({axis_cq_tdata_bar_1, axis_cq_tdata_bar_0}),
.m_axis_cq_tkeep({axis_cq_tkeep_bar_1, axis_cq_tkeep_bar_0}),
.m_axis_cq_tvalid({axis_cq_tvalid_bar_1, axis_cq_tvalid_bar_0}),
.m_axis_cq_tready({axis_cq_tready_bar_1, axis_cq_tready_bar_0}),
.m_axis_cq_tlast({axis_cq_tlast_bar_1, axis_cq_tlast_bar_0}),
.m_axis_cq_tuser({axis_cq_tuser_bar_1, axis_cq_tuser_bar_0}),
.m_axis_cq_tdata({axis_cq_tdata_bar_2, axis_cq_tdata_bar_0}),
.m_axis_cq_tkeep({axis_cq_tkeep_bar_2, axis_cq_tkeep_bar_0}),
.m_axis_cq_tvalid({axis_cq_tvalid_bar_2, axis_cq_tvalid_bar_0}),
.m_axis_cq_tready({axis_cq_tready_bar_2, axis_cq_tready_bar_0}),
.m_axis_cq_tlast({axis_cq_tlast_bar_2, axis_cq_tlast_bar_0}),
.m_axis_cq_tuser({axis_cq_tuser_bar_2, axis_cq_tuser_bar_0}),
/*
* Fields
@ -209,7 +209,7 @@ cq_demux_inst (
.select(select)
);
assign select[1] = bar_id == 3'd1;
assign select[1] = bar_id == 3'd2;
assign select[0] = bar_id == 3'd0;
axis_arb_mux #(
@ -229,14 +229,14 @@ cc_mux_inst (
/*
* AXI inputs
*/
.s_axis_tdata({axis_cc_tdata_bar_1, axis_cc_tdata_bar_0}),
.s_axis_tkeep({axis_cc_tkeep_bar_1, axis_cc_tkeep_bar_0}),
.s_axis_tvalid({axis_cc_tvalid_bar_1, axis_cc_tvalid_bar_0}),
.s_axis_tready({axis_cc_tready_bar_1, axis_cc_tready_bar_0}),
.s_axis_tlast({axis_cc_tlast_bar_1, axis_cc_tlast_bar_0}),
.s_axis_tdata({axis_cc_tdata_bar_2, axis_cc_tdata_bar_0}),
.s_axis_tkeep({axis_cc_tkeep_bar_2, axis_cc_tkeep_bar_0}),
.s_axis_tvalid({axis_cc_tvalid_bar_2, axis_cc_tvalid_bar_0}),
.s_axis_tready({axis_cc_tready_bar_2, axis_cc_tready_bar_0}),
.s_axis_tlast({axis_cc_tlast_bar_2, axis_cc_tlast_bar_0}),
.s_axis_tid(0),
.s_axis_tdest(0),
.s_axis_tuser({axis_cc_tuser_bar_1, axis_cc_tuser_bar_0}),
.s_axis_tuser({axis_cc_tuser_bar_2, axis_cc_tuser_bar_0}),
/*
* AXI output
@ -697,22 +697,22 @@ pcie_us_axi_master_inst (
/*
* AXI input (CQ)
*/
.s_axis_cq_tdata(axis_cq_tdata_bar_1),
.s_axis_cq_tkeep(axis_cq_tkeep_bar_1),
.s_axis_cq_tvalid(axis_cq_tvalid_bar_1),
.s_axis_cq_tready(axis_cq_tready_bar_1),
.s_axis_cq_tlast(axis_cq_tlast_bar_1),
.s_axis_cq_tuser(axis_cq_tuser_bar_1),
.s_axis_cq_tdata(axis_cq_tdata_bar_2),
.s_axis_cq_tkeep(axis_cq_tkeep_bar_2),
.s_axis_cq_tvalid(axis_cq_tvalid_bar_2),
.s_axis_cq_tready(axis_cq_tready_bar_2),
.s_axis_cq_tlast(axis_cq_tlast_bar_2),
.s_axis_cq_tuser(axis_cq_tuser_bar_2),
/*
* AXI output (CC)
*/
.m_axis_cc_tdata(axis_cc_tdata_bar_1),
.m_axis_cc_tkeep(axis_cc_tkeep_bar_1),
.m_axis_cc_tvalid(axis_cc_tvalid_bar_1),
.m_axis_cc_tready(axis_cc_tready_bar_1),
.m_axis_cc_tlast(axis_cc_tlast_bar_1),
.m_axis_cc_tuser(axis_cc_tuser_bar_1),
.m_axis_cc_tdata(axis_cc_tdata_bar_2),
.m_axis_cc_tkeep(axis_cc_tkeep_bar_2),
.m_axis_cc_tvalid(axis_cc_tvalid_bar_2),
.m_axis_cc_tready(axis_cc_tready_bar_2),
.m_axis_cc_tlast(axis_cc_tlast_bar_2),
.m_axis_cc_tuser(axis_cc_tuser_bar_2),
/*
* AXI Master output

View File

@ -235,7 +235,7 @@ class TB(object):
self.dev.functions[0].msi_multiple_message_capable = 5
self.dev.functions[0].configure_bar(0, 2**22)
self.dev.functions[0].configure_bar(1, 2**22)
self.dev.functions[0].configure_bar(2, 2**22)
async def init(self):
@ -255,17 +255,17 @@ async def run_test(dut):
mem_base, mem_data = tb.rc.alloc_region(16*1024*1024)
dev_pf0_bar0 = tb.rc.tree[0][0].bar_addr[0]
dev_pf0_bar1 = tb.rc.tree[0][0].bar_addr[1]
dev_pf0_bar2 = tb.rc.tree[0][0].bar_addr[2]
tb.log.info("Test memory write to BAR 1")
tb.log.info("Test memory write to BAR 2")
await tb.rc.mem_write(dev_pf0_bar1, b'\x11\x22\x33\x44')
await tb.rc.mem_write(dev_pf0_bar2, b'\x11\x22\x33\x44')
await Timer(100, 'ns')
tb.log.info("Test memory read from BAR 1")
tb.log.info("Test memory read from BAR 2")
val = await tb.rc.mem_read(dev_pf0_bar1, 4, 1000)
val = await tb.rc.mem_read(dev_pf0_bar2, 4, 1000)
tb.log.info("Read data: %s", val)
assert val == b'\x11\x22\x33\x44'

View File

@ -18,12 +18,16 @@ set_property -dict [list \
CONFIG.pf0_sub_class_interface_menu {Ethernet_controller} \
CONFIG.pf0_class_code_base {02} \
CONFIG.pf0_class_code_sub {00} \
CONFIG.pf0_bar0_64bit {true} \
CONFIG.pf0_bar0_prefetchable {true} \
CONFIG.pf0_bar0_scale {Megabytes} \
CONFIG.pf0_bar0_size {16} \
CONFIG.pf0_bar1_enabled {true} \
CONFIG.pf0_bar1_type {Memory} \
CONFIG.pf0_bar1_scale {Megabytes} \
CONFIG.pf0_bar1_size {16} \
CONFIG.pf0_bar2_64bit {true} \
CONFIG.pf0_bar2_prefetchable {true} \
CONFIG.pf0_bar2_enabled {true} \
CONFIG.pf0_bar2_type {Memory} \
CONFIG.pf0_bar2_scale {Megabytes} \
CONFIG.pf0_bar2_size {16} \
CONFIG.PF0_INTERRUPT_PIN {NONE} \
CONFIG.PF0_MSIX_CAP_TABLE_BIR {BAR_0} \
CONFIG.PF0_MSIX_CAP_PBA_BIR {BAR_0} \

View File

@ -145,19 +145,19 @@ wire axis_cc_tready_bar_0;
wire axis_cc_tlast_bar_0;
wire [32:0] axis_cc_tuser_bar_0;
wire [AXIS_PCIE_DATA_WIDTH-1:0] axis_cq_tdata_bar_1;
wire [AXIS_PCIE_KEEP_WIDTH-1:0] axis_cq_tkeep_bar_1;
wire axis_cq_tvalid_bar_1;
wire axis_cq_tready_bar_1;
wire axis_cq_tlast_bar_1;
wire [84:0] axis_cq_tuser_bar_1;
wire [AXIS_PCIE_DATA_WIDTH-1:0] axis_cq_tdata_bar_2;
wire [AXIS_PCIE_KEEP_WIDTH-1:0] axis_cq_tkeep_bar_2;
wire axis_cq_tvalid_bar_2;
wire axis_cq_tready_bar_2;
wire axis_cq_tlast_bar_2;
wire [84:0] axis_cq_tuser_bar_2;
wire [AXIS_PCIE_DATA_WIDTH-1:0] axis_cc_tdata_bar_1;
wire [AXIS_PCIE_KEEP_WIDTH-1:0] axis_cc_tkeep_bar_1;
wire axis_cc_tvalid_bar_1;
wire axis_cc_tready_bar_1;
wire axis_cc_tlast_bar_1;
wire [32:0] axis_cc_tuser_bar_1;
wire [AXIS_PCIE_DATA_WIDTH-1:0] axis_cc_tdata_bar_2;
wire [AXIS_PCIE_KEEP_WIDTH-1:0] axis_cc_tkeep_bar_2;
wire axis_cc_tvalid_bar_2;
wire axis_cc_tready_bar_2;
wire axis_cc_tlast_bar_2;
wire [32:0] axis_cc_tuser_bar_2;
wire [2:0] bar_id;
wire [1:0] select;
@ -184,12 +184,12 @@ cq_demux_inst (
/*
* AXI output (CQ)
*/
.m_axis_cq_tdata({axis_cq_tdata_bar_1, axis_cq_tdata_bar_0}),
.m_axis_cq_tkeep({axis_cq_tkeep_bar_1, axis_cq_tkeep_bar_0}),
.m_axis_cq_tvalid({axis_cq_tvalid_bar_1, axis_cq_tvalid_bar_0}),
.m_axis_cq_tready({axis_cq_tready_bar_1, axis_cq_tready_bar_0}),
.m_axis_cq_tlast({axis_cq_tlast_bar_1, axis_cq_tlast_bar_0}),
.m_axis_cq_tuser({axis_cq_tuser_bar_1, axis_cq_tuser_bar_0}),
.m_axis_cq_tdata({axis_cq_tdata_bar_2, axis_cq_tdata_bar_0}),
.m_axis_cq_tkeep({axis_cq_tkeep_bar_2, axis_cq_tkeep_bar_0}),
.m_axis_cq_tvalid({axis_cq_tvalid_bar_2, axis_cq_tvalid_bar_0}),
.m_axis_cq_tready({axis_cq_tready_bar_2, axis_cq_tready_bar_0}),
.m_axis_cq_tlast({axis_cq_tlast_bar_2, axis_cq_tlast_bar_0}),
.m_axis_cq_tuser({axis_cq_tuser_bar_2, axis_cq_tuser_bar_0}),
/*
* Fields
@ -208,7 +208,7 @@ cq_demux_inst (
.select(select)
);
assign select[1] = bar_id == 3'd1;
assign select[1] = bar_id == 3'd2;
assign select[0] = bar_id == 3'd0;
axis_arb_mux #(
@ -228,14 +228,14 @@ cc_mux_inst (
/*
* AXI inputs
*/
.s_axis_tdata({axis_cc_tdata_bar_1, axis_cc_tdata_bar_0}),
.s_axis_tkeep({axis_cc_tkeep_bar_1, axis_cc_tkeep_bar_0}),
.s_axis_tvalid({axis_cc_tvalid_bar_1, axis_cc_tvalid_bar_0}),
.s_axis_tready({axis_cc_tready_bar_1, axis_cc_tready_bar_0}),
.s_axis_tlast({axis_cc_tlast_bar_1, axis_cc_tlast_bar_0}),
.s_axis_tdata({axis_cc_tdata_bar_2, axis_cc_tdata_bar_0}),
.s_axis_tkeep({axis_cc_tkeep_bar_2, axis_cc_tkeep_bar_0}),
.s_axis_tvalid({axis_cc_tvalid_bar_2, axis_cc_tvalid_bar_0}),
.s_axis_tready({axis_cc_tready_bar_2, axis_cc_tready_bar_0}),
.s_axis_tlast({axis_cc_tlast_bar_2, axis_cc_tlast_bar_0}),
.s_axis_tid(0),
.s_axis_tdest(0),
.s_axis_tuser({axis_cc_tuser_bar_1, axis_cc_tuser_bar_0}),
.s_axis_tuser({axis_cc_tuser_bar_2, axis_cc_tuser_bar_0}),
/*
* AXI output
@ -691,22 +691,22 @@ pcie_us_axi_master_inst (
/*
* AXI input (CQ)
*/
.s_axis_cq_tdata(axis_cq_tdata_bar_1),
.s_axis_cq_tkeep(axis_cq_tkeep_bar_1),
.s_axis_cq_tvalid(axis_cq_tvalid_bar_1),
.s_axis_cq_tready(axis_cq_tready_bar_1),
.s_axis_cq_tlast(axis_cq_tlast_bar_1),
.s_axis_cq_tuser(axis_cq_tuser_bar_1),
.s_axis_cq_tdata(axis_cq_tdata_bar_2),
.s_axis_cq_tkeep(axis_cq_tkeep_bar_2),
.s_axis_cq_tvalid(axis_cq_tvalid_bar_2),
.s_axis_cq_tready(axis_cq_tready_bar_2),
.s_axis_cq_tlast(axis_cq_tlast_bar_2),
.s_axis_cq_tuser(axis_cq_tuser_bar_2),
/*
* AXI output (CC)
*/
.m_axis_cc_tdata(axis_cc_tdata_bar_1),
.m_axis_cc_tkeep(axis_cc_tkeep_bar_1),
.m_axis_cc_tvalid(axis_cc_tvalid_bar_1),
.m_axis_cc_tready(axis_cc_tready_bar_1),
.m_axis_cc_tlast(axis_cc_tlast_bar_1),
.m_axis_cc_tuser(axis_cc_tuser_bar_1),
.m_axis_cc_tdata(axis_cc_tdata_bar_2),
.m_axis_cc_tkeep(axis_cc_tkeep_bar_2),
.m_axis_cc_tvalid(axis_cc_tvalid_bar_2),
.m_axis_cc_tready(axis_cc_tready_bar_2),
.m_axis_cc_tlast(axis_cc_tlast_bar_2),
.m_axis_cc_tuser(axis_cc_tuser_bar_2),
/*
* AXI Master output

View File

@ -229,7 +229,7 @@ class TB(object):
self.dev.functions[0].msi_multiple_message_capable = 5
self.dev.functions[0].configure_bar(0, 2**22)
self.dev.functions[0].configure_bar(1, 2**22)
self.dev.functions[0].configure_bar(2, 2**22)
dut.btnu.setimmediatevalue(0)
dut.btnl.setimmediatevalue(0)
@ -256,17 +256,17 @@ async def run_test(dut):
mem_base, mem_data = tb.rc.alloc_region(16*1024*1024)
dev_pf0_bar0 = tb.rc.tree[0][0].bar_addr[0]
dev_pf0_bar1 = tb.rc.tree[0][0].bar_addr[1]
dev_pf0_bar2 = tb.rc.tree[0][0].bar_addr[2]
tb.log.info("Test memory write to BAR 1")
tb.log.info("Test memory write to BAR 2")
await tb.rc.mem_write(dev_pf0_bar1, b'\x11\x22\x33\x44')
await tb.rc.mem_write(dev_pf0_bar2, b'\x11\x22\x33\x44')
await Timer(100, 'ns')
tb.log.info("Test memory read from BAR 1")
tb.log.info("Test memory read from BAR 2")
val = await tb.rc.mem_read(dev_pf0_bar1, 4, 1000)
val = await tb.rc.mem_read(dev_pf0_bar2, 4, 1000)
tb.log.info("Read data: %s", val)
assert val == b'\x11\x22\x33\x44'

View File

@ -17,12 +17,16 @@ set_property -dict [list \
CONFIG.pf0_class_code_sub {00} \
CONFIG.pf0_base_class_menu {Network_controller} \
CONFIG.pf0_sub_class_interface_menu {Ethernet_controller} \
CONFIG.pf0_bar0_64bit {true} \
CONFIG.pf0_bar0_prefetchable {true} \
CONFIG.pf0_bar0_scale {Megabytes} \
CONFIG.pf0_bar0_size {16} \
CONFIG.pf0_bar1_enabled {true} \
CONFIG.pf0_bar1_type {Memory} \
CONFIG.pf0_bar1_scale {Megabytes} \
CONFIG.pf0_bar1_size {16} \
CONFIG.pf0_bar2_64bit {true} \
CONFIG.pf0_bar2_prefetchable {true} \
CONFIG.pf0_bar2_enabled {true} \
CONFIG.pf0_bar2_type {Memory} \
CONFIG.pf0_bar2_scale {Megabytes} \
CONFIG.pf0_bar2_size {16} \
CONFIG.vendor_id {1234} \
CONFIG.en_msi_per_vec_masking {true} \
] [get_ips pcie4_uscale_plus_0]

View File

@ -149,19 +149,19 @@ wire axis_cc_tready_bar_0;
wire axis_cc_tlast_bar_0;
wire [AXIS_PCIE_CC_USER_WIDTH-1:0] axis_cc_tuser_bar_0;
wire [AXIS_PCIE_DATA_WIDTH-1:0] axis_cq_tdata_bar_1;
wire [AXIS_PCIE_KEEP_WIDTH-1:0] axis_cq_tkeep_bar_1;
wire axis_cq_tvalid_bar_1;
wire axis_cq_tready_bar_1;
wire axis_cq_tlast_bar_1;
wire [AXIS_PCIE_CQ_USER_WIDTH-1:0] axis_cq_tuser_bar_1;
wire [AXIS_PCIE_DATA_WIDTH-1:0] axis_cq_tdata_bar_2;
wire [AXIS_PCIE_KEEP_WIDTH-1:0] axis_cq_tkeep_bar_2;
wire axis_cq_tvalid_bar_2;
wire axis_cq_tready_bar_2;
wire axis_cq_tlast_bar_2;
wire [AXIS_PCIE_CQ_USER_WIDTH-1:0] axis_cq_tuser_bar_2;
wire [AXIS_PCIE_DATA_WIDTH-1:0] axis_cc_tdata_bar_1;
wire [AXIS_PCIE_KEEP_WIDTH-1:0] axis_cc_tkeep_bar_1;
wire axis_cc_tvalid_bar_1;
wire axis_cc_tready_bar_1;
wire axis_cc_tlast_bar_1;
wire [AXIS_PCIE_CC_USER_WIDTH-1:0] axis_cc_tuser_bar_1;
wire [AXIS_PCIE_DATA_WIDTH-1:0] axis_cc_tdata_bar_2;
wire [AXIS_PCIE_KEEP_WIDTH-1:0] axis_cc_tkeep_bar_2;
wire axis_cc_tvalid_bar_2;
wire axis_cc_tready_bar_2;
wire axis_cc_tlast_bar_2;
wire [AXIS_PCIE_CC_USER_WIDTH-1:0] axis_cc_tuser_bar_2;
wire [2:0] bar_id;
wire [1:0] select;
@ -189,12 +189,12 @@ cq_demux_inst (
/*
* AXI output (CQ)
*/
.m_axis_cq_tdata({axis_cq_tdata_bar_1, axis_cq_tdata_bar_0}),
.m_axis_cq_tkeep({axis_cq_tkeep_bar_1, axis_cq_tkeep_bar_0}),
.m_axis_cq_tvalid({axis_cq_tvalid_bar_1, axis_cq_tvalid_bar_0}),
.m_axis_cq_tready({axis_cq_tready_bar_1, axis_cq_tready_bar_0}),
.m_axis_cq_tlast({axis_cq_tlast_bar_1, axis_cq_tlast_bar_0}),
.m_axis_cq_tuser({axis_cq_tuser_bar_1, axis_cq_tuser_bar_0}),
.m_axis_cq_tdata({axis_cq_tdata_bar_2, axis_cq_tdata_bar_0}),
.m_axis_cq_tkeep({axis_cq_tkeep_bar_2, axis_cq_tkeep_bar_0}),
.m_axis_cq_tvalid({axis_cq_tvalid_bar_2, axis_cq_tvalid_bar_0}),
.m_axis_cq_tready({axis_cq_tready_bar_2, axis_cq_tready_bar_0}),
.m_axis_cq_tlast({axis_cq_tlast_bar_2, axis_cq_tlast_bar_0}),
.m_axis_cq_tuser({axis_cq_tuser_bar_2, axis_cq_tuser_bar_0}),
/*
* Fields
@ -213,7 +213,7 @@ cq_demux_inst (
.select(select)
);
assign select[1] = bar_id == 3'd1;
assign select[1] = bar_id == 3'd2;
assign select[0] = bar_id == 3'd0;
axis_arb_mux #(
@ -233,14 +233,14 @@ cc_mux_inst (
/*
* AXI inputs
*/
.s_axis_tdata({axis_cc_tdata_bar_1, axis_cc_tdata_bar_0}),
.s_axis_tkeep({axis_cc_tkeep_bar_1, axis_cc_tkeep_bar_0}),
.s_axis_tvalid({axis_cc_tvalid_bar_1, axis_cc_tvalid_bar_0}),
.s_axis_tready({axis_cc_tready_bar_1, axis_cc_tready_bar_0}),
.s_axis_tlast({axis_cc_tlast_bar_1, axis_cc_tlast_bar_0}),
.s_axis_tdata({axis_cc_tdata_bar_2, axis_cc_tdata_bar_0}),
.s_axis_tkeep({axis_cc_tkeep_bar_2, axis_cc_tkeep_bar_0}),
.s_axis_tvalid({axis_cc_tvalid_bar_2, axis_cc_tvalid_bar_0}),
.s_axis_tready({axis_cc_tready_bar_2, axis_cc_tready_bar_0}),
.s_axis_tlast({axis_cc_tlast_bar_2, axis_cc_tlast_bar_0}),
.s_axis_tid(0),
.s_axis_tdest(0),
.s_axis_tuser({axis_cc_tuser_bar_1, axis_cc_tuser_bar_0}),
.s_axis_tuser({axis_cc_tuser_bar_2, axis_cc_tuser_bar_0}),
/*
* AXI output
@ -699,22 +699,22 @@ pcie_us_axi_master_inst (
/*
* AXI input (CQ)
*/
.s_axis_cq_tdata(axis_cq_tdata_bar_1),
.s_axis_cq_tkeep(axis_cq_tkeep_bar_1),
.s_axis_cq_tvalid(axis_cq_tvalid_bar_1),
.s_axis_cq_tready(axis_cq_tready_bar_1),
.s_axis_cq_tlast(axis_cq_tlast_bar_1),
.s_axis_cq_tuser(axis_cq_tuser_bar_1),
.s_axis_cq_tdata(axis_cq_tdata_bar_2),
.s_axis_cq_tkeep(axis_cq_tkeep_bar_2),
.s_axis_cq_tvalid(axis_cq_tvalid_bar_2),
.s_axis_cq_tready(axis_cq_tready_bar_2),
.s_axis_cq_tlast(axis_cq_tlast_bar_2),
.s_axis_cq_tuser(axis_cq_tuser_bar_2),
/*
* AXI output (CC)
*/
.m_axis_cc_tdata(axis_cc_tdata_bar_1),
.m_axis_cc_tkeep(axis_cc_tkeep_bar_1),
.m_axis_cc_tvalid(axis_cc_tvalid_bar_1),
.m_axis_cc_tready(axis_cc_tready_bar_1),
.m_axis_cc_tlast(axis_cc_tlast_bar_1),
.m_axis_cc_tuser(axis_cc_tuser_bar_1),
.m_axis_cc_tdata(axis_cc_tdata_bar_2),
.m_axis_cc_tkeep(axis_cc_tkeep_bar_2),
.m_axis_cc_tvalid(axis_cc_tvalid_bar_2),
.m_axis_cc_tready(axis_cc_tready_bar_2),
.m_axis_cc_tlast(axis_cc_tlast_bar_2),
.m_axis_cc_tuser(axis_cc_tuser_bar_2),
/*
* AXI Master output

View File

@ -235,7 +235,7 @@ class TB(object):
self.dev.functions[0].msi_multiple_message_capable = 5
self.dev.functions[0].configure_bar(0, 2**22)
self.dev.functions[0].configure_bar(1, 2**22)
self.dev.functions[0].configure_bar(2, 2**22)
dut.btnu.setimmediatevalue(0)
dut.btnl.setimmediatevalue(0)
@ -262,17 +262,17 @@ async def run_test(dut):
mem_base, mem_data = tb.rc.alloc_region(16*1024*1024)
dev_pf0_bar0 = tb.rc.tree[0][0].bar_addr[0]
dev_pf0_bar1 = tb.rc.tree[0][0].bar_addr[1]
dev_pf0_bar2 = tb.rc.tree[0][0].bar_addr[2]
tb.log.info("Test memory write to BAR 1")
tb.log.info("Test memory write to BAR 2")
await tb.rc.mem_write(dev_pf0_bar1, b'\x11\x22\x33\x44')
await tb.rc.mem_write(dev_pf0_bar2, b'\x11\x22\x33\x44')
await Timer(100, 'ns')
tb.log.info("Test memory read from BAR 1")
tb.log.info("Test memory read from BAR 2")
val = await tb.rc.mem_read(dev_pf0_bar1, 4, 1000)
val = await tb.rc.mem_read(dev_pf0_bar2, 4, 1000)
tb.log.info("Read data: %s", val)
assert val == b'\x11\x22\x33\x44'

View File

@ -17,12 +17,16 @@ set_property -dict [list \
CONFIG.pf0_class_code_sub {00} \
CONFIG.pf0_base_class_menu {Network_controller} \
CONFIG.pf0_sub_class_interface_menu {Ethernet_controller} \
CONFIG.pf0_bar0_64bit {true} \
CONFIG.pf0_bar0_prefetchable {true} \
CONFIG.pf0_bar0_scale {Megabytes} \
CONFIG.pf0_bar0_size {16} \
CONFIG.pf0_bar1_enabled {true} \
CONFIG.pf0_bar1_type {Memory} \
CONFIG.pf0_bar1_scale {Megabytes} \
CONFIG.pf0_bar1_size {16} \
CONFIG.pf0_bar2_64bit {true} \
CONFIG.pf0_bar2_prefetchable {true} \
CONFIG.pf0_bar2_enabled {true} \
CONFIG.pf0_bar2_type {Memory} \
CONFIG.pf0_bar2_scale {Megabytes} \
CONFIG.pf0_bar2_size {16} \
CONFIG.vendor_id {1234} \
CONFIG.en_msi_per_vec_masking {true} \
] [get_ips pcie4_uscale_plus_0]

View File

@ -144,19 +144,19 @@ wire axis_cc_tready_bar_0;
wire axis_cc_tlast_bar_0;
wire [AXIS_PCIE_CC_USER_WIDTH-1:0] axis_cc_tuser_bar_0;
wire [AXIS_PCIE_DATA_WIDTH-1:0] axis_cq_tdata_bar_1;
wire [AXIS_PCIE_KEEP_WIDTH-1:0] axis_cq_tkeep_bar_1;
wire axis_cq_tvalid_bar_1;
wire axis_cq_tready_bar_1;
wire axis_cq_tlast_bar_1;
wire [AXIS_PCIE_CQ_USER_WIDTH-1:0] axis_cq_tuser_bar_1;
wire [AXIS_PCIE_DATA_WIDTH-1:0] axis_cq_tdata_bar_2;
wire [AXIS_PCIE_KEEP_WIDTH-1:0] axis_cq_tkeep_bar_2;
wire axis_cq_tvalid_bar_2;
wire axis_cq_tready_bar_2;
wire axis_cq_tlast_bar_2;
wire [AXIS_PCIE_CQ_USER_WIDTH-1:0] axis_cq_tuser_bar_2;
wire [AXIS_PCIE_DATA_WIDTH-1:0] axis_cc_tdata_bar_1;
wire [AXIS_PCIE_KEEP_WIDTH-1:0] axis_cc_tkeep_bar_1;
wire axis_cc_tvalid_bar_1;
wire axis_cc_tready_bar_1;
wire axis_cc_tlast_bar_1;
wire [AXIS_PCIE_CC_USER_WIDTH-1:0] axis_cc_tuser_bar_1;
wire [AXIS_PCIE_DATA_WIDTH-1:0] axis_cc_tdata_bar_2;
wire [AXIS_PCIE_KEEP_WIDTH-1:0] axis_cc_tkeep_bar_2;
wire axis_cc_tvalid_bar_2;
wire axis_cc_tready_bar_2;
wire axis_cc_tlast_bar_2;
wire [AXIS_PCIE_CC_USER_WIDTH-1:0] axis_cc_tuser_bar_2;
wire [2:0] bar_id;
wire [1:0] select;
@ -184,12 +184,12 @@ cq_demux_inst (
/*
* AXI output (CQ)
*/
.m_axis_cq_tdata({axis_cq_tdata_bar_1, axis_cq_tdata_bar_0}),
.m_axis_cq_tkeep({axis_cq_tkeep_bar_1, axis_cq_tkeep_bar_0}),
.m_axis_cq_tvalid({axis_cq_tvalid_bar_1, axis_cq_tvalid_bar_0}),
.m_axis_cq_tready({axis_cq_tready_bar_1, axis_cq_tready_bar_0}),
.m_axis_cq_tlast({axis_cq_tlast_bar_1, axis_cq_tlast_bar_0}),
.m_axis_cq_tuser({axis_cq_tuser_bar_1, axis_cq_tuser_bar_0}),
.m_axis_cq_tdata({axis_cq_tdata_bar_2, axis_cq_tdata_bar_0}),
.m_axis_cq_tkeep({axis_cq_tkeep_bar_2, axis_cq_tkeep_bar_0}),
.m_axis_cq_tvalid({axis_cq_tvalid_bar_2, axis_cq_tvalid_bar_0}),
.m_axis_cq_tready({axis_cq_tready_bar_2, axis_cq_tready_bar_0}),
.m_axis_cq_tlast({axis_cq_tlast_bar_2, axis_cq_tlast_bar_0}),
.m_axis_cq_tuser({axis_cq_tuser_bar_2, axis_cq_tuser_bar_0}),
/*
* Fields
@ -208,7 +208,7 @@ cq_demux_inst (
.select(select)
);
assign select[1] = bar_id == 3'd1;
assign select[1] = bar_id == 3'd2;
assign select[0] = bar_id == 3'd0;
axis_arb_mux #(
@ -228,14 +228,14 @@ cc_mux_inst (
/*
* AXI inputs
*/
.s_axis_tdata({axis_cc_tdata_bar_1, axis_cc_tdata_bar_0}),
.s_axis_tkeep({axis_cc_tkeep_bar_1, axis_cc_tkeep_bar_0}),
.s_axis_tvalid({axis_cc_tvalid_bar_1, axis_cc_tvalid_bar_0}),
.s_axis_tready({axis_cc_tready_bar_1, axis_cc_tready_bar_0}),
.s_axis_tlast({axis_cc_tlast_bar_1, axis_cc_tlast_bar_0}),
.s_axis_tdata({axis_cc_tdata_bar_2, axis_cc_tdata_bar_0}),
.s_axis_tkeep({axis_cc_tkeep_bar_2, axis_cc_tkeep_bar_0}),
.s_axis_tvalid({axis_cc_tvalid_bar_2, axis_cc_tvalid_bar_0}),
.s_axis_tready({axis_cc_tready_bar_2, axis_cc_tready_bar_0}),
.s_axis_tlast({axis_cc_tlast_bar_2, axis_cc_tlast_bar_0}),
.s_axis_tid(0),
.s_axis_tdest(0),
.s_axis_tuser({axis_cc_tuser_bar_1, axis_cc_tuser_bar_0}),
.s_axis_tuser({axis_cc_tuser_bar_2, axis_cc_tuser_bar_0}),
/*
* AXI output
@ -694,22 +694,22 @@ pcie_us_axi_master_inst (
/*
* AXI input (CQ)
*/
.s_axis_cq_tdata(axis_cq_tdata_bar_1),
.s_axis_cq_tkeep(axis_cq_tkeep_bar_1),
.s_axis_cq_tvalid(axis_cq_tvalid_bar_1),
.s_axis_cq_tready(axis_cq_tready_bar_1),
.s_axis_cq_tlast(axis_cq_tlast_bar_1),
.s_axis_cq_tuser(axis_cq_tuser_bar_1),
.s_axis_cq_tdata(axis_cq_tdata_bar_2),
.s_axis_cq_tkeep(axis_cq_tkeep_bar_2),
.s_axis_cq_tvalid(axis_cq_tvalid_bar_2),
.s_axis_cq_tready(axis_cq_tready_bar_2),
.s_axis_cq_tlast(axis_cq_tlast_bar_2),
.s_axis_cq_tuser(axis_cq_tuser_bar_2),
/*
* AXI output (CC)
*/
.m_axis_cc_tdata(axis_cc_tdata_bar_1),
.m_axis_cc_tkeep(axis_cc_tkeep_bar_1),
.m_axis_cc_tvalid(axis_cc_tvalid_bar_1),
.m_axis_cc_tready(axis_cc_tready_bar_1),
.m_axis_cc_tlast(axis_cc_tlast_bar_1),
.m_axis_cc_tuser(axis_cc_tuser_bar_1),
.m_axis_cc_tdata(axis_cc_tdata_bar_2),
.m_axis_cc_tkeep(axis_cc_tkeep_bar_2),
.m_axis_cc_tvalid(axis_cc_tvalid_bar_2),
.m_axis_cc_tready(axis_cc_tready_bar_2),
.m_axis_cc_tlast(axis_cc_tlast_bar_2),
.m_axis_cc_tuser(axis_cc_tuser_bar_2),
/*
* AXI Master output

View File

@ -235,7 +235,7 @@ class TB(object):
self.dev.functions[0].msi_multiple_message_capable = 5
self.dev.functions[0].configure_bar(0, 2**22)
self.dev.functions[0].configure_bar(1, 2**22)
self.dev.functions[0].configure_bar(2, 2**22)
dut.sw.setimmediatevalue(0)
@ -257,17 +257,17 @@ async def run_test(dut):
mem_base, mem_data = tb.rc.alloc_region(16*1024*1024)
dev_pf0_bar0 = tb.rc.tree[0][0].bar_addr[0]
dev_pf0_bar1 = tb.rc.tree[0][0].bar_addr[1]
dev_pf0_bar2 = tb.rc.tree[0][0].bar_addr[2]
tb.log.info("Test memory write to BAR 1")
tb.log.info("Test memory write to BAR 2")
await tb.rc.mem_write(dev_pf0_bar1, b'\x11\x22\x33\x44')
await tb.rc.mem_write(dev_pf0_bar2, b'\x11\x22\x33\x44')
await Timer(100, 'ns')
tb.log.info("Test memory read from BAR 1")
tb.log.info("Test memory read from BAR 2")
val = await tb.rc.mem_read(dev_pf0_bar1, 4, 1000)
val = await tb.rc.mem_read(dev_pf0_bar2, 4, 1000)
tb.log.info("Read data: %s", val)
assert val == b'\x11\x22\x33\x44'

View File

@ -17,12 +17,16 @@ set_property -dict [list \
CONFIG.pf0_class_code_sub {00} \
CONFIG.pf0_base_class_menu {Network_controller} \
CONFIG.pf0_sub_class_interface_menu {Ethernet_controller} \
CONFIG.pf0_bar0_64bit {true} \
CONFIG.pf0_bar0_prefetchable {true} \
CONFIG.pf0_bar0_scale {Megabytes} \
CONFIG.pf0_bar0_size {16} \
CONFIG.pf0_bar1_enabled {true} \
CONFIG.pf0_bar1_type {Memory} \
CONFIG.pf0_bar1_scale {Megabytes} \
CONFIG.pf0_bar1_size {16} \
CONFIG.pf0_bar2_64bit {true} \
CONFIG.pf0_bar2_prefetchable {true} \
CONFIG.pf0_bar2_enabled {true} \
CONFIG.pf0_bar2_type {Memory} \
CONFIG.pf0_bar2_scale {Megabytes} \
CONFIG.pf0_bar2_size {16} \
CONFIG.vendor_id {1234} \
CONFIG.en_msi_per_vec_masking {true} \
] [get_ips pcie4_uscale_plus_0]

View File

@ -149,19 +149,19 @@ wire axis_cc_tready_bar_0;
wire axis_cc_tlast_bar_0;
wire [AXIS_PCIE_CC_USER_WIDTH-1:0] axis_cc_tuser_bar_0;
wire [AXIS_PCIE_DATA_WIDTH-1:0] axis_cq_tdata_bar_1;
wire [AXIS_PCIE_KEEP_WIDTH-1:0] axis_cq_tkeep_bar_1;
wire axis_cq_tvalid_bar_1;
wire axis_cq_tready_bar_1;
wire axis_cq_tlast_bar_1;
wire [AXIS_PCIE_CQ_USER_WIDTH-1:0] axis_cq_tuser_bar_1;
wire [AXIS_PCIE_DATA_WIDTH-1:0] axis_cq_tdata_bar_2;
wire [AXIS_PCIE_KEEP_WIDTH-1:0] axis_cq_tkeep_bar_2;
wire axis_cq_tvalid_bar_2;
wire axis_cq_tready_bar_2;
wire axis_cq_tlast_bar_2;
wire [AXIS_PCIE_CQ_USER_WIDTH-1:0] axis_cq_tuser_bar_2;
wire [AXIS_PCIE_DATA_WIDTH-1:0] axis_cc_tdata_bar_1;
wire [AXIS_PCIE_KEEP_WIDTH-1:0] axis_cc_tkeep_bar_1;
wire axis_cc_tvalid_bar_1;
wire axis_cc_tready_bar_1;
wire axis_cc_tlast_bar_1;
wire [AXIS_PCIE_CC_USER_WIDTH-1:0] axis_cc_tuser_bar_1;
wire [AXIS_PCIE_DATA_WIDTH-1:0] axis_cc_tdata_bar_2;
wire [AXIS_PCIE_KEEP_WIDTH-1:0] axis_cc_tkeep_bar_2;
wire axis_cc_tvalid_bar_2;
wire axis_cc_tready_bar_2;
wire axis_cc_tlast_bar_2;
wire [AXIS_PCIE_CC_USER_WIDTH-1:0] axis_cc_tuser_bar_2;
wire [2:0] bar_id;
wire [1:0] select;
@ -189,12 +189,12 @@ cq_demux_inst (
/*
* AXI output (CQ)
*/
.m_axis_cq_tdata({axis_cq_tdata_bar_1, axis_cq_tdata_bar_0}),
.m_axis_cq_tkeep({axis_cq_tkeep_bar_1, axis_cq_tkeep_bar_0}),
.m_axis_cq_tvalid({axis_cq_tvalid_bar_1, axis_cq_tvalid_bar_0}),
.m_axis_cq_tready({axis_cq_tready_bar_1, axis_cq_tready_bar_0}),
.m_axis_cq_tlast({axis_cq_tlast_bar_1, axis_cq_tlast_bar_0}),
.m_axis_cq_tuser({axis_cq_tuser_bar_1, axis_cq_tuser_bar_0}),
.m_axis_cq_tdata({axis_cq_tdata_bar_2, axis_cq_tdata_bar_0}),
.m_axis_cq_tkeep({axis_cq_tkeep_bar_2, axis_cq_tkeep_bar_0}),
.m_axis_cq_tvalid({axis_cq_tvalid_bar_2, axis_cq_tvalid_bar_0}),
.m_axis_cq_tready({axis_cq_tready_bar_2, axis_cq_tready_bar_0}),
.m_axis_cq_tlast({axis_cq_tlast_bar_2, axis_cq_tlast_bar_0}),
.m_axis_cq_tuser({axis_cq_tuser_bar_2, axis_cq_tuser_bar_0}),
/*
* Fields
@ -213,7 +213,7 @@ cq_demux_inst (
.select(select)
);
assign select[1] = bar_id == 3'd1;
assign select[1] = bar_id == 3'd2;
assign select[0] = bar_id == 3'd0;
axis_arb_mux #(
@ -233,14 +233,14 @@ cc_mux_inst (
/*
* AXI inputs
*/
.s_axis_tdata({axis_cc_tdata_bar_1, axis_cc_tdata_bar_0}),
.s_axis_tkeep({axis_cc_tkeep_bar_1, axis_cc_tkeep_bar_0}),
.s_axis_tvalid({axis_cc_tvalid_bar_1, axis_cc_tvalid_bar_0}),
.s_axis_tready({axis_cc_tready_bar_1, axis_cc_tready_bar_0}),
.s_axis_tlast({axis_cc_tlast_bar_1, axis_cc_tlast_bar_0}),
.s_axis_tdata({axis_cc_tdata_bar_2, axis_cc_tdata_bar_0}),
.s_axis_tkeep({axis_cc_tkeep_bar_2, axis_cc_tkeep_bar_0}),
.s_axis_tvalid({axis_cc_tvalid_bar_2, axis_cc_tvalid_bar_0}),
.s_axis_tready({axis_cc_tready_bar_2, axis_cc_tready_bar_0}),
.s_axis_tlast({axis_cc_tlast_bar_2, axis_cc_tlast_bar_0}),
.s_axis_tid(0),
.s_axis_tdest(0),
.s_axis_tuser({axis_cc_tuser_bar_1, axis_cc_tuser_bar_0}),
.s_axis_tuser({axis_cc_tuser_bar_2, axis_cc_tuser_bar_0}),
/*
* AXI output
@ -699,22 +699,22 @@ pcie_us_axi_master_inst (
/*
* AXI input (CQ)
*/
.s_axis_cq_tdata(axis_cq_tdata_bar_1),
.s_axis_cq_tkeep(axis_cq_tkeep_bar_1),
.s_axis_cq_tvalid(axis_cq_tvalid_bar_1),
.s_axis_cq_tready(axis_cq_tready_bar_1),
.s_axis_cq_tlast(axis_cq_tlast_bar_1),
.s_axis_cq_tuser(axis_cq_tuser_bar_1),
.s_axis_cq_tdata(axis_cq_tdata_bar_2),
.s_axis_cq_tkeep(axis_cq_tkeep_bar_2),
.s_axis_cq_tvalid(axis_cq_tvalid_bar_2),
.s_axis_cq_tready(axis_cq_tready_bar_2),
.s_axis_cq_tlast(axis_cq_tlast_bar_2),
.s_axis_cq_tuser(axis_cq_tuser_bar_2),
/*
* AXI output (CC)
*/
.m_axis_cc_tdata(axis_cc_tdata_bar_1),
.m_axis_cc_tkeep(axis_cc_tkeep_bar_1),
.m_axis_cc_tvalid(axis_cc_tvalid_bar_1),
.m_axis_cc_tready(axis_cc_tready_bar_1),
.m_axis_cc_tlast(axis_cc_tlast_bar_1),
.m_axis_cc_tuser(axis_cc_tuser_bar_1),
.m_axis_cc_tdata(axis_cc_tdata_bar_2),
.m_axis_cc_tkeep(axis_cc_tkeep_bar_2),
.m_axis_cc_tvalid(axis_cc_tvalid_bar_2),
.m_axis_cc_tready(axis_cc_tready_bar_2),
.m_axis_cc_tlast(axis_cc_tlast_bar_2),
.m_axis_cc_tuser(axis_cc_tuser_bar_2),
/*
* AXI Master output

View File

@ -235,7 +235,7 @@ class TB(object):
self.dev.functions[0].msi_multiple_message_capable = 5
self.dev.functions[0].configure_bar(0, 2**22)
self.dev.functions[0].configure_bar(1, 2**22)
self.dev.functions[0].configure_bar(2, 2**22)
dut.btnu.setimmediatevalue(0)
dut.btnl.setimmediatevalue(0)
@ -262,17 +262,17 @@ async def run_test(dut):
mem_base, mem_data = tb.rc.alloc_region(16*1024*1024)
dev_pf0_bar0 = tb.rc.tree[0][0].bar_addr[0]
dev_pf0_bar1 = tb.rc.tree[0][0].bar_addr[1]
dev_pf0_bar2 = tb.rc.tree[0][0].bar_addr[2]
tb.log.info("Test memory write to BAR 1")
tb.log.info("Test memory write to BAR 2")
await tb.rc.mem_write(dev_pf0_bar1, b'\x11\x22\x33\x44')
await tb.rc.mem_write(dev_pf0_bar2, b'\x11\x22\x33\x44')
await Timer(100, 'ns')
tb.log.info("Test memory read from BAR 1")
tb.log.info("Test memory read from BAR 2")
val = await tb.rc.mem_read(dev_pf0_bar1, 4, 1000)
val = await tb.rc.mem_read(dev_pf0_bar2, 4, 1000)
tb.log.info("Read data: %s", val)
assert val == b'\x11\x22\x33\x44'

View File

@ -157,11 +157,11 @@ static int edev_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
dev_info(dev, "CC: %d", ioread32(edev->bar[0]+0x00040C));
// Read/write test
dev_info(dev, "write to BAR1");
iowrite32(0x11223344, edev->bar[1]);
dev_info(dev, "write to BAR2");
iowrite32(0x11223344, edev->bar[2]);
dev_info(dev, "read from BAR1");
dev_info(dev, "%08x", ioread32(edev->bar[1]));
dev_info(dev, "read from BAR2");
dev_info(dev, "%08x", ioread32(edev->bar[2]));
// Dump counters
dev_info(dev, "TLP counters");
@ -283,7 +283,7 @@ static int enumerate_bars(struct example_dev *edev, struct pci_dev *pdev)
struct device *dev = &pdev->dev;
int i;
for (i = 0; i < DEV_BAR_CNT; i++)
for (i = 0; i < 6; i++)
{
resource_size_t bar_start = pci_resource_start(pdev, i);
if (bar_start)
@ -303,7 +303,7 @@ static int map_bars(struct example_dev *edev, struct pci_dev *pdev)
struct device *dev = &pdev->dev;
int i;
for (i = 0; i < DEV_BAR_CNT; i++)
for (i = 0; i < 6; i++)
{
resource_size_t bar_start = pci_resource_start(pdev, i);
resource_size_t bar_end = pci_resource_end(pdev, i);
@ -341,7 +341,7 @@ static void free_bars(struct example_dev *edev, struct pci_dev *pdev)
struct device *dev = &pdev->dev;
int i;
for (i = 0; i < DEV_BAR_CNT; i++)
for (i = 0; i < 6; i++)
{
if (edev->bar[i])
{

View File

@ -30,14 +30,12 @@ THE SOFTWARE.
#define DRIVER_NAME "edev"
#define DRIVER_VERSION "0.1"
#define DEV_BAR_CNT 2
struct example_dev {
struct pci_dev *pdev;
// BAR pointers
void * __iomem bar[DEV_BAR_CNT];
resource_size_t bar_len[DEV_BAR_CNT];
void * __iomem bar[6];
resource_size_t bar_len[6];
// DMA buffer
size_t dma_region_len;

View File

@ -17,12 +17,16 @@ set_property -dict [list \
CONFIG.pf0_class_code_sub {00} \
CONFIG.pf0_base_class_menu {Network_controller} \
CONFIG.pf0_sub_class_interface_menu {Ethernet_controller} \
CONFIG.pf0_bar0_64bit {true} \
CONFIG.pf0_bar0_prefetchable {true} \
CONFIG.pf0_bar0_scale {Megabytes} \
CONFIG.pf0_bar0_size {16} \
CONFIG.pf0_bar1_enabled {true} \
CONFIG.pf0_bar1_type {Memory} \
CONFIG.pf0_bar1_scale {Megabytes} \
CONFIG.pf0_bar1_size {16} \
CONFIG.pf0_bar2_64bit {true} \
CONFIG.pf0_bar2_prefetchable {true} \
CONFIG.pf0_bar2_enabled {true} \
CONFIG.pf0_bar2_type {Memory} \
CONFIG.pf0_bar2_scale {Megabytes} \
CONFIG.pf0_bar2_size {16} \
CONFIG.vendor_id {1234} \
CONFIG.en_msi_per_vec_masking {true} \
] [get_ips pcie4_uscale_plus_0]

View File

@ -146,19 +146,19 @@ wire axis_cc_tready_bar_0;
wire axis_cc_tlast_bar_0;
wire [AXIS_PCIE_CC_USER_WIDTH-1:0] axis_cc_tuser_bar_0;
wire [AXIS_PCIE_DATA_WIDTH-1:0] axis_cq_tdata_bar_1;
wire [AXIS_PCIE_KEEP_WIDTH-1:0] axis_cq_tkeep_bar_1;
wire axis_cq_tvalid_bar_1;
wire axis_cq_tready_bar_1;
wire axis_cq_tlast_bar_1;
wire [AXIS_PCIE_CQ_USER_WIDTH-1:0] axis_cq_tuser_bar_1;
wire [AXIS_PCIE_DATA_WIDTH-1:0] axis_cq_tdata_bar_2;
wire [AXIS_PCIE_KEEP_WIDTH-1:0] axis_cq_tkeep_bar_2;
wire axis_cq_tvalid_bar_2;
wire axis_cq_tready_bar_2;
wire axis_cq_tlast_bar_2;
wire [AXIS_PCIE_CQ_USER_WIDTH-1:0] axis_cq_tuser_bar_2;
wire [AXIS_PCIE_DATA_WIDTH-1:0] axis_cc_tdata_bar_1;
wire [AXIS_PCIE_KEEP_WIDTH-1:0] axis_cc_tkeep_bar_1;
wire axis_cc_tvalid_bar_1;
wire axis_cc_tready_bar_1;
wire axis_cc_tlast_bar_1;
wire [AXIS_PCIE_CC_USER_WIDTH-1:0] axis_cc_tuser_bar_1;
wire [AXIS_PCIE_DATA_WIDTH-1:0] axis_cc_tdata_bar_2;
wire [AXIS_PCIE_KEEP_WIDTH-1:0] axis_cc_tkeep_bar_2;
wire axis_cc_tvalid_bar_2;
wire axis_cc_tready_bar_2;
wire axis_cc_tlast_bar_2;
wire [AXIS_PCIE_CC_USER_WIDTH-1:0] axis_cc_tuser_bar_2;
wire [2:0] bar_id;
wire [1:0] select;
@ -186,12 +186,12 @@ cq_demux_inst (
/*
* AXI output (CQ)
*/
.m_axis_cq_tdata({axis_cq_tdata_bar_1, axis_cq_tdata_bar_0}),
.m_axis_cq_tkeep({axis_cq_tkeep_bar_1, axis_cq_tkeep_bar_0}),
.m_axis_cq_tvalid({axis_cq_tvalid_bar_1, axis_cq_tvalid_bar_0}),
.m_axis_cq_tready({axis_cq_tready_bar_1, axis_cq_tready_bar_0}),
.m_axis_cq_tlast({axis_cq_tlast_bar_1, axis_cq_tlast_bar_0}),
.m_axis_cq_tuser({axis_cq_tuser_bar_1, axis_cq_tuser_bar_0}),
.m_axis_cq_tdata({axis_cq_tdata_bar_2, axis_cq_tdata_bar_0}),
.m_axis_cq_tkeep({axis_cq_tkeep_bar_2, axis_cq_tkeep_bar_0}),
.m_axis_cq_tvalid({axis_cq_tvalid_bar_2, axis_cq_tvalid_bar_0}),
.m_axis_cq_tready({axis_cq_tready_bar_2, axis_cq_tready_bar_0}),
.m_axis_cq_tlast({axis_cq_tlast_bar_2, axis_cq_tlast_bar_0}),
.m_axis_cq_tuser({axis_cq_tuser_bar_2, axis_cq_tuser_bar_0}),
/*
* Fields
@ -210,7 +210,7 @@ cq_demux_inst (
.select(select)
);
assign select[1] = bar_id == 3'd1;
assign select[1] = bar_id == 3'd2;
assign select[0] = bar_id == 3'd0;
axis_arb_mux #(
@ -230,14 +230,14 @@ cc_mux_inst (
/*
* AXI inputs
*/
.s_axis_tdata({axis_cc_tdata_bar_1, axis_cc_tdata_bar_0}),
.s_axis_tkeep({axis_cc_tkeep_bar_1, axis_cc_tkeep_bar_0}),
.s_axis_tvalid({axis_cc_tvalid_bar_1, axis_cc_tvalid_bar_0}),
.s_axis_tready({axis_cc_tready_bar_1, axis_cc_tready_bar_0}),
.s_axis_tlast({axis_cc_tlast_bar_1, axis_cc_tlast_bar_0}),
.s_axis_tdata({axis_cc_tdata_bar_2, axis_cc_tdata_bar_0}),
.s_axis_tkeep({axis_cc_tkeep_bar_2, axis_cc_tkeep_bar_0}),
.s_axis_tvalid({axis_cc_tvalid_bar_2, axis_cc_tvalid_bar_0}),
.s_axis_tready({axis_cc_tready_bar_2, axis_cc_tready_bar_0}),
.s_axis_tlast({axis_cc_tlast_bar_2, axis_cc_tlast_bar_0}),
.s_axis_tid(0),
.s_axis_tdest(0),
.s_axis_tuser({axis_cc_tuser_bar_1, axis_cc_tuser_bar_0}),
.s_axis_tuser({axis_cc_tuser_bar_2, axis_cc_tuser_bar_0}),
/*
* AXI output
@ -699,22 +699,22 @@ pcie_us_axi_master_inst (
/*
* AXI input (CQ)
*/
.s_axis_cq_tdata(axis_cq_tdata_bar_1),
.s_axis_cq_tkeep(axis_cq_tkeep_bar_1),
.s_axis_cq_tvalid(axis_cq_tvalid_bar_1),
.s_axis_cq_tready(axis_cq_tready_bar_1),
.s_axis_cq_tlast(axis_cq_tlast_bar_1),
.s_axis_cq_tuser(axis_cq_tuser_bar_1),
.s_axis_cq_tdata(axis_cq_tdata_bar_2),
.s_axis_cq_tkeep(axis_cq_tkeep_bar_2),
.s_axis_cq_tvalid(axis_cq_tvalid_bar_2),
.s_axis_cq_tready(axis_cq_tready_bar_2),
.s_axis_cq_tlast(axis_cq_tlast_bar_2),
.s_axis_cq_tuser(axis_cq_tuser_bar_2),
/*
* AXI output (CC)
*/
.m_axis_cc_tdata(axis_cc_tdata_bar_1),
.m_axis_cc_tkeep(axis_cc_tkeep_bar_1),
.m_axis_cc_tvalid(axis_cc_tvalid_bar_1),
.m_axis_cc_tready(axis_cc_tready_bar_1),
.m_axis_cc_tlast(axis_cc_tlast_bar_1),
.m_axis_cc_tuser(axis_cc_tuser_bar_1),
.m_axis_cc_tdata(axis_cc_tdata_bar_2),
.m_axis_cc_tkeep(axis_cc_tkeep_bar_2),
.m_axis_cc_tvalid(axis_cc_tvalid_bar_2),
.m_axis_cc_tready(axis_cc_tready_bar_2),
.m_axis_cc_tlast(axis_cc_tlast_bar_2),
.m_axis_cc_tuser(axis_cc_tuser_bar_2),
/*
* AXI Master output

View File

@ -235,7 +235,7 @@ class TB(object):
self.dev.functions[0].msi_multiple_message_capable = 5
self.dev.functions[0].configure_bar(0, 2**22)
self.dev.functions[0].configure_bar(1, 2**22)
self.dev.functions[0].configure_bar(2, 2**22)
async def init(self):
@ -255,17 +255,17 @@ async def run_test(dut):
mem_base, mem_data = tb.rc.alloc_region(16*1024*1024)
dev_pf0_bar0 = tb.rc.tree[0][0].bar_addr[0]
dev_pf0_bar1 = tb.rc.tree[0][0].bar_addr[1]
dev_pf0_bar2 = tb.rc.tree[0][0].bar_addr[2]
tb.log.info("Test memory write to BAR 1")
tb.log.info("Test memory write to BAR 2")
await tb.rc.mem_write(dev_pf0_bar1, b'\x11\x22\x33\x44')
await tb.rc.mem_write(dev_pf0_bar2, b'\x11\x22\x33\x44')
await Timer(100, 'ns')
tb.log.info("Test memory read from BAR 1")
tb.log.info("Test memory read from BAR 2")
val = await tb.rc.mem_read(dev_pf0_bar1, 4, 1000)
val = await tb.rc.mem_read(dev_pf0_bar2, 4, 1000)
tb.log.info("Read data: %s", val)
assert val == b'\x11\x22\x33\x44'

View File

@ -530,7 +530,7 @@ always @* begin
if (req_op_count_reg + req_pcie_addr_reg[1:0] <= {max_read_request_size_dw_reg, 2'b00}) begin
// packet smaller than max read request size
if (((req_pcie_addr_reg & 12'hfff) + (req_op_count_reg & 12'hfff)) >> 12 != 0 || req_op_count_reg >> 12 != 0) begin
// crosses 4k boundary
// crosses 4k boundary, split on 4K boundary
req_tlp_count_next = 13'h1000 - req_pcie_addr_reg[11:0];
dword_count = 11'h400 - req_pcie_addr_reg[11:2];
req_last_tlp = (((req_pcie_addr_reg & 12'hfff) + (req_op_count_reg & 12'hfff)) & 12'hfff) == 0;
@ -549,7 +549,7 @@ always @* begin
end else begin
// packet larger than max read request size
if (((req_pcie_addr_reg & 12'hfff) + {max_read_request_size_dw_reg, 2'b00}) >> 12 != 0) begin
// crosses 4k boundary
// crosses 4k boundary, split on 4K boundary
req_tlp_count_next = 13'h1000 - req_pcie_addr_reg[11:0];
dword_count = 11'h400 - req_pcie_addr_reg[11:2];
req_last_tlp = 1'b0;
@ -557,13 +557,13 @@ always @* begin
req_pcie_addr[PCIE_ADDR_WIDTH-1:12] = req_pcie_addr_reg[PCIE_ADDR_WIDTH-1:12]+1;
req_pcie_addr[11:0] = 12'd0;
end else begin
// does not cross 4k boundary, send one TLP
req_tlp_count_next = {max_read_request_size_dw_reg, 2'b00} - req_pcie_addr_reg[1:0];
dword_count = max_read_request_size_dw_reg;
// does not cross 4k boundary, split on 128-byte read completion boundary
req_tlp_count_next = {max_read_request_size_dw_reg, 2'b00} - req_pcie_addr_reg[6:0];
dword_count = max_read_request_size_dw_reg - req_pcie_addr_reg[6:2];
req_last_tlp = 1'b0;
// optimized req_pcie_addr = req_pcie_addr_reg + req_tlp_count_next
req_pcie_addr[PCIE_ADDR_WIDTH-1:12] = req_pcie_addr_reg[PCIE_ADDR_WIDTH-1:12];
req_pcie_addr[11:0] = {req_pcie_addr_reg[11:2] + max_read_request_size_dw_reg, 2'b00};
req_pcie_addr[11:0] = {{req_pcie_addr_reg[11:7], 5'd0} + max_read_request_size_dw_reg, 2'b00};
end
end

View File

@ -544,7 +544,7 @@ always @* begin
if (req_op_count_reg + req_pcie_addr_reg[1:0] <= {max_read_request_size_dw_reg, 2'b00}) begin
// packet smaller than max read request size
if (((req_pcie_addr_reg & 12'hfff) + (req_op_count_reg & 12'hfff)) >> 12 != 0 || req_op_count_reg >> 12 != 0) begin
// crosses 4k boundary
// crosses 4k boundary, split on 4K boundary
req_tlp_count_next = 13'h1000 - req_pcie_addr_reg[11:0];
dword_count = 11'h400 - req_pcie_addr_reg[11:2];
req_last_tlp = (((req_pcie_addr_reg & 12'hfff) + (req_op_count_reg & 12'hfff)) & 12'hfff) == 0;
@ -563,7 +563,7 @@ always @* begin
end else begin
// packet larger than max read request size
if (((req_pcie_addr_reg & 12'hfff) + {max_read_request_size_dw_reg, 2'b00}) >> 12 != 0) begin
// crosses 4k boundary
// crosses 4k boundary, split on 4K boundary
req_tlp_count_next = 13'h1000 - req_pcie_addr_reg[11:0];
dword_count = 11'h400 - req_pcie_addr_reg[11:2];
req_last_tlp = 1'b0;
@ -571,13 +571,13 @@ always @* begin
req_pcie_addr[PCIE_ADDR_WIDTH-1:12] = req_pcie_addr_reg[PCIE_ADDR_WIDTH-1:12]+1;
req_pcie_addr[11:0] = 12'd0;
end else begin
// does not cross 4k boundary, send one TLP
req_tlp_count_next = {max_read_request_size_dw_reg, 2'b00}-req_pcie_addr_reg[1:0];
dword_count = max_read_request_size_dw_reg;
// does not cross 4k boundary, split on 128-byte read completion boundary
req_tlp_count_next = {max_read_request_size_dw_reg, 2'b00} - req_pcie_addr_reg[6:0];
dword_count = max_read_request_size_dw_reg - req_pcie_addr_reg[6:2];
req_last_tlp = 1'b0;
// optimized req_pcie_addr = req_pcie_addr_reg + req_tlp_count_next
req_pcie_addr[PCIE_ADDR_WIDTH-1:12] = req_pcie_addr_reg[PCIE_ADDR_WIDTH-1:12];
req_pcie_addr[11:0] = {req_pcie_addr_reg[11:2] + max_read_request_size_dw_reg, 2'b00};
req_pcie_addr[11:0] = {{req_pcie_addr_reg[11:7], 5'd0} + max_read_request_size_dw_reg, 2'b00};
end
end