{"id":13648897,"url":"https://github.com/thoughtworks/hardposit-chisel3","last_synced_at":"2026-03-09T20:04:17.842Z","repository":{"id":66468758,"uuid":"247882682","full_name":"thoughtworks/hardposit-chisel3","owner":"thoughtworks","description":"Chisel library for Unum Type-III Posit Arithmetic","archived":false,"fork":false,"pushed_at":"2025-04-02T02:56:41.000Z","size":4521,"stargazers_count":37,"open_issues_count":4,"forks_count":9,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-22T11:42:44.454Z","etag":null,"topics":["chisel","chisel3","firrtl","floating-point","fpu","posit","rtl","scala","unum","verilog"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thoughtworks.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":"2020-03-17T04:56:06.000Z","updated_at":"2025-04-02T02:56:45.000Z","dependencies_parsed_at":null,"dependency_job_id":"fa6a51dc-94fb-4243-b833-1a9fbcf96d09","html_url":"https://github.com/thoughtworks/hardposit-chisel3","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtworks%2Fhardposit-chisel3","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtworks%2Fhardposit-chisel3/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtworks%2Fhardposit-chisel3/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtworks%2Fhardposit-chisel3/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thoughtworks","download_url":"https://codeload.github.com/thoughtworks/hardposit-chisel3/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252941280,"owners_count":21828842,"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":["chisel","chisel3","firrtl","floating-point","fpu","posit","rtl","scala","unum","verilog"],"created_at":"2024-08-02T01:04:37.900Z","updated_at":"2026-03-09T20:04:12.782Z","avatar_url":"https://github.com/thoughtworks.png","language":"C++","funding_links":[],"categories":["C++"],"sub_categories":[],"readme":"# Hardware Posit Arithmetic Units\n[![CircleCI](https://circleci.com/gh/thoughtworks/hardposit-chisel3.svg?style=svg)](https://circleci.com/gh/thoughtworks/hardposit-chisel3)\n\nThis project contains hardware units required for performing floating-point arithmetic operations on numbers represented in the Unum Type-III Posit standard. The parameterized modules have been described in Chisel and can generate synthesizable RTL for posits of any size.\n\n**DISCLAIMER**: \nThese units are works in progress and are not completely free of bugs or fully optimized.\n\n## Technical Report\n\n1. [CARRV2020 Paper](https://carrv.github.io/2020/papers/CARRV2020_paper_5_MV.pdf)\n2. [CARRV2020 Presentation](https://carrv.github.io/2020/videos/CARRV_5_MV.html)\n\n## About Posit Arithmetic\nUniversal Numbers, or unums, are a collection of number systems which features better efficiency and mathematically correct arithmetic properties compared to the IEEE-754 floating-point standard. Unums are capable of expressing real numbers and ranges of real numbers. The newest version Unum Type-III called [Posits] is a hardware-friendly representation designed as a drop-in replacement for IEEE floats.\n\nPosits behave much like a floating-point number of fixed size, rounding to the nearest expressible value if the result of a calculation is not expressible exactly. It offers more accuracy, and a larger dynamic range than IEEE floats with the same number of bits. Posit arithmetic tries to resolve the short-comings of IEEE floats using a dynamic representation that minimizes unusable representations and exceptional cases.\n\nFor more information about Universal numbers and Posit arithmetic and to follow community discussions:\n\n[Posit Hub] \\\n[Unum-computing Google group]\n\n## Calyx Binding\n\nCalyx is an infrastructure for accelerator design. This repo has bindings for Calyx Native. These bindings can allow Posit arithmetic for Calyx frontends such as Dahlia.\n\nMore information about the Calyx binding and it's usage is in the [lib directory](./lib/README.md)\n\n## Unit Testing\n\nThe posit arithmetic modules have been unit tested using Chisel IO testers. For better coverage a random test generator is also available enabled by the [universal] C++ template library. The test generator supplies tests to the hardware units which are simulated using [verilator]. \n\n#### Prerequisites:\n\n- Install ```cmake```(version 3.14 or later). Refer to https://cmake.org/download/ for installation.\n- Install ```sbt```. Refer to https://www.scala-sbt.org/download.html\n- Install ```verilator```. On MacOS you can install it using ```brew install verilator```. Refer to https://www.veripool.org/projects/verilator/wiki/Installing\n\n\nTo test the units using verilator:\n```sh\n$ git clone https://github.com/thoughtworks/hardposit-chisel3\n$ cd hardposit-chisel3\n$ git submodule update --init --recursive\n$ make\n```\n\nTo test the units using chiseltest:\n\n```sh\n$ sbt test\n```\n\n##  Contributions\nWe are working towards a complete posit implementation including support for *quire* and all the fused operations mandated by the posit arithmetic standard and optimizing the existing units. Feel free to open an issue or pull request if you find any bugs or possible improvements in the design.\n\n[Posit Hub]: \u003chttps://posithub.org/\u003e\n[Posits]: \u003chttps://posithub.org/docs/Posits4.pdf\u003e\n[Unum-computing Google group]: \u003chttps://groups.google.com/forum/#!forum/unum-computing\u003e\n[universal]: \u003chttps://github.com/stillwater-sc/universal\u003e\n[cmake]: \u003chttps://cmake.org/\u003e\n[verilator]: \u003chttps://www.veripool.org/wiki/verilator\u003e\n\n## Attribution\n\nIf used for research, please cite by the technical report\n\n```\n@inproceedings{ArunkumarM2020PERCPE,\n  title={PERC: Posit Enhanced Rocket Chip},\n  author={V ArunkumarM. and Sai Ganesh Bhairathi and Harshal G. Hayatnagarkar},\n  year={2020},\n  url={https://api.semanticscholar.org/CorpusID:221837450}\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthoughtworks%2Fhardposit-chisel3","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthoughtworks%2Fhardposit-chisel3","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthoughtworks%2Fhardposit-chisel3/lists"}