Git Product home page Git Product logo

wyvernsemi / mico32 Goto Github PK

View Code? Open in Web Editor NEW
8.0 6.0 3.0 12.56 MB

LatticeMico32 instruction set simulator project

Home Page: http://www.anita-simulators.org.uk/wyvernsemi

License: GNU General Public License v3.0

Inno Setup 1.41% Makefile 1.09% C++ 47.54% C 11.76% Assembly 27.21% Shell 0.53% Python 10.25% Batchfile 0.20%
latticemico32 cpu-model iss c-plus-plus 32-bits processor fpga soft-core linux python3 tkinter gdb debug tcp-socket serial-communication com0com embedded risc

mico32's Introduction

mico32

LatticeMico32 instruction set simulator project

Includes a C/C++ model of the lm32 CPU, with the following features:

  • All supported core instructions
  • All h/w modelled for configurable instructions
    • Multiplier
    • Divider
    • Sign extender
    • Barrel shifter
  • Configurable internal memory
  • All h/w debug break- and watchpoints modelled
  • Cycle count functionality
  • Configurable 'hardware', as per the Mico32
  • Run-time and static disassembly
  • Data and Instruction caches for timing model
  • Optional MMU capability, via Data and Instruction TLBs
  • Extensibility via callbacks
    • Intercept memory accesses
    • Regular callback with ability for external interrupt generation
    • JTAG register access callback
  • Configurable user defined execution break points
    • On a given address
    • After a single step, or clock tick
    • After a fixed number of cycles
    • On 'hardware' debug break point
  • Access to internal Memory
  • Access to internal state
  • Compatible with Lattice Semiconductor GNU tool chain (lm32-elf-xx)
  • Both C++ and C linkage interfaces available
  • Separate GDB remote debug interface code is included
    • Supports both virtual serial and TCP socket connections

There are build options for MSVC 2010, CYGWIN and Linux, and an embedded Linux system model case study. A Python3 GUI is also bundled for configuring and running cpumico32, and a GDB remote target interface is available for non-intrusive debug.

[email protected]

www.anita-simulators.org.uk/wyvernsemi

mico32's People

Contributors

wyvernsemi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

mico32's Issues

Possibility of licensing mico32 under Apache or MIT license?

Hi!

I fell in love of your implementation of LM32 ISS. The code is extremely readable and well written, very exceptional quality I must say. I also love the way you decode and execute instructions with LUT function pointers instead of huge switch case that I have seen in most ISS's. I have inspected about dozen of open source ISS and mico32 stands out as clear winner in my eyes.

I'm planning to create an "embeddable virtual machine library" that could be used add safe/sandboxed scriptability to any C/C++ application, and I think some ISS could be the tech behind that. Benefits of using ISS over some script interpreters would be the compactness of the VM implementation and the ability to use gcc to produce the ebmeddable executables that run inside main app as a sub programs/plugins. Mico32 is very tempting choice for this project.

However, I think GPL can be quite limiting in libraries because it's viral nature. Any app that uses GPL library (even dynamically linked), needs to be GPL licensed as well. It limits the audience of such library quite a bit, which I see undesirable.

I'm writing to ask whether you would it be possible to obtain a copy of mico32 with Apache 2.0, MIT, or similar license that would make it widely usable as a library.

How does it sound to you as mico32 author?

Thanks and Best regards,
Tero

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.