Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: m-labs/misoc
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: cd82f16
Choose a base ref
...
head repository: m-labs/misoc
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: bccc5f5
Choose a head ref
  • 2 commits
  • 5 files changed
  • 1 contributor

Commits on Mar 30, 2012

  1. tb/asmicon: refresher test

    Sebastien Bourdeauducq committed Mar 30, 2012
    Copy the full SHA
    c6a4a8f View commit details
  2. tb: remove obsolete norflash test bench

    Sebastien Bourdeauducq committed Mar 30, 2012
    Copy the full SHA
    bccc5f5 View commit details
Showing with 91 additions and 159 deletions.
  1. +41 −0 tb/asmicon/common.py
  2. +50 −0 tb/asmicon/refresher.py
  3. +0 −20 tb/norflash/Makefile
  4. +0 −10 tb/norflash/norflash_conv.py
  5. +0 −129 tb/norflash/tb_norflash.v
41 changes: 41 additions & 0 deletions tb/asmicon/common.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
from migen.fhdl.structure import *
from migen.sim.generic import Proxy

class CommandLogger:
def __init__(self, cmd):
self.cmd = cmd

def do_simulation(self, s):
elts = ["@" + str(s.cycle_counter)]

cmdp = Proxy(s, self.cmd)
if not cmdp.ras_n and cmdp.cas_n and cmdp.we_n:
elts.append("ACTIVATE")
elts.append("BANK " + str(cmdp.ba))
elts.append("ROW " + str(cmdp.a))
elif cmdp.ras_n and not cmdp.cas_n and cmdp.we_n:
elts.append("READ\t")
elts.append("BANK " + str(cmdp.ba))
elts.append("COL " + str(cmdp.a))
elif cmdp.ras_n and not cmdp.cas_n and not cmdp.we_n:
elts.append("WRITE\t")
elts.append("BANK " + str(cmdp.ba))
elts.append("COL " + str(cmdp.a))
elif cmdp.ras_n and cmdp.cas_n and not cmdp.we_n:
elts.append("BST")
elif not cmdp.ras_n and not cmdp.cas_n and cmdp.we_n:
elts.append("AUTO REFRESH")
elif not cmdp.ras_n and cmdp.cas_n and not cmdp.we_n:
elts.append("PRECHARGE")
if cmdp.a & 2**10:
elts.append("ALL")
else:
elts.append("BANK " + str(cmdp.ba))
elif not cmdp.ras_n and not cmdp.cas_n and not cmdp.we_n:
elts.append("LMR")

if len(elts) > 1:
print("\t".join(elts))

def get_fragment(self):
return Fragment(sim=[self.do_simulation])
50 changes: 50 additions & 0 deletions tb/asmicon/refresher.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
from random import Random

from migen.fhdl.structure import *
from migen.sim.generic import Simulator, TopLevel
from migen.sim.icarus import Runner

from milkymist.asmicon.refresher import *

from common import CommandLogger

class Granter:
def __init__(self, req, ack):
self.req = req
self.ack = ack
self.state = 0
self.prng = Random(92837)

def do_simulation(self, s):
elts = ["@" + str(s.cycle_counter)]

if self.state == 0:
if s.rd(self.req):
elts.append("Refresher requested access")
self.state = 1
elif self.state == 1:
if self.prng.randrange(0, 5) == 0:
elts.append("Granted access to refresher")
s.wr(self.ack, 1)
self.state = 2
elif self.state == 2:
if not s.rd(self.req):
elts.append("Refresher released access")
s.wr(self.ack, 0)
self.state = 0

if len(elts) > 1:
print("\t".join(elts))

def get_fragment(self):
return Fragment(sim=[self.do_simulation])

def main():
dut = Refresher(13, 2, tRP=3, tREFI=100, tRFC=5)
logger = CommandLogger(dut.cmd)
granter = Granter(dut.req, dut.ack)
fragment = dut.get_fragment() + logger.get_fragment() + granter.get_fragment()
sim = Simulator(fragment, Runner())
sim.run(400)

main()
20 changes: 0 additions & 20 deletions tb/norflash/Makefile

This file was deleted.

10 changes: 0 additions & 10 deletions tb/norflash/norflash_conv.py

This file was deleted.

129 changes: 0 additions & 129 deletions tb/norflash/tb_norflash.v

This file was deleted.