{"id":13649116,"url":"https://github.com/RoaLogic/RV12","last_synced_at":"2025-04-22T12:33:39.790Z","repository":{"id":60929168,"uuid":"78653596","full_name":"RoaLogic/RV12","owner":"RoaLogic","description":"RISC-V CPU Core","archived":false,"fork":false,"pushed_at":"2024-06-08T14:42:14.000Z","size":15722,"stargazers_count":276,"open_issues_count":4,"forks_count":51,"subscribers_count":20,"default_branch":"master","last_synced_at":"2024-08-04T08:01:18.805Z","etag":null,"topics":["32-bit","64bit","cpu","risc-v"],"latest_commit_sha":null,"homepage":null,"language":"SystemVerilog","has_issues":true,"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/RoaLogic.png","metadata":{"files":{"readme":"README.md","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}},"created_at":"2017-01-11T15:45:50.000Z","updated_at":"2024-07-22T13:44:43.000Z","dependencies_parsed_at":"2023-11-01T17:34:42.513Z","dependency_job_id":"15964de6-ce27-4df8-903e-a9c767e0cb8b","html_url":"https://github.com/RoaLogic/RV12","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RoaLogic%2FRV12","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RoaLogic%2FRV12/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RoaLogic%2FRV12/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RoaLogic%2FRV12/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RoaLogic","download_url":"https://codeload.github.com/RoaLogic/RV12/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223896472,"owners_count":17221441,"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":["32-bit","64bit","cpu","risc-v"],"created_at":"2024-08-02T01:04:47.365Z","updated_at":"2024-11-09T23:30:59.848Z","avatar_url":"https://github.com/RoaLogic.png","language":"SystemVerilog","funding_links":[],"categories":["SystemVerilog"],"sub_categories":[],"readme":"## Product Brief\n\nThe RV12 is a highly configurable single-issue, single-core RV32I, RV64I\ncompliant RISC CPU intended for the embedded market. The RV12 is a member of the\nRoa Logic’s 32/64bit CPU family based on the industry standard [RISC-V\ninstruction set](https://riscv.org/)\n\nThe RV12 implements a Harvard architecture for simultaneous instruction and data\nmemory accesses. It features an optimizing 6-stage pipeline, which\noptimizes overlaps between the execution and memory accesses, thereby reducing\nstalls and improving efficiency.\n\nOptional features include Branch Prediction, Instruction Cache, Data Cache, and\nDebug Unit. Parameterised and configurable features include the instruction and\ndata interfaces, the branch-prediction-unit configuration, and the cache size,\nassociativity, and replacement algorithms. Providing the user with trade offs\nbetween performance, power, and area to optimize the core for the application\n\n![RV12 RISC-V Architecture](assets/img/RV12_Arch.png)\n\n## Documentation\n\n- [RV12 Datasheet](DATASHEET.md)\n  - [PDF Format Datasheet](docs/RoaLogic_RV12_RISCV_Datasheet.pdf)\n\n## Features\n\n- Royalty Free Industry standard instruction set (www.riscv.org)\n- Parameterized 32/64bit data\n- Fast, precise interrupts\n- Custom instructions enable integration of proprietary hardware accelerators\n- Single cycle execution\n- Optimizing folded 6-stage pipeline\n- Memory Protection Support\n- Optional/Parameterized branch-prediction-unit\n- Optional/Parameterized caches\n\n## Compatibility\n\nThe RV12 is compatible with the following RISC-V Foundation  specifications:\n\n- [User Mode Specifications v2.2](https://github.com/riscv/riscv-isa-manual/releases/download/riscv-user-2.2/riscv-spec-v2.2.pdf)\n- [Privilege Mode Specifications v1.10](https://github.com/riscv/riscv-isa-manual/blob/master/release/riscv-privileged-v1.10.pdf)\n\n## Interfaces\n\n- AHB3 Lite\n\n## Parameters\n\nThe following parameters control the feature set of a specific implementation of\nthe RV12:\n\n| Parameter               |  Type   |     Default     | Description                                                  |\n| :---------------------- | :-----: | :-------------: | :----------------------------------------------------------- |\n| `JEDEC_BANK`            | Integer |      0x0A       | JEDEC Bank                                                   |\n| `JEDEC_MANUFACTURER_ID` | Integer |      0x6E       | JEDEC Manufacturer ID                                        |\n| `XLEN`                  | Integer |       32        | Datapath width                                               |\n| `PLEN`                  | Integer |     `XLEN`      | Physical Memory Address Size                                 |\n| `PMP_CNT`               | Integer |       16        | Number of Physical Memory Protection Entries                 |\n| `PMA_CNT`               | Integer |       16        | Number of Physical Menory Attribute Entries                  |\n| `HAS_USER`              | Integer |        0        | User Mode Enable                                             |\n| `HAS_SUPER`             | Integer |        0        | Supervisor Mode Enable                                       |\n| `HAS_HYPER`             | Integer |        0        | Hypervisor Mode Enable                                       |\n| `HAS_RVM`               | Integer |        0        | “M” Extension Enable                                         |\n| `HAS_RVA`               | Integer |        0        | “A” Extension Enable                                         |\n| `HAS_RVC`               | Integer |        0        | “C” Extension Enable                                         |\n| `HAS_BPU`               | Integer |        1        | Branch Prediction Unit Control Enable                        |\n| `IS_RV32E`              | Integer |        0        | RV32E Base Integer Instruction Set Enable                    |\n| `MULT_LATENCY`          | Integer |        0        | Hardware Multiplier Latency (if “M” Extension enabled)       |\n| `ICACHE_SIZE`           | Integer |       16        | Instruction Cache size in Kbytes                             |\n| `ICACHE_BLOCK_SIZE`     | Integer |       32        | Instruction Cache block length in bytes                      |\n| `ICACHE_WAYS`           | Integer |        2        | Instruction Cache associativity                              |\n| `ICACHE_REPLACE_ALG`    | Integer |        0        | Instruction Cache replacement algorithm 0: Random 1: FIFO 2: LRU |\n| `DCACHE_SIZE`           | Integer |       16        | Data Cache size in Kbytes                                    |\n| `DCACHE_BLOCK_SIZE`     | Integer |       32        | Data Cache block length in bytes                             |\n| `DCACHE_WAYS`           | Integer |        2        | Data Cache associativity                                     |\n| `DCACHE_REPLACE_ALG`    | Integer |        0        | Data Cache replacement algorithm 0: Random 1: FIFO 2: LRU    |\n| `HARTID`                | Integer |        0        | Hart Identifier                                              |\n| `PC_INIT`               | Address |     `h200`      | Program Counter Initialisation Vector                        |\n| `MNMIVEC_DEFAULT`       | Address | `PC_INIT-‘h004` | Machine Mode Non-Maskable Interrupt vector address           |\n| `MTVEC_DEFAULT`         | Address | `PC_INIT-‘h040` | Machine Mode Interrupt vector address                        |\n| `HTVEC_DEFAULT`         | Address | `PC_INIT-‘h080` | Hypervisor Mode Interrupt vector address                     |\n| `STVEC_DEFAULT`         | Address | `PC_INIT-‘h0C0` | Supervisor Mode Interrupt vector address                     |\n| `UTVEC_DEFAULT`         | Address | `PC_INIT-‘h100` | User Mode Interrupt vector address                           |\n| `BP_LOCAL_BITS`         | Integer |       10        | Number of local predictor bits                               |\n| `BP_GLOBAL_BITS`        | Integer |        2        | Number of global predictor bits                              |\n| `BREAKPOINTS`           | Integer |        3        | Number of hardware breakpoints                               |\n| `TECHNOLOGY`            | String  |    `GENERIC`    | Target Silicon Technology                                    |\n\n## License\n\nReleased under the RoaLogic [Non-Commercial License](/LICENSE.md)\n\n## Dependencies \nRequires the Roa Logic [Memories IPs](https://github.com/RoaLogic/memory) and [AHB3Lite Package](https://github.com/RoaLogic/ahb3lite_pkg). These are included as submodules. \n\nAfter cloning the RV12 git repository, perform a `git submodule init` to download the submodules.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FRoaLogic%2FRV12","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FRoaLogic%2FRV12","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FRoaLogic%2FRV12/lists"}