Close

Quick Update Before Work...

A project log for Kestrel Computer Project

The Kestrel project is all about freedom of computing and the freedom of learning using a completely open hardware and software design.

samuel-a-falvo-iiSamuel A. Falvo II 07/28/2017 at 15:122 Comments

Just a quick update before I rush into the office.

I've been working on the KCP53010 CPU's pipeline stages on and off over the last couple of weekends.  Overall, I'm happy with the results so far.  You might say that the pipeline fully recognizes STORE and OP-IMM instructions, although supporting more than these (especially LOAD, OP, OP-IMM-32, and OP-32) is quite easily implemented with only a handful of Verilog lines of code.

Last night, I wrote the very first lines of code that integrates these different stages together into a real pipeline.  It does not work yet, but its current behavior is very promising indeed.  I haven't had the time to implement a real integration test for it yet, so I just relied on the RESET behavior and how it pipes a NOP (ADDI X0, X0, 0) instruction through the queue.  After looking at the waveforms manually, I'm pleased at the results so far.

Some things which need to be done include (but isn't limited to):

There's a lot of work that needs to happen yet; but, I think I can swing it.  I just need to take this slowly, one step at a time.

Discussions

Ed S wrote 07/28/2017 at 18:32 point

Do you use textual debug output from verilog at all? I wonder if that would help visualise the pipeline behaviour.

  Are you sure? yes | no

Samuel A. Falvo II wrote 07/29/2017 at 03:10 point

I do not; I use gtkwave and trace well-known bit patterns through the system.  Once I have a visual confirmation that things work more or less the way I expect, I then take the effort to encode my expectations as assertions (in the TDD sense, not the formal methods sense).  That way, if I change some code and it breaks some expectation from another module, the whole build breaks with a noticeable error trace.

  Are you sure? yes | no