{"id":30842763,"url":"https://github.com/tum-ei-eda/vrtlmod","last_synced_at":"2025-09-06T21:07:54.488Z","repository":{"id":142916681,"uuid":"546121468","full_name":"tum-ei-eda/vrtlmod","owner":"tum-ei-eda","description":"  vRTLmod modifies Verilator generated RTL simulation code for faul-injection purposes. It transforms source code with the help of LLVM/Clang-Tools and generates a fault injection API.","archived":false,"fork":false,"pushed_at":"2024-09-04T13:58:15.000Z","size":615,"stargazers_count":13,"open_issues_count":3,"forks_count":5,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-07-08T19:31:10.901Z","etag":null,"topics":["clang","fault-injection","llvm","register-transfer-level","verilator"],"latest_commit_sha":null,"homepage":"","language":"C++","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/tum-ei-eda.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-10-05T15:02:30.000Z","updated_at":"2024-09-09T12:04:39.000Z","dependencies_parsed_at":"2024-09-05T17:13:48.552Z","dependency_job_id":"6f949b33-7c6f-4353-837b-3cf671215ee2","html_url":"https://github.com/tum-ei-eda/vrtlmod","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/tum-ei-eda/vrtlmod","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tum-ei-eda%2Fvrtlmod","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tum-ei-eda%2Fvrtlmod/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tum-ei-eda%2Fvrtlmod/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tum-ei-eda%2Fvrtlmod/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tum-ei-eda","download_url":"https://codeload.github.com/tum-ei-eda/vrtlmod/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tum-ei-eda%2Fvrtlmod/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273712841,"owners_count":25154570,"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","status":"online","status_checked_at":"2025-09-05T02:00:09.113Z","response_time":402,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["clang","fault-injection","llvm","register-transfer-level","verilator"],"created_at":"2025-09-06T21:07:53.409Z","updated_at":"2025-09-06T21:07:54.479Z","avatar_url":"https://github.com/tum-ei-eda.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# vRTLmod - Verilated RTL Injection modifier\n\n## Brief\nThe verilated RTL modifier (vRTLmod) is an LLVM based open-source tool to enable fault injection in verilator RTL (vRTL) simulations.\nWithin an Clang-Frontend (LLVM) tool it automatically adds fault injection capability to \u003ca href=\"https://www.veripool.org/wiki/verilator\" title=\"Verilator homepage\"\u003eVerilator\u003c/a\u003e output. Additionally, `vRTLmod` can make use of its own XML output `*-vrtlmod.xml` as a whitelist filter argument to allow manual steering of wanted/unwanted injectable variables.\n\n## Publication\n\nIf you use vRTLmod in your academic work you can cite it like this:\n\n\u003cdetails\u003e\n\u003csummary\u003evRTLmod Publication\u003c/summary\u003e\n\u003cp\u003e\n\n```\n@inproceedings{Geier_vRTLmod_2023,\n  author = {Geier, Johannes and Mueller-Gritschneder, Daniel},\n  booktitle = {Proceedings of the 20th ACM International Conference on Computing Frontiers},\n  doi = {10.1145/3587135.3591435},\n  pages = {387--388},\n  publisher = {Association for Computing Machinery},\n  series = {20th ACM International Conference on Computing Frontiers},\n  title = {{vRTLmod: An LLVM Based Open-Source Tool to Enable Fault Injection in Verilator RTL Simulations}},\n  url = {https://doi.org/10.1145/3587135.3591435},\n  year = {2023}\n}\n```\n\n\u003c/p\u003e\n\u003c/details\u003e\n\n## Dependencies\nBesides standard (gmake, cmake, gcc, ...)\n\n1. Verilator  - tested with v4.202, v4.204, and v4.228 (see: https://www.veripool.org/wiki/verilator and install guide). Currently no support for Verilator version \u003c4 and \u003e4!\n2. LLVM - tested v13.0.1 built with `-D LLVM_ENABLE_PROJECTS=\"clang;clang-tools-extra\"`\n3. Boost filesystem\n4. For Tests: Conan v\u003c2.0, tested with 1.59.0 (`pip install --force-reinstall \"conan==1.59.0\"`)\n\n## Build\n\n1. **Required environment:**\n\n```\n\t[BUILD]: export LLVM_DIR=\u003cpath/to/llvm/install/dir\u003e/lib/cmake/llvm\n\t[BUILD]: export VERILATOR_ROOT=\u003cpath/to/verilator/build/or/install/directory\u003e\n```\n\n2. **CMake command line arguments:**\n\n```\ncmake -S . -B build -D LLVM_DIR=\u003cpath/to/llvm/install/dir\u003e -D VERILATOR_ROOT=\u003cpath/to/verilator/build/or/install/directory\u003e [-D BUILD_TESTING=Off]\ncmake --build build\n```\n\n## Usage\n\n1. **Required inputs:**\n\t- \u003ca href=\"https://www.veripool.org/wiki/verilator\" title=\"Verilator homepage\"\u003eVerilator\u003c/a\u003e output: `\u003cVRTL-files\u003e` `\u003cVRTL-Hpp-files\u003e`\n\n2. **Execution:**\n\n```\nvrtlmod [--systemc] [--wl-regxml=\u003c*-vrtlmod.xml\u003e] --out=\u003coutputdir\u003e \u003cVRTL-Cpp-files\u003e -- clang++ -I\u003cVRTL-Hpp-dir\u003e -I$LLVM_DIR/lib/clang/.../include -I$VERILATOR_ROOT/include [-I\u003cpath/to/systemc/include\u003e]\n```\n\nor use installed `vrtlmod-config.cmake` in CMake environment.\n\nThe output can be found at `\u003coutputdir\u003e/` in form of altered Cpp files (`\u003cvRTL-Cpp-files\u003e`) and the built injection API inside `\u003coutputdir\u003e/` in the form of `\u003ctop\u003e_vrtlmodapi.{cpp,hpp}` including the target dictionary and API wrapper.\n\n## Examples\n\nThe `-D BUILD_TESTING=On` option in cmake enables a SystemC and C++ verilate-\u003evrtlmod flow for the `test/fiapp/fiapp.sv` SystemVerilog example.\nIn addition, a SystemC (`test/fiapp/sc_fiapp_test.cpp`) and C++ (`test/fiapp/fiapp_test.cpp`) testbench showcases the usage of the generated fault injection API.\n\nThese tests are intended, both, as a form of unit-tests for `vrtlmod` as well as an example for its integration in other fault injection projects.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftum-ei-eda%2Fvrtlmod","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftum-ei-eda%2Fvrtlmod","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftum-ei-eda%2Fvrtlmod/lists"}