{"id":31815783,"url":"https://github.com/xilinx/libsystemctlm-soc","last_synced_at":"2025-10-11T09:24:13.219Z","repository":{"id":46863090,"uuid":"72154676","full_name":"Xilinx/libsystemctlm-soc","owner":"Xilinx","description":"SystemC/TLM-2.0 Co-simulation framework","archived":false,"fork":false,"pushed_at":"2025-05-21T12:13:47.000Z","size":4398,"stargazers_count":243,"open_issues_count":14,"forks_count":74,"subscribers_count":21,"default_branch":"master","last_synced_at":"2025-05-21T13:36:47.602Z","etag":null,"topics":["co-simulation","qemu","systemc","tlm2"],"latest_commit_sha":null,"homepage":"https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/862421112/Co-simulation","language":"Verilog","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/Xilinx.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":"2016-10-27T22:54:33.000Z","updated_at":"2025-05-21T12:13:43.000Z","dependencies_parsed_at":"2023-01-29T14:00:33.397Z","dependency_job_id":"097aa573-56a3-485e-ad27-e6d3cdf4e985","html_url":"https://github.com/Xilinx/libsystemctlm-soc","commit_stats":{"total_commits":575,"total_committers":21,"mean_commits":27.38095238095238,"dds":0.5721739130434782,"last_synced_commit":"5e147e7d973c1e96ffbb4aa3d787e07e468290e1"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Xilinx/libsystemctlm-soc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Xilinx%2Flibsystemctlm-soc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Xilinx%2Flibsystemctlm-soc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Xilinx%2Flibsystemctlm-soc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Xilinx%2Flibsystemctlm-soc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Xilinx","download_url":"https://codeload.github.com/Xilinx/libsystemctlm-soc/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Xilinx%2Flibsystemctlm-soc/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279006755,"owners_count":26084178,"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-10-11T02:00:06.511Z","response_time":55,"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":["co-simulation","qemu","systemc","tlm2"],"created_at":"2025-10-11T09:24:12.084Z","updated_at":"2025-10-11T09:24:13.214Z","avatar_url":"https://github.com/Xilinx.png","language":"Verilog","funding_links":[],"categories":[],"sub_categories":[],"readme":"# LibSystemCTLM-SoC\n\nThis library contains various SystemC/TLM-2.0 modules that enable co-simulation of Xilinx QEMU, SystemC/TLM-2.0 models and RTL.\n\nQEMU gets connected by libremote-port. It implements a socket based transaction protocol by serializing/de-serializing QEMU transactions and TLM Generic Payloads.\n\nRTL needs to be converted to something that interfaces with SystemC by a tool such as Verilator or equivalent commercial tools.\n\n## Quickstart\n\nThere are two ways to run the examples\n\n#### Using Docker Image\n`docker run --hostname builder -it xilinxset/eri-july-2019:full`\n\nFull description on how to run the examples can be found here: https://hub.docker.com/r/xilinxset/eri-july-2019\n\n#### Setting up your environment locally\nAssuming you've installed the [Dependencies](#dependencies) and created the [Configuration](#configuration) file.\n\nClone submodules:\n```bash\ngit submodule update --init --recursive\n```\n\nTo run the examples, change directory to the test directory and run:\n```\ncd tests/\nmake examples-run\n\n```\nYou'll then for example get a build of the example-rtl-axi4 example that includes a verilog AXI4 device hooked up to co-simulate with SystemC/TLM. A VCD trace should have been generated that you can look at:\n\n`gtkwave example-rtl-axi4/example-rtl-axi4.vcd`\n\n## Dependencies\n\nYou'll need to install the following packages:\n`apt-get install gcc g++ verilator libsystemc-dev gtkwave rapidjson-dev python-pytest python-pytest-xdist`\n\nOn some distros, the libsystemc-dev package may not exist, in that case you'll need to install SystemC manually.\nThe SystemC libraries can be found here:http://www.accellera.org/downloads/standards/systemc\n\nTo be able to generate the HTML test reports, you'll need to install pytest-html. This may not be available on your distro but can be found with `pip:pip install pytest-html`\n\nPlease note that you'll need GCC v5.4.0 at minimum to build this software.\n\n## Limitations\n\nBuilding and running libsystemctlm-soc is not supported for Cent OS.\n\nCentOS 7 - The default gcc version for this distro is 4.8.5, you'll need to manually build and install GCC 5.4.0 and above. Calling convention for pytest differs, should be called as py.test instead of pytest.\n\n\n## Configuration\n\nTo run the test-suites and examples, libsystemctlm-soc by default assumes that the SystemC libraries are installed under `/usr/local/systemc-2.3.2/`\n\nIf you are using a different version or have installed the libraries on some other location, you'll need to create a `.config.mk` file to specify this.\n\nAlso, if you used specific c++ flags to build the SystemC libraries, such as manually specifying `-std=gnu++17` or something like that, you can specify that in the config files.\n\nHere's an example with SystemC installed under `/opt/`:\n`SYSTEMC = /opt/systemc-2.3.2`\n\nHere's another example with SystemC installed under `/opt/` and built with gnu++17.\n`SYSTEMC = /opt/systemc-2.3.2\nCXXFLAGS +=-std=gnu++17`\n\n### How To Embed Into Your Project\n\nThis repository contains the code and header files required to connect your SystemC application with Xilinx's QEMU. There are three directories.\n```\n libsystemctlm-soc\n  |\n  |-zynq\n  |  Contains the wrapper files required to interface a Zynq-7000 QEMU model\n  |    of the PS with a SystemC model of the PL.\n  |-zynqmp\n  |  Contains the wrapper files required to interface a ZynqMP QEMU model\n  |    of the PS with a SystemC model of the PL.\n  |-libremote-port\n  |  Contains the communitcation library for Remote-Port (RP) that is used for\n  |   inter-simulator communication.\n ```\n\n### Including in your project\n\nTo include this library in your project you can follow the steps below. This\nassumes that you have cloned this repo in the root direcotry of your project.\n\nSee: https://github.com/Xilinx/systemctlm-cosim-demo for an example project using this\nlibrary.\n\nInclude this in your Makefile for Zynq-7000 projects:\n```\n  LIBSOC_ZYNQ_PATH=$(LIBSOC_PATH)/zynq\n  SC_OBJS += $(LIBSOC_ZYNQ_PATH)/xilinx-zynq.o\n  CPPFLAGS += -I $(LIBSOC_ZYNQ_PATH)\n```\nInclude this in your Makefile for ZynqMP projects:\n```\n  LIBSOC_ZYNQMP_PATH=$(LIBSOC_PATH)/zynqmp\n  SC_OBJS += $(LIBSOC_ZYNQMP_PATH)/xilinx-zynqmp.o\n  CPPFLAGS += -I $(LIBSOC_ZYNQMP_PATH)\n```\nInclude this in your Makefile for all projects:\n ```\n  LIBSOC_PATH=libsystemctlm-soc\n  CPPFLAGS += -I $(LIBSOC_PATH)\n\n  LIBRP_PATH=$(LIBSOC_PATH)/libremote-port\n  C_OBJS += $(LIBRP_PATH)/safeio.o\n  C_OBJS += $(LIBRP_PATH)/remote-port-proto.o\n  C_OBJS += $(LIBRP_PATH)/remote-port-sk.o\n  SC_OBJS += $(LIBRP_PATH)/remote-port-tlm.o\n  SC_OBJS += $(LIBRP_PATH)/remote-port-tlm-memory-master.o\n  SC_OBJS += $(LIBRP_PATH)/remote-port-tlm-memory-slave.o\n  SC_OBJS += $(LIBRP_PATH)/remote-port-tlm-wires.o\n  SC_OBJS += $(LIBRP_PATH)/remote-port-tlm-ats.o\n  SC_OBJS += $(LIBRP_PATH)/remote-port-tlm-pci-ep.o\n  CPPFLAGS += -I $(LIBRP_PATH)\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxilinx%2Flibsystemctlm-soc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxilinx%2Flibsystemctlm-soc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxilinx%2Flibsystemctlm-soc/lists"}