Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cleanup 05of20: dut.log is deprecated #16

Open
wants to merge 28 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
e56bd5a
AhbLite3.py: assignment <= is deprecated
dlmiles May 15, 2023
bf4b5c2
Apb3.py: assignment <= is deprecated
dlmiles May 15, 2023
e622628
Axi4.py: assignment <= is deprecated
dlmiles May 15, 2023
94f7f62
ClockDomain.py: assignment <= is deprecated
dlmiles May 15, 2023
be01610
Spi.py: assignment <= is deprecated
dlmiles May 15, 2023
16fc943
Stream.py: assignment <= is deprecated
dlmiles May 15, 2023
bfb831d
misc.py: assignment <= is deprecated
dlmiles May 15, 2023
d28bc43
AhbLite3.py: import local ref change
dlmiles May 15, 2023
f13c70a
Apb3.py: import local ref change
dlmiles May 15, 2023
72cf466
Axi4.py: import local ref change
dlmiles May 15, 2023
17baf5e
Flow.py: import local ref change
dlmiles May 15, 2023
450f855
Scorboard.py: import local ref change
dlmiles May 15, 2023
2afed89
Spi.py: import local ref change
dlmiles May 15, 2023
1373392
Stream.py: import local ref change
dlmiles May 15, 2023
38393a7
AhbLite3.py: cocotb.fork is deprecated
dlmiles May 15, 2023
2dae019
ClockDomain.py: cocotb.fork is deprecated
dlmiles May 15, 2023
c74e92f
Flow.py: cocotb.fork is deprecated
dlmiles May 15, 2023
4a2ced2
Stream.py: cocotb.fork is deprecated
dlmiles May 15, 2023
f7248f0
AhbLite3.py: consistently use @coroutine
dlmiles May 15, 2023
6ea4610
Apb3.py: consistently use @coroutine
dlmiles May 15, 2023
9800fd5
ClockDomain.py: consistently use @coroutine
dlmiles May 15, 2023
f6bd5e9
Flow.py: consistently use @coroutine
dlmiles May 15, 2023
102db6f
Phase.py: consistently use @coroutine
dlmiles May 15, 2023
13927f9
Spi.py: consistently use @coroutine
dlmiles May 15, 2023
7297265
Stream.py: consistently use @coroutine
dlmiles May 15, 2023
25ddfc3
misc.py: consistently use @coroutine
dlmiles May 15, 2023
0a283f0
AhbLite3.py: dut.log is deprecated
dlmiles May 15, 2023
4c47bad
Scorboard.py: dut.log is deprecated
dlmiles May 15, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
99 changes: 50 additions & 49 deletions AhbLite3.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,20 @@
import cocotb
from cocotb.result import TestFailure
from cocotb.triggers import RisingEdge, Edge
from cocotb.decorators import coroutine

from cocotblib.misc import log2Up, BoolRandomizer, assertEquals
from .misc import log2Up, BoolRandomizer, assertEquals


def AhbLite3MasterIdle(ahb):
ahb.HADDR <= 0
ahb.HWRITE <= 0
ahb.HSIZE <= 0
ahb.HBURST <= 0
ahb.HPROT <= 0
ahb.HTRANS <= 0
ahb.HMASTLOCK <= 0
ahb.HWDATA <= 0
ahb.HADDR.value = 0
ahb.HWRITE.value = 0
ahb.HSIZE.value = 0
ahb.HBURST.value = 0
ahb.HPROT.value = 0
ahb.HTRANS.value = 0
ahb.HMASTLOCK.value = 0
ahb.HWDATA.value = 0



Expand Down Expand Up @@ -103,34 +104,34 @@ def __init__(self,ahb,transactor,clk,reset):
self.clk = clk
self.reset = reset
self.transactor = transactor
cocotb.fork(self.stim())
cocotb.start_soon(self.stim())

