{"id":19756599,"url":"https://github.com/esnet/esnet-smartnic-fw","last_synced_at":"2025-04-30T11:33:29.647Z","repository":{"id":138230008,"uuid":"478590078","full_name":"esnet/esnet-smartnic-fw","owner":"esnet","description":"ESnet SmartNIC firmware design repository.","archived":false,"fork":false,"pushed_at":"2025-04-15T18:38:45.000Z","size":1136,"stargazers_count":10,"open_issues_count":0,"forks_count":2,"subscribers_count":18,"default_branch":"main","last_synced_at":"2025-04-15T19:43:22.672Z","etag":null,"topics":["high-touch"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/esnet.png","metadata":{"files":{"readme":"README.fw.artifacts","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-04-06T14:14:08.000Z","updated_at":"2025-04-15T18:38:49.000Z","dependencies_parsed_at":null,"dependency_job_id":"30cc6901-46ee-4d5d-8a88-e2a932cad4c8","html_url":"https://github.com/esnet/esnet-smartnic-fw","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/esnet%2Fesnet-smartnic-fw","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/esnet%2Fesnet-smartnic-fw/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/esnet%2Fesnet-smartnic-fw/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/esnet%2Fesnet-smartnic-fw/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/esnet","download_url":"https://codeload.github.com/esnet/esnet-smartnic-fw/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251691631,"owners_count":21628359,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["high-touch"],"created_at":"2024-11-12T03:16:22.766Z","updated_at":"2025-04-30T11:33:28.174Z","avatar_url":"https://github.com/esnet.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"================================\nInside of the firmware container\n================================\n\nFPGA files imported from the FPGA hardware (HW) build are embedded into the firmware (FW) container.\n\n```\n$ tree /usr/local/lib/firmware/esnet-smartnic/\n/usr/local/lib/firmware/esnet-smartnic/\n├── debug_nets.ltx          \u003c------------ chipscope probe points\n├── esnet-smartnic.bit      \u003c------------ FPGA bit file to be loaded over JTAG\n├── esnet-smartnic.mcs      \u003c------------ FPGA flash image to be loaded into FLASH\n├── esnet-smartnic.p4       \u003c------------ copy of the user's P4 program built into this FPGA\n└── open_nic_shell.ltx      \u003c------------ chipscope probe points\n \n$ tree /usr/local/share/esnet-smartnic/\n/usr/local/share/esnet-smartnic/\n└── esnet-smartnic-top-ir.yaml    \u003c------ PCIe register map definition used to directly read/write registers for debug using regio tool\n \n$ tree /usr/local/share/esnet-smartnic-dev/\n/usr/local/share/esnet-smartnic-dev/\n└── spec                          \u003c------ original yaml definitions for registers within blocks/decoders (informational only)\n    ├── box0_250mhz_decoder.yaml  \u003c------ regmap specification for blocks in box0_250mhz smartnic platform and user design\n    ├── box1_322mhz_decoder.yaml  \u003c------ regmap specification for blocks in box1_322mhz smartnic platform and user design\n    ├── cmac.yaml\n    ├── cmac_adapter.yaml\n    ├── cmac_decoder.yaml\n    ├── esnet-smartnic-top.yaml\n    ├── qdma_decoder.yaml\n    ├── qdma_device_csrs.yaml\n    ├── qdma_device_queues.yaml\n    ├── qdma_function.yaml\n    ├── qdma_pf_decoder.yaml\n    ├── qdma_subsystem.yaml\n    ├── qsfp28_i2c.yaml\n    ├── syscfg.yaml\n    ├── sysmon.yaml\n    └── sysmon_decoder.yaml\n```\n\nTools used during build-time and run-time to interact with the FPGA\n\n```\n$ tree /usr/local/bin/\n/usr/local/bin/\n├── dpdk-devbind.py         \u003c------------ misc DPDK related tools\n├── dpdk-dumpcap\n├── dpdk-hugepages.py\n├── dpdk-pdump\n├── dpdk-pmdinfo.py\n├── dpdk-proc-info\n├── dpdk-telemetry.py\n├── dpdk-test\n├── dpdk-test-acl\n├── dpdk-test-bbdev\n├── dpdk-test-cmdline\n├── dpdk-test-compress-perf\n├── dpdk-test-crypto-perf\n├── dpdk-test-eventdev\n├── dpdk-test-fib\n├── dpdk-test-flow-perf\n├── dpdk-test-gpudev\n├── dpdk-test-pipeline\n├── dpdk-test-regex\n├── dpdk-test-sad\n├── dpdk-testpmd\n├── meson                   \u003c------------ meson build tool used during firmware and software build\n├── pktgen                  \u003c------------ pktgen-dpdk packet generator\n├── regio                   \u003c------------ regio tool for reading/writing FPGA registers over PCIe\n├── regio-elaborate         \u003c------------ regio tools used for regmap parsing during firmware build\n├── regio-generate\n├── regio-info\n├── sn-cfg                  \u003c------------ smartnic platform configuration gRPC client which can send commands to the agent for operating on the esnet-smartnic FPGA\n├── sn-cfg-agent            \u003c------------ smartnic platform configuration gRPC server which is automatically started and listens for commands for operating on the esnet-smartnic FPGA\n├── sn-p4                   \u003c------------ smartnic p4 gRPC client which can send commands to the p4 agent for table inserts/deletes\n└── sn-p4-agent             \u003c------------ smartnic p4 gRPC server which is automatically started and listens for p4 table commands\n```\n\nPython packages\n```\n$ tree -L 1 /usr/local/lib/python3.8/dist-packages\n/usr/local/lib/python3.8/dist-packages\n...\n├── regio                   \u003c------------ library for programmatic register accesses\n├── regmap_esnet_smartnic   \u003c------------ auto-generated programmatic register map for the esnet-smartnic FPGA\n├── sn_cfg                  \u003c------------ library for the sn-cfg gRPC client tool\n├── sn_cfg_proto            \u003c------------ library wrapper for the sn-cfg auto-generated protobuf and gRPC code\n├── sn_cfg_v1_pb2.py        \u003c------------ auto-generated protobuf code for the messages supported by sn-cfg-agent\n├── sn_cfg_v1_pb2_grpc.py   \u003c------------ auto-generated gRPC code for use by clients of sn-cfg-agent\n├── sn_p4                   \u003c------------ library for the sn-p4 gRPC client tool\n├── sn_p4_proto             \u003c------------ library wrapper for the sn-p4 auto-generated probotbuf and gRPC code\n├── sn_p4_v2_pb2.py         \u003c------------ auto-generated protobuf code for the messages supported by sn-p4-agent\n├── sn_p4_v2_pb2_grpc.py    \u003c------------ auto-generated gRPC code for use by clients of sn-p4-agent\n...\n```\n\nC language header files used during builds\n```\n/usr/local/include/         \u003c------------ contains a full set of DPDK header files for SW builds\n/usr/local/include/esnet-smartnic/  \u003c---- contains header files for all blocks in the FPGA image, used for FW and SW builds\n```\n\npkgconfig files used during builds\n```\ntree /usr/local/lib/x86_64-linux-gnu/pkgconfig/\n/usr/local/lib/x86_64-linux-gnu/pkgconfig/\n├── libdpdk-libs.pc\n├── libdpdk.pc\n├── opennic.pc\n├── snp4.pc\n└── snutil.pc\n```\n\nSource code used to build the firmware\n```\n/sn-fw\n```\nThis is included in the container to allow source-level debug inside the container using gdb\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fesnet%2Fesnet-smartnic-fw","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fesnet%2Fesnet-smartnic-fw","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fesnet%2Fesnet-smartnic-fw/lists"}