{"id":28895957,"url":"https://github.com/iiitm-jay/opval","last_synced_at":"2026-02-01T06:31:52.292Z","repository":{"id":299275185,"uuid":"1002462949","full_name":"IIITM-Jay/opval","owner":"IIITM-Jay","description":"An open source validation and trace analysis toolchain for RISC-V opcode definitions and encodings, designed to catch bit-level errors, ensure argument consistency, and support early error detection and CI integration for developers, researchers, and chip designers working on custom ISA extensions and hardware-software co-design.","archived":false,"fork":false,"pushed_at":"2025-06-15T17:54:23.000Z","size":13,"stargazers_count":0,"open_issues_count":5,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-15T18:36:21.844Z","etag":null,"topics":["log-analyzer","opcodes","open-source","risc-v","tool","validator"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/IIITM-Jay.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2025-06-15T14:30:43.000Z","updated_at":"2025-06-15T17:54:26.000Z","dependencies_parsed_at":"2025-06-15T18:37:24.235Z","dependency_job_id":"825c827d-0ec5-4fe5-a9b7-e705636724f0","html_url":"https://github.com/IIITM-Jay/opval","commit_stats":null,"previous_names":["iiitm-jay/opval"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/IIITM-Jay/opval","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IIITM-Jay%2Fopval","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IIITM-Jay%2Fopval/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IIITM-Jay%2Fopval/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IIITM-Jay%2Fopval/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/IIITM-Jay","download_url":"https://codeload.github.com/IIITM-Jay/opval/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IIITM-Jay%2Fopval/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28970526,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-01T05:48:53.985Z","status":"ssl_error","status_checked_at":"2026-02-01T05:47:55.855Z","response_time":56,"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":["log-analyzer","opcodes","open-source","risc-v","tool","validator"],"created_at":"2025-06-21T05:09:57.016Z","updated_at":"2026-02-01T06:31:52.288Z","avatar_url":"https://github.com/IIITM-Jay.png","language":null,"readme":"# OpVal: A Metadata-Based Validation Framework for RISC-V Opcodes and Traces\n_...An upcoming open tool for validating, tracing, and debugging RISC-V opcode specifications with CI support. The project is currently in its initial phase of research and exploration, focusing on understanding existing tools and frameworks, studying historical efforts, and identifying gaps to address._\n\n---\n\n### 🧱 Foundational Work \u0026 Upstream Contributions\n\nThis project builds on significant prior work and contributions that I have made to the [riscv-opcodes](https://github.com/riscv/riscv-opcodes) repository, which forms the foundational groundwork for `OpVal`.\n\n**🔧 Contributions include:**\n\n- Refactored and optimized parser logic for opcode ingestion.\n- Introduced shared utilities and YAML artifact-generation scripts.\n- Enhanced the CI/CD pipeline for faster, more reliable builds.\n- Reduced lines of code (LOC) to improve readability and maintainability.\n- Optimized the Makefile for streamlined execution and testing.\n- Reviewed, fixed, and merged PRs from the wider community.\n- Provided best-practice recommendations for structure and maintainability.\n- Resolved a multi-extension dependency bug by relocating `hinval.vvma` and `hinval.gvma` to `rv_svinval_h`, ensuring instruction legality when both Svinval and H extensions are used. Also fixed a related parser error affecting output generation.\n\n**📌 Notable Pull Requests \u0026 Commits:**\n\n- [Parser Refactor \u0026 Logic Simplification](https://github.com/riscv/riscv-opcodes/pull/283#pullrequestreview-2361430186)\n- [CI Speed-Up \u0026 YAML Loader Enhancements](https://github.com/riscv/riscv-opcodes/pull/318)\n- [Makefile Optimizations](https://github.com/riscv/riscv-opcodes/pull/266)\n- [YAML Cleanup \u0026 Validation Fixes](https://github.com/riscv/riscv-opcodes/pull/309)\n- [Test Infrastructure \u0026 Coverage](https://github.com/riscv/riscv-opcodes/pull/292)\n- [Build \u0026 Parser Adjustments](https://github.com/riscv/riscv-opcodes/pull/311)\n- [Issue Fixes \u0026 Robustness Improvements](https://github.com/riscv/riscv-opcodes/pull/299)\n- [All Commits](https://github.com/riscv/riscv-opcodes/commits?author=IIITM-Jay)\n- [PR #297: Split `hinval.vvma` and `hinval.gvma` from `rv_svinval` to `rv_svinval_h`](https://github.com/riscv/riscv-opcodes/pull/297)\n\nThese contributions reflect a deep engagement with the RISC-V ecosystem and directly inform the design of `OpVal`.\n\n---\n\n## Overview\n\nAs RISC-V adoption increases globally—especially within European initiatives like EPI, CHIPS JU, and RISE—ensuring correctness and trust in custom opcodes, ISA extensions, and trace encodings is critical. OpVal addresses the lack of early validation tooling in the open-source chip toolchain by providing:\n\n- A **metadata-based validation engine** for opcode definitions.\n- **Trace log analyzers** for verifying architectural correctness.\n- **CI-friendly integration** through command-line tools and GitHub Actions.\n  \nOpVal aims to improve developer confidence, reduce ISA-level bugs, and speed up RISC-V processor design and verification pipelines in both academia and industry.\n\n## Key Features\n\n- [x] Validate RISC-V opcode encodings (bit overlap, value fit, syntax correctness)\n- [x] Detect argument mismatches in opcode metadata vs. argument lookup tables\n- [x] Check representability of constants based on encoding width\n- [x] Validate trace logs against expected execution patterns (planned)\n- [x] Command-line and CI (GitHub Actions) support\n- [x] Modular design to support custom instruction extensions\n\n## Why OpVal?\n\nCurrent RISC-V tools such as [riscv-opcodes](https://github.com/riscv/riscv-opcodes), [spike](https://github.com/riscv-software-src/riscv-isa-sim), and simulators focus on instruction decoding and execution, but **lack formal, early-stage validation of opcode metadata** and trace analysis. OpVal fills this gap by:\n\n- Offering standalone validation outside simulation\n- Enabling detection of design-time encoding conflicts\n- Supporting continuous integration for ISA development workflows\n\n## Project Roadmap\n\n### Project status and details for Phase0 - [Research \u0026 Exploartion](https://github.com/users/IIITM-Jay/projects/1/views/1?pane=info)\n\n| Phase | Focus Area                            | Key Deliverables                                                                 |\n|-------|----------------------------------------|----------------------------------------------------------------------------------|\n| Phase 0: Exploration \u0026 Research | Landscape review \u0026 gap analysis        | Study existing tools (e.g., riscv-opcodes, spike, Sail), identify missing validation layers, define test cases |\n| Phase 1: Foundations         | Project setup \u0026 metadata parser           | Initialize repository, parse RISC-V YAML opcode metadata, set up base infrastructure |\n| Phase 2: Core Validation     | Encoding validation engine                | Implement bitfield overlap detection, field width checks, value representability, basic structural errors |\n| Phase 3: Argument Checks     | Argument-table and semantics checks       | Validate mapping correctness, missing argument keys, malformed entries |\n| Phase 4: Trace Analysis      | Trace format support \u0026 analysis tools     | Design trace log parser, compare trace semantics with defined encodings |\n| Phase 5: CI Integration      | GitHub Actions \u0026 CLI utility              | Add command-line interface, GitHub Action integration, improve UX and error messaging |\n| Phase 6: Public Release      | Documentation, examples \u0026 outreach        | Provide documentation, usage examples, package v1.0 release, outreach for adoption |\n\n\n## Use Cases\n\n1. Validate opcode additions to `riscv-opcodes` or other YAML-based metadata repos\n2. Trace log checking for debugging and conformance validation\n3. Use in academic labs for teaching/custom ISA exploration\n4.  Support for custom extensions in open hardware startups\n5.  CI integration to enforce correctness in collaborative development\n\n## Getting Started\n\n\u003e _Note: Installation instructions will be updated after the initial release._\n\n### Prerequisites\n\n- Python 3.9+ (as earlier versions are depreacted. See more about python versions [here](https://devguide.python.org/versions/)\n- `pyyaml`, `click` (CLI framework), and optional dependencies for trace checking\n\n### Install\n\n```bash\ngit clone https://github.com/IIITM-Jay/opval\ncd opval\npip install -e .\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiiitm-jay%2Fopval","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fiiitm-jay%2Fopval","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiiitm-jay%2Fopval/lists"}