All Projects → GuzTech → shdl6800

GuzTech / shdl6800

Licence: ISC license
shdl6800: A 6800 processor written in SpinalHDL

Programming Languages

scala
5932 projects
Makefile
30231 projects

Projects that are alternatives of or similar to shdl6800

async fifo
A dual clock asynchronous FIFO written in verilog, tested with Icarus Verilog
Stars: ✭ 117 (+431.82%)
Mutual labels:  fpga, hdl
xeda
Cross EDA Abstraction and Automation
Stars: ✭ 25 (+13.64%)
Mutual labels:  fpga, hdl
SpinalCrypto
SpinalHDL - Cryptography libraries
Stars: ✭ 36 (+63.64%)
Mutual labels:  fpga, spinalhdl
virtio
Virtio implementation in SystemVerilog
Stars: ✭ 38 (+72.73%)
Mutual labels:  fpga, hdl
VGChips
Video Game custom chips reverse-engineered from silicon
Stars: ✭ 86 (+290.91%)
Mutual labels:  fpga, hdl
icebreaker-amaranth-examples
This repository contains iCEBreaker examples for Amaranth HDL.
Stars: ✭ 26 (+18.18%)
Mutual labels:  fpga, hdl
FPGACosmacELF
A re-creation of a Cosmac ELF computer, Coded in SpinalHDL
Stars: ✭ 31 (+40.91%)
Mutual labels:  fpga, spinalhdl
sphinxcontrib-hdl-diagrams
Sphinx Extension which generates various types of diagrams from Verilog code.
Stars: ✭ 37 (+68.18%)
Mutual labels:  fpga, hdl
DFiant
DFiant: A Dataflow Hardware Descripition Language
Stars: ✭ 21 (-4.55%)
Mutual labels:  fpga, hdl
Clio
Clio, ASPLOS'22.
Stars: ✭ 37 (+68.18%)
Mutual labels:  fpga, spinalhdl
gateware-ts
Hardware definition library and environment for designing and building digital hardware for FPGAs, using only open source tools
Stars: ✭ 83 (+277.27%)
Mutual labels:  fpga, hdl
naps
An experiment for building gateware for the axiom micro / beta using nmigen and yosys
Stars: ✭ 28 (+27.27%)
Mutual labels:  fpga, nmigen
hdelk
Web-based HDL diagramming tool
Stars: ✭ 51 (+131.82%)
Mutual labels:  fpga, hdl
pygears
HW Design: A Functional Approach
Stars: ✭ 122 (+454.55%)
Mutual labels:  fpga, hdl
Speech256
An FPGA implementation of a classic 80ies speech synthesizer. Done for the Retro Challenge 2017/10.
Stars: ✭ 51 (+131.82%)
Mutual labels:  fpga, hdl
SpinalDev
Docker Development Environment for SpinalHDL
Stars: ✭ 17 (-22.73%)
Mutual labels:  fpga, spinalhdl
tiny-tpu
Small-scale Tensor Processing Unit built on an FPGA
Stars: ✭ 61 (+177.27%)
Mutual labels:  fpga
zc pcie dma
DMA attacks over PCI Express based on Xilinx Zynq-7000 series SoC
Stars: ✭ 37 (+68.18%)
Mutual labels:  fpga
vscode-terosHDL
VHDL and Verilog/SV IDE: state machine viewer, linter, documentation, snippets... and more!
Stars: ✭ 325 (+1377.27%)
Mutual labels:  fpga
soap
🎯 soap - Structural Optimisation of Arithmetic Programs
Stars: ✭ 21 (-4.55%)
Mutual labels:  fpga

shdl6800

This is a SpinalHDL reimplementation of Robert Baruch's 6800 processor implementation written in nMigen.

Robert also posts videos about the implementation, which you can find on his YouTube channel.

Why?

I am experimenting with several different hardware description languages, and nMigen (combined with the LiteX toolbox) looks really good. I also have some experience with SpinalHDL, and while watching his videos, it looked surprisingly similar to how you would implement it in SpinalHDL. This reimplementation is just to see how similar it can be to his implementation.

Status

The following instructions have been implemented:

  • ADC (with formal add)
  • ADD (with formal add)
  • AND (with formal and)
  • ASL (with formal sh_rot)
  • ASR (with formal sh_rot)
  • BCC (with formal br)
  • BCS (with formal br)
  • BEQ (with formal br)
  • BGE (with formal br)
  • BGT (with formal br)
  • BHI (with formal br)
  • BIT (with formal bit)
  • BLE (with formal br)
  • BLS (with formal br)
  • BLT (with formal br)
  • BMI (with formal br)
  • BNE (with formal br)
  • BPL (with formal br)
  • BRA (with formal br)
  • BSR (with formal br)
  • BVC (with formal br)
  • BVS (with formal br)
  • CLC (with formal flag)
  • CLI (with formal flag)
  • CLR (with formal clr)
  • CLV (with formal flag)
  • CMP (with formal cmp)
  • COM (with formal com)
  • DEC (with formal inc_dec)
  • DEX (with formal inc_dec_x)
  • EOR (with formal eor)
  • INC (with formal inc_dec)
  • INX (with formal inc_dec_x)
  • JMP (with formal jmp)
  • LDA (with formal lda)
  • LSR (with formal sh_rot)
  • NEG (with formal neg)
  • NOP
  • ORA (with formal ora)
  • ROL (with formal sh_rot)
  • ROR (with formal sh_rot)
  • SBC (with formal sub)
  • SEC (with formal flag)
  • SEI (with formal flag)
  • SEV (with formal flag)
  • STA (with formal sta)
  • SUB (with formal sub)
  • TAP (with formal tap)
  • TPA (with formal tpa)
  • TST (with formal tst)

Generating Verilog

Run the main function of the Core object:

sbt "runMain shdl6800.Core"

Running Simulation

To run simulation, you need Verilator. Once installed, run the main function of the Core object with sim as a parameter:

sbt "runMain shdl6800.Core sim"

This will generate Verilator code of the core and simulate the design as described in Core.scala. It will also generate a test.vcd trace file in the simWorkspace/Core folder, which you can view with GTKWave.

Formal Verification

Formal verification requires the free and open-source SymbiYosys and Boolector tools. Once installed, you can either formally verify all instructions, one by one:

make -s formal

Or verify them in parallel by specifying how many you want with the -j<number> flag. For example, to use all the cores of your CPU:

make -s formal -j$(nproc)

Or you can verify a single instruction by specifying the filename of the formal verification file of that instruction. For example, verifying the LDA instruction is done like this:

make -s Formal_LDA

License

shdl6800 is free and open hardware and is licensed under the ISC licence.

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].