New Boneless-v3 and the Gizmotron
Working Boneless-v3

Aug 2019

Working Boneless v3

Finally managed to get the new version of the processor running on my TinyBx this is in concert with nmigen , nmigen-boards and Boneless v3. I have wrapped all this into my workbench for the project in Gizmotron

Gizmos

from .gizmo import Gizmo, IO
from nmigen import *


class _warmboot(Elaboratable):
    def __init__(self):
        self.image = Signal(2)
        self.boot = Signal()

    def elaborate(self, platform):
        m = Module()
        m.submodules.wb = Instance("SB_WARMBOOT",
                i_S1 = self.image[0],
                i_S0 = self.image[1],
                i_BOOT = self.boot
        )
        return m


class WarmBoot(Gizmo):
    def build(self, **kwargs):
        w = _warmboot()
        self.add_device(w)
        a = IO(sig_out=w.image, name="image")
        self.add_reg(a)
        s = IO(sig_out=w.boot, name="boot")
        self.add_reg(s)

This then can be used from inside the processor

warmboot:
    MOVI R0,0                   ; set boot image to 0
    STXA R0,image               ; write to the image external register
    MOVI R0,1                   ; write one into register
    STXA R0,boot                ; reboot the FPGA into the boot loader