@cocotb.coroutine
@coroutine
def stim(self):
ahb = self.ahb
ahb.HADDR <= 0
ahb.HWRITE <= 0
ahb.HSIZE <= 0
ahb.HBURST <= 0
ahb.HPROT <= 0
ahb.HTRANS <= 0
ahb.HMASTLOCK <= 0
ahb.HWDATA <= 0
ahb.HADDR.value = 0
ahb.HWRITE.value = 0
ahb.HSIZE.value = 0
ahb.HBURST.value = 0
ahb.HPROT.value = 0
ahb.HTRANS.value = 0
ahb.HMASTLOCK.value = 0
ahb.HWDATA.value = 0
HWDATAbuffer = 0
while True:
for trans in self.transactor.getTransactions():
yield RisingEdge(self.clk)
while int(self.ahb.HREADY) == 0:
yield RisingEdge(self.clk)

ahb.HADDR <= trans.HADDR
ahb.HWRITE <= trans.HWRITE
ahb.HSIZE <= trans.HSIZE
ahb.HBURST <= trans.HBURST
ahb.HPROT <= trans.HPROT
ahb.HTRANS <= trans.HTRANS
ahb.HMASTLOCK <= trans.HMASTLOCK
ahb.HWDATA <= HWDATAbuffer
ahb.HADDR.value = trans.HADDR
ahb.HWRITE.value = trans.HWRITE
ahb.HSIZE.value = trans.HSIZE
ahb.HBURST.value = trans.HBURST
ahb.HPROT.value = trans.HPROT
ahb.HTRANS.value = trans.HTRANS
ahb.HMASTLOCK.value = trans.HMASTLOCK
ahb.HWDATA.value = HWDATAbuffer
HWDATAbuffer = trans.HWDATA

class AhbLite3Terminaison:
Expand All @@ -139,27 +140,27 @@ def __init__(self,ahb,clk,reset):
self.clk = clk
self.reset = reset
self.randomHREADY = True
cocotb.fork(self.stim())
cocotb.fork(self.combEvent())
cocotb.start_soon(self.stim())
cocotb.start_soon(self.combEvent())

@cocotb.coroutine
@coroutine
def stim(self):
randomizer = BoolRandomizer()
self.ahb.HREADY <= 1
self.ahb.HSEL <= 1
self.ahb.HREADY.value = 1
self.ahb.HSEL.value = 1
while True:
yield RisingEdge(self.clk)
self.randomHREADY = randomizer.get()
self.doComb()

@cocotb.coroutine
@coroutine
def combEvent(self):
while True:
yield Edge(self.ahb.HREADYOUT)
self.doComb()

def doComb(self):
self.ahb.HREADY <= (self.randomHREADY and (int(self.ahb.HREADYOUT) == 1))
self.ahb.HREADY.value = (self.randomHREADY and (int(self.ahb.HREADYOUT) == 1))


class AhbLite3MasterReadChecker:
Expand All @@ -169,9 +170,9 @@ def __init__(self,ahb,buffer,clk,reset):
self.reset = reset
self.buffer = buffer
self.counter = 0
cocotb.fork(self.stim())
cocotb.start_soon(self.stim())

@cocotb.coroutine
@coroutine
def stim(self):
ahb = self.ahb
readIncoming = False
Expand All @@ -187,7 +188,7 @@ def stim(self):
assertEquals((int(ahb.HRDATA) >> (i*8)) & 0xFF,(bufferData >> (i*8)) & 0xFF,"AHB master read checker faild %x " %(int(ahb.HADDR)) )

self.counter += 1
# cocotb.log.info("POP " + str(self.buffer.qsize()))
# cocotb._log.info("POP " + str(self.buffer.qsize()))

readIncoming = int(ahb.HTRANS) >= 2 and int(ahb.HWRITE) == 0
size = 1 << int(ahb.HSIZE)
Expand All @@ -204,13 +205,13 @@ def __init__(self,ahb,base,size,clk,reset):
self.size = size
self.ram = bytearray(b'\x00' * size)

cocotb.fork(self.stim())
cocotb.fork(self.stimReady())
cocotb.start_soon(self.stim())
cocotb.start_soon(self.stimReady())

