gtwhy / systemctlm-cosim-demo Goto Github PK
View Code? Open in Web Editor NEWThis project forked from xilinx/systemctlm-cosim-demo
License: Other
This project forked from xilinx/systemctlm-cosim-demo
License: Other
TLM-COSIM-DEMO --------------------------------------- This contains a small SystemC/TLM-2.0 based subsystem for demo purposes. It has an interconnect connecting a remote-port attached QEMU instance, a demo/debug-device, a small DMA and if verilator is available a timer. Note that the remote-port instance connecting to QEMU can serve multiple QEMU instances. In fact, this demo can run connected to the ZynqMP platform with 2 external QEMU instances (APU/RPU and PMU). All of these instances can access the TLM world. The demo/debug-device is used to read out System-C time, output debug trace/events and to end the simulation. The DMA is used to demonstrate the bus mastering capabilities of the TLM world back into QEMU via remote-port. The timer is a minimalistic APB connected timer written in verilog. If verilator is available, this timer can be hooked into the simulation. For TLM to be able to talk to the APB timer, a TLM-2-APB bridge was written in System-C. BUILD --------------------------------------- Before building you will need to ensure that you have SystemC and SCML available. The demo was prepared assuming the following versions: SystemC: 2.3.2 The Makefile assumes that both are installed in the directories below: SystemC: /usr/local/systemc-2.3.2/ If you have them installed in different directories point the Makefile to the correct directory by setting the variables SYSTEMC. You will also need to clone the libremote-port submodule, by running: $ git submodule update --init libsystemctlm-soc Also make sure to have the <linux/pci_regs.h> header in the default search directory list for your version of CPP (the header is required by the pcie-model submodule). On a Ubuntu LTS system the header can be installed through the `linux-libc-dev` packages. $ sudo apt-get install linux-libc-dev Once everything is installed you can just run make. If SystemC is in a different directory then mentioned about you will need to specify the directory by setting the variables mentioned above. You can also configure the build by creating a .config.mk file. There are other options that can be set, e.g: HAVE_VERILOG=n HAVE_VERILOG_VERILATOR=n HAVE_VERILOG_VCS=n RUN --------------------------------------- When running you will need to make sure the program can link to your SystemC/TLM libraries. You will also need to give arguments to the application. The first argument points to the QEMU machine-path to use. The second argument is the icount value to use. The arguments should line up with the QEMU command line arguments. A Versal example: In one terminal, in the demo directory LD_LIBRARY_PATH=/usr/local/systemc-2.3.2/lib-linux64/ ./versal_demo \ unix:/tmp/qemu/qemu-rport-_amba@0_cosim@0 10000 A ZynqMP example: In one terminal, in the demo directory LD_LIBRARY_PATH=/usr/local/systemc-2.3.2/lib-linux64/ ./zynqmp_demo \ unix:./qemu-tmp/qemu-rport-_amba@0_cosim@0 10000 A Zynq-7000 example: LD_LIBRARY_PATH=/usr/local/systemc-2.3.2/lib-linux64/ ./zynq_demo \ unix:./qemu-tmp/qemu-rport-_cosim@0 1000000 In another terminal you will need to start up the PS. In this case we are going to start up a PetaLinux QEMU session and use the Linux kernel to probe the SystemC side. You could also start up your own kernel with the required drivers or a baremetal application. See here for instructions on how to start the PetaLinux QEMU session: http://www.wiki.xilinx.com/Co-simulation IP-XACT DEMO --------------------------------------- This repository also contains a demo where a QEMU / SystemC co-simulation is automatically generated from an IP-XACT description. More information about this demo and instructions for how to launch it manually can be found inside the 'zynqmp_lmac2_ipxact_demo.txt' file.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.