{"id":18382372,"url":"https://github.com/li-plus/reconf-switch-fpga","last_synced_at":"2026-02-08T07:02:20.351Z","repository":{"id":114149722,"uuid":"347538007","full_name":"li-plus/reconf-switch-fpga","owner":"li-plus","description":null,"archived":false,"fork":false,"pushed_at":"2021-06-24T16:04:12.000Z","size":1874,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-08-07T17:54:24.524Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"VHDL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/li-plus.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2021-03-14T03:48:42.000Z","updated_at":"2022-01-31T09:12:49.000Z","dependencies_parsed_at":null,"dependency_job_id":"a5979437-4848-4eb2-9d8b-f05de27d82c5","html_url":"https://github.com/li-plus/reconf-switch-fpga","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/li-plus/reconf-switch-fpga","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/li-plus%2Freconf-switch-fpga","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/li-plus%2Freconf-switch-fpga/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/li-plus%2Freconf-switch-fpga/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/li-plus%2Freconf-switch-fpga/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/li-plus","download_url":"https://codeload.github.com/li-plus/reconf-switch-fpga/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/li-plus%2Freconf-switch-fpga/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29224430,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-08T06:05:31.539Z","status":"ssl_error","status_checked_at":"2026-02-08T05:58:33.853Z","response_time":57,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":[],"created_at":"2024-11-06T01:04:51.346Z","updated_at":"2026-02-08T07:02:20.336Z","avatar_url":"https://github.com/li-plus.png","language":"VHDL","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Reconfigurable Switch on FPGA\n\n## Primitive\n\nGeneral primitive format (64 bits)\n\n```\n 63         58 57       32 31              16 15               0\n+-------------+-----------+------------------+------------------+\n| op code (6) | misc (26) | field spec1 (16) | field spec2 (16) |\n+-------------+-----------+------------------+------------------+\n```\n\nField Spec (16 bits)\n\n```\n 15        12 11        6 5       0\n+------------+-----------+---------+\n| hdr id (4) | start (6) | len (6) |\n+------------+-----------+---------+\n```\n\nNo op\n\n```\n 63        58 57        0\n+------------+-----------+\n| 000000 (6) | zero (58) |\n+------------+-----------+\n```\n\nChecksum\n\n```\n 63        58 57           54 53           32 31              16 15             0\n+------------+---------------+---------------+------------------+----------------+\n| 000001 (6) | hash type (4) | reserved (22) | cksum field (16) | dst field (16) |\n+------------+---------------+---------------+------------------+----------------+\nhash type (4)\n0000: CKSUM16\n```\n\nAdd\n\n```\n 63        58 57        32 31        16 15            0\n+------------+------------+------------+---------------+\n| 000010 (6) | delta (26) | field (16) | reserved (16) |\n+------------+------------+------------+---------------+\n```\n\nCopy field\n\n```\n 63        58 57           32 31            16 15             0\n+------------+---------------+----------------+----------------+\n| 000011 (6) | reserved (26) | dst field (16) | src field (16) |\n+------------+---------------+----------------+----------------+\n```\n\nSet port\n\n```\n 63        58 57           32 31           16 15            0\n+------------+---------------+---------------+----------------+\n| 000100 (6) | reserved (22) | reserved (16) | src field (16) |\n+------------+---------------+---------------+----------------+\n```\n\nSet multicast\n\n```\n 63        58 57            0\n+------------+---------------+\n| 000101 (6) | reserved (58) |\n+------------+---------------+\n```\n\nRecirculate\n\n```\n 63        58 57            0\n+------------+---------------+\n| 000110 (6) | reserved (58) |\n+------------+---------------+\n```\n\nPush Tag\n\n```\n 63        58 57                       26 25                 22 21            0\n+------------+---------------------------+---------------------+---------------+\n| 001000 (6) | generated header loc (32) | front header id (4) | reserved (22) |\n+------------+---------------------------+---------------------+---------------+\ntake MPLS or my_tunnel as examples\n```\n\nPop Tag\n\n```\n 63        58 57           54 53            0\n+------------+---------------+---------------+\n| 001001 (6) | header_id (4) | reserved (54) |\n+------------+---------------+---------------+\n```\n\n## Ablation Study\n\nFixed Processors\n\n![](fig/fixed_parser.png)\n\n![](fig/fixed_matcher.png)\n\n![](fig/fixed_executor.png)\n\nFixed Processor v2\n\n![](fig/fixed_parser_v2.png)\n\n![](fig/fixed_matcher_v2.png)\n\n![](fig/fixed_executor_v2.png)\n\nReconfigurable Processors\n\n![](fig/parser.png)\n\n![](fig/matcher.png)\n\n![](fig/executor.png)\n\nSwitch\n\n4 processors\n\n![](fig/switch.png)\n\n3 processors\n\n![](fig/reconf_3proc.png)\n\n2 processors\n\n![](fig/reconf_2proc.png)\n\n1 processor\n\n![](fig/reconf_1proc.png)\n\nFixed Switch\n\n4 proc\n\n![](fig/fixed_4proc.png)\n\n3 proc\n\n![](fig/fixed_3proc.png)\n\n2 proc\n\n![](fig/fixed_2proc.png)\n\n1 proc\n\n![](fig/fixed_1proc.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fli-plus%2Freconf-switch-fpga","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fli-plus%2Freconf-switch-fpga","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fli-plus%2Freconf-switch-fpga/lists"}