All Projects → defparam → Higan Verilog

defparam / Higan Verilog

Licence: other
This is a higan/Verilator co-simulation example/framework

Projects that are alternatives of or similar to Higan Verilog

pdp6
PDP-6 Emulator
Stars: ✭ 47 (+34.29%)
Mutual labels:  fpga, emulation, verilog
Awesome Emulators Simulators
A curated list of software emulators and simulators of PCs, home computers, mainframes, consoles, robots and much more...
Stars: ✭ 94 (+168.57%)
Mutual labels:  emulator, emulation, simulation
EDSAC
FPGA Verilog implementation of 1949 EDSAC Computer with animated tape reader, panel, teleprinter and CRT scope
Stars: ✭ 28 (-20%)
Mutual labels:  fpga, emulation, verilog
Livehd
Live Hardware Development (LiveHD), a productive infrastructure for Synthesis and Simulation
Stars: ✭ 110 (+214.29%)
Mutual labels:  verilog, fpga, simulation
Edalize
An abstraction library for interfacing EDA tools
Stars: ✭ 270 (+671.43%)
Mutual labels:  verilog, fpga, simulation
Ryujinx
Experimental Nintendo Switch Emulator written in C#
Stars: ✭ 10,983 (+31280%)
Mutual labels:  emulator, emulation
Skyline
Run Nintendo Switch homebrew & games on your Android device!
Stars: ✭ 670 (+1814.29%)
Mutual labels:  emulator, emulation
Spinalhdl
Scala based HDL
Stars: ✭ 696 (+1888.57%)
Mutual labels:  verilog, fpga
Citra
A Nintendo 3DS Emulator
Stars: ✭ 7,009 (+19925.71%)
Mutual labels:  emulator, emulation
Jsnes
A JavaScript NES emulator.
Stars: ✭ 5,354 (+15197.14%)
Mutual labels:  emulator, emulation
Hdl
HDL libraries and projects
Stars: ✭ 727 (+1977.14%)
Mutual labels:  verilog, fpga
Giovanni
A Gameboy Emulator for the Apple Watch
Stars: ✭ 823 (+2251.43%)
Mutual labels:  emulator, emulation
Iroha
Intermediate Representation Of Hardware Abstraction (LLVM-ish for HLS)
Stars: ✭ 30 (-14.29%)
Mutual labels:  verilog, fpga
Zipcpu
A small, light weight, RISC CPU soft core
Stars: ✭ 640 (+1728.57%)
Mutual labels:  verilog, fpga
Platformio Vscode Ide
PlatformIO IDE for VSCode: The next generation integrated development environment for IoT
Stars: ✭ 676 (+1831.43%)
Mutual labels:  verilog, fpga
Cemu
Third-party TI-84 Plus CE / TI-83 Premium CE emulator, focused on developer features
Stars: ✭ 593 (+1594.29%)
Mutual labels:  emulator, emulation
Shadow
Shadow is a unique discrete-event network simulator that runs real applications like Tor, and distributed systems of thousands of nodes on a single machine. Shadow combines the accuracy of emulation with the efficiency and control of simulation, achieving the best of both approaches.
Stars: ✭ 769 (+2097.14%)
Mutual labels:  emulation, simulation
Image Processing
Image Processing Toolbox in Verilog using Basys3 FPGA
Stars: ✭ 31 (-11.43%)
Mutual labels:  verilog, fpga
Wakxy
Wakxy is a Wakfu packet sniffer (MITM). Written in C++/Qt with Javascript scripting support.
Stars: ✭ 12 (-65.71%)
Mutual labels:  emulator, emulation
Bsnes Mt
bsnes-based SNES emulator featuring pixel-perfect integer scaling, PNG screenshots, built-in hotkeys, translations, bug fixes, and more.
Stars: ✭ 22 (-37.14%)
Mutual labels:  emulator, emulation

higan-verilog - Completely Open Source Emulator/Verilog Co-simulation

Welcome! This repo is a clone of higan v106 modified to provide an example and framework of an Emulator/Simulator co-simulation model. As far as I know this is the first attempt to combine the Verilator engine into a software emulator.

In this example we extend the Super Famicom emulation model at memory-inline.hpp. The Bus::read and Bus::write routines have been modified to insert a proxy verilog model inline. All SNES reads and writes are pushed through this proxy verilog model into a class called verilog-device. The verilog-device class contains all the verilator model hooks to take all read/write operations and push it through a memory snoop model described in verilog (memsnoop.v).

We show an example of memsnoop.v being used to modify specific memory accesses and show how the verilog model effects the emulator.

Here is a video of the memsnoop.v model and Super Mario World: http://youtu.be/T88LhuoQ7pg

Info

  1. This architecture is not limited to higan, SNES or Verilator. Co-simulation has existed for a while in many RTL simulators. This modeling can be done on other emulators/platforms/roms. I only use higan and memsnoop on SMW to show as an example
  2. One can use this architecture to build a co-processor in verilog and test it on emulator
  3. One can use this architecture to validate emulation or RTL verilog co-processor models with each other

Limitations

  1. I only tested this on Ubuntu (however a Windows port may be possible)
  2. The GNUMakefile changes I made are bad. I am terrible at Makefile. Also for some reason verilator likes to generate all its *.h *.cpp *.o in the same obj directory. If someone would like to extend this and create a better Makefile then I welcome it!

How to install

  1. Install Verilator by following steps here: https://www.veripool.org/projects/verilator/wiki/Installing
  2. Install higan pre-reqs:
     sudo apt-get install build-essential libgtk2.0-dev libpulse-dev \
     mesa-common-dev libgtksourceview2.0-dev libcairo2-dev libsdl1.2-dev \
     libxv-dev libao-dev libopenal-dev libudev-dev
    
  3. Install gtkwave: sudo apt-get install gtkwave
  4. make -C higan
  5. make -C icarus

The current model of memsnoop.v passes all bus accesses without modification. Feel free to modify the verilog and re-compile higan.

This current model also dumps waveforms to memsnoop_dump.vcd to view in gtkwave. To turn off wave dump modify the verilog-device class.

WARNING: wave dumping fills the disk very fast. I capped the example at only the first 50000 samples.

List of notable files added/modified

  1. ./higan/GNUMakefile
  2. ./higan/sfc/GNUMakefile
  3. ./higan/sfc/sfc.hpp
  4. ./higan/memory/memory-inline.hpp
  5. ./higan/memory/verilog-device.hpp
  6. ./higan/memory/verilog-device.cpp
  7. ./higan/memory/memsnoop.v
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].