{"id":20981985,"url":"https://github.com/lowrisc/synfi","last_synced_at":"2025-05-14T16:31:03.672Z","repository":{"id":44401684,"uuid":"414278812","full_name":"lowRISC/synfi","owner":"lowRISC","description":"OpenTitan FI formal verification framework","archived":false,"fork":false,"pushed_at":"2023-08-29T08:58:47.000Z","size":443,"stargazers_count":10,"open_issues_count":1,"forks_count":6,"subscribers_count":20,"default_branch":"master","last_synced_at":"2025-04-02T20:38:25.768Z","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":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lowRISC.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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":"2021-10-06T15:59:04.000Z","updated_at":"2024-09-12T15:02:09.000Z","dependencies_parsed_at":"2024-11-19T05:45:03.129Z","dependency_job_id":"eb5faf14-c727-41e4-8609-cd9a09fba43a","html_url":"https://github.com/lowRISC/synfi","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lowRISC%2Fsynfi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lowRISC%2Fsynfi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lowRISC%2Fsynfi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lowRISC%2Fsynfi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lowRISC","download_url":"https://codeload.github.com/lowRISC/synfi/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254182805,"owners_count":22028365,"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":[],"created_at":"2024-11-19T05:42:08.576Z","updated_at":"2025-05-14T16:31:03.217Z","avatar_url":"https://github.com/lowRISC.png","language":"Python","readme":"# SYNFI: FI Formal Verification Framework\n## Introduction\nThis framework is capable of analyzing the effects of faults induced into\nsynthesized gate-level netlists. The tool automatically extracts the circuit to\nanalyze based on a fault specification file and injects multiple faults with\ndifferent effects into this subcircuit. The effectiveness of the injected faults\nare evaluated and the tool verifies that the installed fault countermeasures\ndetect these faults.\n\nThe framework is broken into three phases:\n\n1. a preprocessing phase,\n2. a fault injection phase, and\n3. an evaluation phase.\n\nFurther details can be found in the paper \\[[0](#Publication)\\].\n\n## Usage\nInstall python3 and the corresponding packages:\n```console\n$ pip3 install -r requirements.txt\n```\n\nThe `examples/circuit.json` file contains the netlist for the \n[aes_cipher_control](https://github.com/lowRISC/opentitan/blob/master/hw/ip/aes/rtl/aes_cipher_control.sv) \nmodule synthesized with the \n[provided](https://github.com/lowRISC/opentitan/tree/master/hw/ip/aes/pre_syn) \nYosys flow.\n\nTo convert a cell library (e.g., the \n[NANGATE45](https://github.com/The-OpenROAD-Project/OpenROAD-flow-scripts/tree/master/flow/platforms/nangate45/lib) library), \nadapt the `examples/config.json` file and start the cell library generator:\n```console\n$ ./cell_lib_generator.py -l NangateOpenCellLibrary_typical.lib -n 16 \\\n    -c examples/config.json -o cell_lib_nangate45_autogen.py\n```\n\nTo start the preprocessing phase for this  example netlist, create \nthe `output` directory and invoke the parser:\n```console\n$ ./parse.py -j examples/circuit.json -m aes_cipher_control \\\n    -o output/circuit.pickle\n```\nThe parser preprocesses the provided netlist and creates a directed graph, which\nis then used by the fault injector to evaluate the effects of the induced \nfaults. To run the fault injector with the example netlist and the example fault\nspecification file, execute the fi_injector tool:\n```console\n$ ./fi_injector.py -p output/circuit.pickle -f examples/fault_model.json -n 16 \\\n    -c cell_lib_nangate45_autogen.py\n```\n\n## Publication\n[0]: Nasahl, P., Osorio, M., Vogel, P., Schaffner, M., Trippel, T., Rizzo, D. and \nMangard, S., 2022. [SYNFI: Pre-Silicon Fault Analysis of an Open-Source Secure Element](https://arxiv.org/pdf/2205.04775). \nIACR Transactions on Cryptographic Hardware and Embedded Systems.\n\n## Licensing\n\nUnless otherwise noted, everything in this repository is covered by the Apache\nLicense, Version 2.0 (see [LICENSE](./LICENSE) for full text).\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flowrisc%2Fsynfi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flowrisc%2Fsynfi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flowrisc%2Fsynfi/lists"}