Skip to content

An alternative implementation of the QNICE CPU

Notifications You must be signed in to change notification settings

MJoergen/qnice_cpu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

97 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

A pipelined implementation of the QNICE CPU

The reason for this implementation is to increase the performance of the QNICE CPU, and to use techniques from formal verification to prove its correctness.

This version of the QNICE CPU (from the QNICE-FPGA project) is not a drop-in replacement, for the following three reasons:

  • This design uses the Wishbone memory bus.
  • This design uses separate instruction and data interfaces.
  • This design expects (at least) one clock cycle delay when reading from instruction and/or data memory.

However, it should be a simple operation to modify the QNICE-FPGA project to support this implementation.

The overall idea of this implementation is to convert each instruction into a sequence of micro-operations, such as:

  • Read from memory to source operand buffer
  • Read from memory to destination operand buffer
  • Write to memory
  • Write to register

The reason is that e.g. the instruction ADD @R0, @R1 performs two memory reads (from @R0 and @R1) and one memory write (to @R1). Since only one memory operation is possible in each clock cycle, such an instruction will need to be serialized and will take a total of three clock cycles.

Documentation

Please go to the doc directory for more in-depth descrition of the architecture and the design.

Makefile

The current makefile supports the following targets:

  • make sim : Run simulation
  • make system.bit : Run synthesis using Vivado
  • make synth : Run synthesis using yosys
  • make formal : Run formal verification
  • make clean : Remove all generated files

The simulation and synthesis options assemble and run the test program in test/prog.asm.

About

An alternative implementation of the QNICE CPU

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published