Created
August 9, 2020 21:07
-
-
Save awygle/ee910299cad0ba9f0a49250b84efc379 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import sys | |
from nmigen import *; | |
from nmigen.build import * | |
from nmigen.vendor.lattice_ecp5 import * | |
from nmigen_boards.resources import * | |
from nmigen.back import * | |
from nmigen_boards.versa_ecp5 import * | |
from nmigen.lib.cdc import FFSynchronizer | |
from udptherbone.stream import * | |
from udptherbone.slip import SLIPFramer | |
from udptherbone.slip import SLIPUnframer | |
from udptherbone.uart import UARTTx, UARTRx | |
from udptherbone.udp import * | |
from runelord.runelord import RunelordECP5Platform | |
import os | |
import subprocess | |
from scapy.all import * | |
class Add32(Elaboratable): | |
def __init__(self, in1, in2, outpins): | |
self.in1 = in1 | |
self.in2 = in2 | |
self.outpins = outpins | |
def elaborate(self, platform): | |
m = Module() | |
reg1 = Signal(32) | |
reg1.attrs["keep"] = 1 | |
reg2 = Signal(32) | |
reg2.attrs["keep"] = 1 | |
m.d.sync += reg1.eq(self.in1) | |
m.d.sync += reg2.eq(self.in2) | |
m.d.sync += self.outpins.eq(reg1 + reg2) | |
return m | |
class Top(Elaboratable): | |
def __init__(self): | |
pass | |
def elaborate(self, platform): | |
m = Module() | |
i1 = Signal(32) | |
i2 = Signal(32) | |
o = Signal(32) | |
i1.attrs["keep"] = 1 | |
i2.attrs["keep"] = 1 | |
o.attrs["keep"] = 1 | |
m.submodules.add = Add32(i1, i2, o) | |
return m | |
if sys.argv[1] == "program": | |
RunelordECP5Platform().build(Top(), do_program=False) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment