{"id":40490171,"url":"https://github.com/agra-uni-bremen/opt-seq","last_synced_at":"2026-01-20T18:50:59.935Z","repository":{"id":224223672,"uuid":"742619981","full_name":"agra-uni-bremen/opt-seq","owner":"agra-uni-bremen","description":"An algorithm to merge RISC-V instruction sequences","archived":false,"fork":false,"pushed_at":"2024-03-06T21:46:13.000Z","size":17,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":9,"default_branch":"main","last_synced_at":"2025-09-09T00:59:27.002Z","etag":null,"topics":["asic","embedded-systems","hardware-optimization","risc-v","virtual-prototyping"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/agra-uni-bremen.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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}},"created_at":"2024-01-12T22:12:21.000Z","updated_at":"2024-02-26T21:58:54.000Z","dependencies_parsed_at":"2024-03-06T21:36:00.683Z","dependency_job_id":null,"html_url":"https://github.com/agra-uni-bremen/opt-seq","commit_stats":null,"previous_names":["agra-uni-bremen/opt-seq"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/agra-uni-bremen/opt-seq","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agra-uni-bremen%2Fopt-seq","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agra-uni-bremen%2Fopt-seq/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agra-uni-bremen%2Fopt-seq/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agra-uni-bremen%2Fopt-seq/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/agra-uni-bremen","download_url":"https://codeload.github.com/agra-uni-bremen/opt-seq/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agra-uni-bremen%2Fopt-seq/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28609225,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-20T16:10:39.856Z","status":"ssl_error","status_checked_at":"2026-01-20T16:10:39.493Z","response_time":117,"last_error":"SSL_read: 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":["asic","embedded-systems","hardware-optimization","risc-v","virtual-prototyping"],"created_at":"2026-01-20T18:50:59.387Z","updated_at":"2026-01-20T18:50:59.910Z","avatar_url":"https://github.com/agra-uni-bremen.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Optimized Sequence\n\n**Optimized Sequence** (Opt-Seq) is an algorithm for **merging** instruction sequences generated by\n[Opt-VP](https://github.com/agra-uni-bremen/opt-vp) in order to increase their execution coverage and, for example, save\ncosts for building hardware accelerators.\n\n## :dart: Features\n\n* Support of Opt-VP's modes for providing a variety of sequences\n* Merging of RISC-V instructions\n\n## :rocket: Getting Started\n\nFirst, the steps to install Opt-Seq are described. Second, it is explained how Opt-Seq can be used to merge\ninstruction sequences.\n\n### :wrench: Installation\n\nSince the sequences are generated in JSON, [nlohmann](https://github.com/nlohmann/json) is a prerequisite for parsing\nthem. This library can be installed, for example, by the command `brew install nlohmann-json` depending on the\noperating system.\n\nIn order to compile Opt-Seq just type this command in your terminal:\n\n```console\n$ g++ -std=c++2a -Wall -Wextra -pedantic -Os -DNDEBUG -o optseq optseq.cpp\n```\n\nAlternatively, the following command can be executed for debugging purposes:\n\n```console\n$ g++ -std=c++2a -Wall -Wextra -pedantic -g -o optseq optseq.cpp\n```\n\nTo uninstall Opt-Seq, simply remove the executable *optseq* and intermediate files if any exist.\n\n### :computer: Usage\n\nThe **command line interface** of Opt-Seq can be used according to the following scheme:\n\n```console\n$ ./optseq \u003cfile\u003e \u003cmode\u003e\n```\n\n* `\u003cfile\u003e`: file path to sequences in JSON\n* `\u003cmode\u003e`: 0 = default, 1 = subsequence, 2 = variant, 3 = full\n\nAgain, sequences can be generated with Opt-VP by activating a respective mode. While the default mode is described\n[here](https://agra.informatik.uni-bremen.de/doc/konf/FDL2023_JZ.pdf), the other modes are explained in this\n[paper](https://agra.informatik.uni-bremen.de/doc/konf/DDECS2024_RK.pdf).\n\n## :white_check_mark: Tests\n\nNow, the sequences (`SUB`, `ADD`, `XOR`, `DIV`, `OR`), (`ADD`, `XOR`, `XOR`, `DIV`, `SUB`, `DIV`), and\n(`OR`, `SUB`, `SUB`) are optimized into one sequence by mapping instructions if possible. The sequences to be merged are\nencoded in the test application called [test.json](test.json).\n\nAssuming that these sequences were generated using the default mode, the **merged sequence** is created by the\nfollowing command:\n\n```console\n$ ./optseq test.json 0\noptseq\u003e SUB-\u003eADD-\u003eXOR/NOP-\u003eDIV/NOP-\u003eXOR-\u003eSUB/NOP-\u003eDIV-\u003eOR\n```\n\nDepending on how Opt-Seq was compiled, the overall output may differ.\n\n## :warning: License\n\nOpt-Seq is licensed under the terms of the [MIT license](LICENSE.txt).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fagra-uni-bremen%2Fopt-seq","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fagra-uni-bremen%2Fopt-seq","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fagra-uni-bremen%2Fopt-seq/lists"}