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:
commit
b1c6bdbd88
@ -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
|
||||
|
@ -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
|
||||
}
|
@ -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]
|
||||
|
@ -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
|
||||
|
@ -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'
|
||||
|
||||
|
@ -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]
|
||||
|
@ -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
|
||||
|
@ -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'
|
||||
|
||||
|
@ -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]
|
||||
|
@ -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
|
||||
|
@ -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'
|
||||
|
||||
|
@ -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]
|
||||
|
@ -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
|
||||
|
@ -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'
|
||||
|
||||
|
@ -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]
|
||||
|
@ -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
|
||||
|
@ -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'
|
||||
|
||||
|
@ -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} \
|
||||
|
@ -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
|
||||
|
@ -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'
|
||||
|
||||
|
@ -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} \
|
||||
|
@ -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
|
||||
|
@ -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'
|
||||
|
||||
|
@ -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} \
|
||||
|
@ -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
|
||||
|
@ -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'
|
||||
|
||||
|
@ -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]
|
||||
|
@ -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
|
||||
|
@ -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'
|
||||
|
||||
|
@ -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]
|
||||
|
@ -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
|
||||
|
@ -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'
|
||||
|
||||
|
@ -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]
|
||||
|
@ -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
|
||||
|
@ -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'
|
||||
|
||||
|
@ -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])
|
||||
{
|
||||
|
@ -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;
|
||||
|
@ -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]
|
||||
|
@ -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
|
||||
|
@ -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'
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user