{"id":13537244,"url":"https://github.com/cornell-brg/pymtl3-net","last_synced_at":"2026-04-08T12:04:20.935Z","repository":{"id":37734275,"uuid":"169462063","full_name":"cornell-brg/pymtl3-net","owner":"cornell-brg","description":"Project repo for the POSH on-chip network generator","archived":false,"fork":false,"pushed_at":"2025-03-18T03:51:34.000Z","size":2175,"stargazers_count":50,"open_issues_count":14,"forks_count":12,"subscribers_count":15,"default_branch":"master","last_synced_at":"2025-09-25T05:40:22.726Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","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/cornell-brg.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}},"created_at":"2019-02-06T19:16:30.000Z","updated_at":"2025-08-21T06:52:46.000Z","dependencies_parsed_at":"2024-01-17T16:06:51.509Z","dependency_job_id":"49812974-695e-4ae3-94da-63c2b67addd2","html_url":"https://github.com/cornell-brg/pymtl3-net","commit_stats":{"total_commits":916,"total_committers":7,"mean_commits":"130.85714285714286","dds":0.3558951965065502,"last_synced_commit":"7f8bfd800627364cfc37dc5d6a36333ee2e48c99"},"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/cornell-brg/pymtl3-net","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cornell-brg%2Fpymtl3-net","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cornell-brg%2Fpymtl3-net/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cornell-brg%2Fpymtl3-net/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cornell-brg%2Fpymtl3-net/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cornell-brg","download_url":"https://codeload.github.com/cornell-brg/pymtl3-net/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cornell-brg%2Fpymtl3-net/sbom","scorecard":{"id":305130,"data":{"date":"2025-08-11","repo":{"name":"github.com/cornell-brg/pymtl3-net","commit":"82736d60695993b70ecbca1e36776241e5b40859"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.4,"checks":[{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":0,"reason":"Found 1/29 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/python-package-ci.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python-package-ci.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/cornell-brg/pymtl3-net/python-package-ci.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python-package-ci.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/cornell-brg/pymtl3-net/python-package-ci.yml/master?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/python-package-ci.yml:42","Warn: pipCommand not pinned by hash: .github/workflows/python-package-ci.yml:43","Warn: pipCommand not pinned by hash: .github/workflows/python-package-ci.yml:44","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   3 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: BSD 3-Clause \"New\" or \"Revised\" License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 2 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-17T21:50:06.366Z","repository_id":37734275,"created_at":"2025-08-17T21:50:06.366Z","updated_at":"2025-08-17T21:50:06.366Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31554141,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-08T10:21:54.569Z","status":"ssl_error","status_checked_at":"2026-04-08T10:21:38.171Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5: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-08-01T09:00:56.734Z","updated_at":"2026-04-08T12:04:20.905Z","avatar_url":"https://github.com/cornell-brg.png","language":"Python","funding_links":[],"categories":["Connectivity"],"sub_categories":[],"readme":"\u003cpre\u003e\n=======================================\n    ____        ____  _______   __\n   / __ \\__  __/ __ \\/ ____/ | / /\n  / /_/ / / / / / / / /   /  |/ /\n / ____/ /_/ / /_/ / /___/ /|  /\n/_/    \\__, /\\____/\\____/_/ |_/\n      /____/\n=======================================\n\u003c/pre\u003e\n[![Github Action](https://github.com/cornell-brg/pymtl3-net/actions/workflows/python-package-ci.yml/badge.svg)](https://github.com/cornell-brg/pymtl3-net/actions/workflows/python-package-ci.yml)\n\nPyOCN (PyMTL3-net) is a parameterizable and powerful OCN (on-chip network) generator to generate synthesizable Verilog for different OCNs based on user-specified configurations (e.g., network size, topology, number of virtual channels, routing strategy, switching arbitration, etc.). It comes with PyMTL implementation and is the first one to provide functional-level (FL), cycle-level (CL), and register-transfer-level (RTL) modeling for building OCNs. Furthermore, PyOCN is open-source with a modular design and standardized interfaces between modules. The configurability and extensibility are maximized by its parametrization system to fit in various research and industrial needs.\n\nPyOCN supports OCN characterization by providing scripts (https://github.com/cornell-brg/mflowgen) that semi-automatically takes the generated Verilog and net activity file to drive a standard-cell-based electronic-design- automation (EDA) toolflow for area, energy, and timing analysis. \n\nDemo\n--------------------------------------------------------\n\nWe have a demo at repl.it (https://repl.it/@ChengTan/pyocn-demo), which shows the key features of PyOCN.\n\n\nRelated publications\n--------------------------------------------------------------------------\n\n- Cheng Tan, Yanghui Ou, Shunning Jiang, Peitian Pan, Christopher Torng, Shady Agwa, and Christopher Batten. _\"PyOCN: A Unified Framework for Modeling, Testing, and Evaluating On-Chip Networks.\"_ 37th IEEE International Conference on Computer Design. (ICCD-37), Nov 2019.\n\n- Shunning Jiang, Christopher Torng, and Christopher Batten. _\"An Open-Source Python-Based Hardware Generation, Simulation, and Verification Framework.\"_ First Workshop on Open-Source EDA Technology (WOSET'18) held in conjunction with ICCAD-37, Nov. 2018.\n\n- Shunning Jiang, Berkin Ilbeyi, and Christopher Batten. _\"Mamba: Closing the Performance Gap in Productive Hardware Development Frameworks.\"_ 55th ACM/IEEE Design Automation Conf. (DAC-55), June 2018.\n\n\nLicense\n--------------------------------------------------------------------------\n\nPyOCN is offered under the terms of the Open Source Initiative BSD\n3-Clause License. More information about this license can be found here:\n\n  - http://choosealicense.com/licenses/bsd-3-clause\n  - http://opensource.org/licenses/BSD-3-Clause\n\n\nInstallation\n--------------------------------------------------------\n\nPyOCN requires Python3.7 and has the following additional prerequisites:\n\n - graphviz, verilator\n - git, Python headers, and libffi\n - virtualenv\n - PyMTL3\n\nThe steps for installing these prerequisites and PyOCN on a fresh Ubuntu\ndistribution are shown below. They have been tested with Ubuntu Trusty\n14.04.\n\n### Install python3\n\n```\n % sudo apt-get install python3.7\n```\n\n### Install graphviz\n\n```\n % sudo apt-get install -y graphviz\n```\n\n### Install Verilator\n\n[Verilator][4] is an open-source toolchain for compiling Verilog RTL\nmodels into C++ simulators. PyOCN uses Verilator for Verilog import.\n\n```\n % wget https://github.com/cornell-brg/verilator-travisci-cache/raw/master/verilator-travis-4.008.tar.gz\n % tar -C ${HOME} -xzf verilator-travis-4.008.tar.gz\n % export VERILATOR_ROOT=${HOME}/verilator\n % export PATH=${VERILATOR_ROOT}/bin:${PATH}\n % export PYMTL_VERILATOR_INCLUDE_DIR=${VERILATOR_ROOT}/share/verilator/include\n % verilator --version\n```\n\n [4]: http://www.veripool.org/wiki/verilator\n\n### Install git, Python headers, and libffi\n\nWe need to install the Python headers and libffi in order to be able to\ninstall the cffi Python package. cffi provides an elegant way to call C\nfunctions from Python, and PyMTL uses cffi to call C code generated by\nVerilator. We will use git to grab the PyMTL source. The following\ncommands will install the appropriate packages:\n\n```\n % sudo apt-get install git python-dev libffi-dev\n```\n\n### Create virtual environment\n\nWhile not strictly necessary, we strongly recommend using [virtualenv][5]\nto install PyMTL3 and the Python packages that PyMTL3 depends on.\nvirtualenv enables creating isolated Python environments. The following\ncommands will create and activate the virtual environment:\n\n```\n % python3 -m venv ${HOME}/venv\n % source ${HOME}/venv/bin/activate\n```\n\n [5]: https://virtualenv.pypa.io/en/latest/\n\n### Install PyMTL3 and Python requirements\n\n```\n % pip install pymtl3\n % pip install --upgrade pip setuptools twine\n % pip install --requirement requirements.txt\n % pip list\n```\n\n### Clone PyOCN repo\n\nWe can now use git to clone the PyOCN repo.\n\n```\n % mkdir -p ${HOME}/cornell-brg\n % cd ${HOME}/cornell-brg\n % git clone --depth=50 https://github.com/cornell-brg/posh-ocn.git cornell-brg/posh-ocn\n```\n\nWhen you're done testing/developing, you can deactivate the virtualenv::\n\n```\n % deactivate\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcornell-brg%2Fpymtl3-net","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcornell-brg%2Fpymtl3-net","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcornell-brg%2Fpymtl3-net/lists"}