@cocotb.coroutine
@coroutine
def stimReady(self):
randomizer = BoolRandomizer()
self.ahb.HREADYOUT <= 1
self.ahb.HREADYOUT.value = 1
busy = False
while True:
yield RisingEdge(self.clk)
Expand All @@ -222,16 +223,16 @@ def stimReady(self):
raise TestFailure("HREADYOUT == 0 but HREADY == 1 ??? " + self.ahb.HREADY._name)
busy = busyNew
if (busy):
self.ahb.HREADYOUT <= randomizer.get() # make some random delay for NONSEQ and SEQ requests
self.ahb.HREADYOUT.value = randomizer.get() # make some random delay for NONSEQ and SEQ requests
else:
self.ahb.HREADYOUT <= 1 # IDLE and BUSY require 0 WS
self.ahb.HREADYOUT.value = 1 # IDLE and BUSY require 0 WS

@cocotb.coroutine
@coroutine
def stim(self):
ahb = self.ahb
ahb.HREADYOUT <= 1
ahb.HRESP <= 0
ahb.HRDATA <= 0
ahb.HREADYOUT.value = 1
ahb.HRESP.value = 0
ahb.HRDATA.value = 0
valid = 0
while True:
yield RisingEdge(self.clk)
Expand All @@ -252,7 +253,7 @@ def stim(self):
address = int(ahb.HADDR)
addressOffset = address % (len(ahb.HWDATA)//8)

ahb.HRDATA <= 0
ahb.HRDATA.value = 0
if valid == 1:
if trans >= 2:
if write == 0:
Expand All @@ -261,4 +262,4 @@ def stim(self):
data |= self.ram[address-self.base + idx] << (8*(addressOffset + idx))
# print("read %x with %x" % (address + idx, self.ram[address-self.base + idx]))
# print(str(data))
ahb.HRDATA <= int(data)
ahb.HRDATA.value = int(data)
32 changes: 16 additions & 16 deletions Apb3.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import random

import cocotb
from cocotb.decorators import coroutine
from cocotb.result import TestFailure, ReturnValue
from cocotb.triggers import RisingEdge, Edge
from cocotb.decorators import coroutine

from cocotblib.misc import log2Up, BoolRandomizer, assertEquals, waitClockedCond, randSignal
from .misc import log2Up, BoolRandomizer, assertEquals, waitClockedCond, randSignal


class Apb3:
Expand All @@ -20,7 +20,7 @@ def __init__(self, dut, name, clk = None):
self.PRDATA = dut.__getattr__(name + "_PRDATA")

def idle(self):
self.PSEL <= 0
self.PSEL.value = 0

@coroutine
def delay(self, cycle):
Expand All @@ -29,16 +29,16 @@ def delay(self, cycle):

@coroutine
def write(self, address, data, sel = 1):
self.PADDR <= address
self.PSEL <= sel
self.PENABLE <= False
self.PWRITE <= True
self.PWDATA <= data
self.PADDR.value = address
self.PSEL.value = sel
self.PENABLE.value = False
self.PWRITE.value = True
self.PWDATA.value = data
yield RisingEdge(self.clk)
self.PENABLE <= True
self.PENABLE.value = True
yield waitClockedCond(self.clk, lambda : self.PREADY == True)
randSignal(self.PADDR)
self.PSEL <= 0
self.PSEL.value = 0
randSignal(self.PENABLE)
randSignal(self.PWRITE)
randSignal(self.PWDATA)
Expand All @@ -51,16 +51,16 @@ def writeMasked(self, address, data, mask, sel = 1):

@coroutine
def read(self, address, sel=1):
self.PADDR <= address
self.PSEL <= sel
self.PENABLE <= False
self.PWRITE <= False
self.PADDR.value = address
self.PSEL.value = sel
self.PENABLE.value = False
self.PWRITE.value = False
randSignal(self.PWDATA)
yield RisingEdge(self.clk)
self.PENABLE <= True
self.PENABLE.value = True
yield waitClockedCond(self.clk, lambda: self.PREADY == True)
randSignal(self.PADDR)
self.PSEL <= 0
self.PSEL.value = 0
randSignal(self.PENABLE)
randSignal(self.PWRITE)
raise ReturnValue(int(self.PRDATA))
Expand Down
12 changes: 6 additions & 6 deletions Axi4.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import random
from queue import Queue

from cocotblib.Phase import PHASE_SIM, Infrastructure
from cocotblib.Scorboard import ScorboardOutOfOrder
from cocotblib.misc import BoolRandomizer, log2Up, randBits
from .Phase import PHASE_SIM, Infrastructure
from .Scorboard import ScorboardOutOfOrder
from .misc import BoolRandomizer, log2Up, randBits

from cocotblib.Stream import Stream, Transaction, StreamDriverSlave, StreamDriverMaster, StreamMonitor
from .Stream import Stream, Transaction, StreamDriverSlave, StreamDriverMaster, StreamMonitor


class Axi4:
Expand Down Expand Up @@ -74,8 +74,8 @@ def __init__(self,name,parent,axi,addressWidth,clk,reset):
StreamDriverMaster(axi.w, self.genWriteData, clk, reset)
StreamMonitor(axi.r, self.onReadRsp, clk, reset)
StreamMonitor(axi.b, self.onWriteRsp, clk, reset)
axi.w.payload.last <= 0
axi.r.payload.last <= 0
axi.w.payload.last.value = 0
axi.r.payload.last.value = 0

def freeReservatedAddresses(self,uut,ref,equal):
self.reservedAddresses.pop(ref,None)
Expand Down
21 changes: 11 additions & 10 deletions ClockDomain.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import cocotb
from cocotb.triggers import Timer, RisingEdge, Event
from cocotb.decorators import coroutine


###############################################################################
Expand All @@ -17,7 +18,7 @@ class RESET_ACTIVE_LEVEL:
#
# # Create a clock with a reset active high
# clockDomain = ClockDomain(dut.clk, 400, dut.reset, RESET_ACTIVE_LEVEL.HIGH)
# cocobt.fork( clockDomain.start() )
# cocotb.start_soon( clockDomain.start() )
#
class ClockDomain:

Expand All @@ -42,20 +43,20 @@ def __init__(self, clk, halfPeriod, reset=None, resetActiveLevel=RESET_ACTIVE_LE

##########################################################################
# Generate the clock signals
@cocotb.coroutine
@coroutine
def start(self):

self.fork_gen = cocotb.fork(self._clkGen())
self.fork_gen = cocotb.start_soon(self._clkGen())
if self.reset != None :
cocotb.fork(self._waitEndReset())
cocotb.start_soon(self._waitEndReset())

if self.reset:
self.reset <= self.typeReset
self.reset.value = self.typeReset

yield Timer(self.halfPeriod * 5)

if self.reset:
self.reset <= int(1 if self.typeReset == RESET_ACTIVE_LEVEL.LOW else 0)
self.reset.value = int(1 if self.typeReset == RESET_ACTIVE_LEVEL.LOW else 0)


##########################################################################
Expand All @@ -67,18 +68,18 @@ def stop(self):

##########################################################################
# Generate the clk
@cocotb.coroutine
@coroutine
def _clkGen(self):
while True:
self.clk <= 0
self.clk.value = 0
yield Timer(self.halfPeriod)
self.clk <= 1
self.clk.value = 1
yield Timer(self.halfPeriod)


##########################################################################
# Wait the end of the reset
@cocotb.coroutine
@coroutine
def _waitEndReset(self):
while True:
yield RisingEdge(self.clk)
Expand Down
8 changes: 5 additions & 3 deletions Flow.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import cocotb
from cocotb.triggers import RisingEdge, Event
from cocotblib.misc import Bundle
from cocotb.decorators import coroutine

from .misc import Bundle


###############################################################################
Expand All @@ -26,7 +28,7 @@ def __init__(self, dut, name):
#==========================================================================
def startMonitoringValid(self, clk):
self.clk = clk
self.fork_valid = cocotb.fork(self.monitor_valid())
self.fork_valid = cocotb.start_soon(self.monitor_valid())


#==========================================================================
Expand All @@ -39,7 +41,7 @@ def stopMonitoring(self):
#==========================================================================
# Monitor the valid signal
#==========================================================================
@cocotb.coroutine
@coroutine
def monitor_valid(self):
while True:
yield RisingEdge(self.clk)
Expand Down
Loading