-
Notifications
You must be signed in to change notification settings - Fork 2
/
README.fw.artifacts
118 lines (108 loc) · 5.37 KB
/
README.fw.artifacts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
================================
Inside of the firmware container
================================
FPGA files imported from the FPGA hardware (HW) build are embedded into the firmware (FW) container.
```
$ tree /usr/local/lib/firmware/esnet-smartnic/
/usr/local/lib/firmware/esnet-smartnic/
├── debug_nets.ltx <------------ chipscope probe points
├── esnet-smartnic.bit <------------ FPGA bit file to be loaded over JTAG
├── esnet-smartnic.mcs <------------ FPGA flash image to be loaded into FLASH
├── esnet-smartnic.p4 <------------ copy of the user's P4 program built into this FPGA
└── open_nic_shell.ltx <------------ chipscope probe points
$ tree /usr/local/share/esnet-smartnic/
/usr/local/share/esnet-smartnic/
└── esnet-smartnic-top-ir.yaml <------ PCIe register map definition used to directly read/write registers for debug using regio tool
$ tree /usr/local/share/esnet-smartnic-dev/
/usr/local/share/esnet-smartnic-dev/
└── spec <------ original yaml definitions for registers within blocks/decoders (informational only)
├── box0_250mhz_decoder.yaml <------ regmap specification for blocks in box0_250mhz smartnic platform and user design
├── box1_322mhz_decoder.yaml <------ regmap specification for blocks in box1_322mhz smartnic platform and user design
├── cmac.yaml
├── cmac_adapter.yaml
├── cmac_decoder.yaml
├── esnet-smartnic-top.yaml
├── qdma_decoder.yaml
├── qdma_device_csrs.yaml
├── qdma_device_queues.yaml
├── qdma_function.yaml
├── qdma_pf_decoder.yaml
├── qdma_subsystem.yaml
├── qsfp28_i2c.yaml
├── syscfg.yaml
├── sysmon.yaml
└── sysmon_decoder.yaml
```
Tools used during build-time and run-time to interact with the FPGA
```
$ tree /usr/local/bin/
/usr/local/bin/
├── dpdk-devbind.py <------------ misc DPDK related tools
├── dpdk-dumpcap
├── dpdk-hugepages.py
├── dpdk-pdump
├── dpdk-pmdinfo.py
├── dpdk-proc-info
├── dpdk-telemetry.py
├── dpdk-test
├── dpdk-test-acl
├── dpdk-test-bbdev
├── dpdk-test-cmdline
├── dpdk-test-compress-perf
├── dpdk-test-crypto-perf
├── dpdk-test-eventdev
├── dpdk-test-fib
├── dpdk-test-flow-perf
├── dpdk-test-gpudev
├── dpdk-test-pipeline
├── dpdk-test-regex
├── dpdk-test-sad
├── dpdk-testpmd
├── meson <------------ meson build tool used during firmware and software build
├── pktgen <------------ pktgen-dpdk packet generator
├── regio <------------ regio tool for reading/writing FPGA registers over PCIe
├── regio-elaborate <------------ regio tools used for regmap parsing during firmware build
├── regio-generate
├── regio-info
├── sn-cfg <------------ smartnic platform configuration gRPC client which can send commands to the agent for operating on the esnet-smartnic FPGA
├── sn-cfg-agent <------------ smartnic platform configuration gRPC server which is automatically started and listens for commands for operating on the esnet-smartnic FPGA
├── sn-p4 <------------ smartnic p4 gRPC client which can send commands to the p4 agent for table inserts/deletes
└── sn-p4-agent <------------ smartnic p4 gRPC server which is automatically started and listens for p4 table commands
```
Python packages
```
$ tree -L 1 /usr/local/lib/python3.8/dist-packages
/usr/local/lib/python3.8/dist-packages
...
├── regio <------------ library for programmatic register accesses
├── regmap_esnet_smartnic <------------ auto-generated programmatic register map for the esnet-smartnic FPGA
├── sn_cfg <------------ library for the sn-cfg gRPC client tool
├── sn_cfg_proto <------------ library wrapper for the sn-cfg auto-generated protobuf and gRPC code
├── sn_cfg_v1_pb2.py <------------ auto-generated protobuf code for the messages supported by sn-cfg-agent
├── sn_cfg_v1_pb2_grpc.py <------------ auto-generated gRPC code for use by clients of sn-cfg-agent
├── sn_p4 <------------ library for the sn-p4 gRPC client tool
├── sn_p4_proto <------------ library wrapper for the sn-p4 auto-generated probotbuf and gRPC code
├── sn_p4_v2_pb2.py <------------ auto-generated protobuf code for the messages supported by sn-p4-agent
├── sn_p4_v2_pb2_grpc.py <------------ auto-generated gRPC code for use by clients of sn-p4-agent
...
```
C language header files used during builds
```
/usr/local/include/ <------------ contains a full set of DPDK header files for SW builds
/usr/local/include/esnet-smartnic/ <---- contains header files for all blocks in the FPGA image, used for FW and SW builds
```
pkgconfig files used during builds
```
tree /usr/local/lib/x86_64-linux-gnu/pkgconfig/
/usr/local/lib/x86_64-linux-gnu/pkgconfig/
├── libdpdk-libs.pc
├── libdpdk.pc
├── opennic.pc
├── snp4.pc
└── snutil.pc
```
Source code used to build the firmware
```
/sn-fw
```
This is included in the container to allow source-level debug inside the container using gdb