Close

Going real

A project log for jupyosys

..from Python Jupyter notebook to silicon

martinMartin 05/06/2020 at 16:210 Comments

Starting out as a documentation project with tiny steps and rather frequent updates, it's now moving towards:


Also, so far all has been 'virtual', i.e. running in the browser only. The next milestone is to get a complex CPU design running (still undecided which one it is going to be, but certainly one of the MaSoCist choices).

The hard part (which needed a lot of playing and revamping) is to support a rather large number of corner cases that have to do with conditional code:

if state == t_state.RESET:
    a.next = 0xff
elif state == t_state.RUN:
    a.next = c
else:
    a.next = 0xaa

This snippet is just supposed to assert a signal, decided upon a state condition, let aside the context for now (whether behind a flip flop or combinatorial logic)

In the silicon, this basically creates multiplexers. And it gets very interesting, when a case is omitted (like the 'else' clause), you might remember issues with combinatorial loops.

Hopefully with the recent release, I've gotten the corner cases right.


Here's where the testing comes in:

And this is where Python performs exceptional: it provides probably the most convenient ecosystem to test stuff. This is now also found in the [ Binder based virtual machine ].

Discussions