Examples of using cocotb for functional verification of VHDL designs with GHDL.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

43 lines
1.2 KiB

import vsc
# Random stimuli model class
@vsc.randobj
class constraints:
def __init__(self):
self.key = vsc.rand_bit_t(128)
self.data = vsc.rand_bit_t(128)
@vsc.constraint
def c(self):
self.data >= 0 and self.data <= 2**128 - 1
vsc.dist(
self.key,
[
vsc.weight(0, 15),
vsc.weight((1, 2**128 - 2), 70),
vsc.weight((2**128 - 1), 15),
],
)
# Stimuli covergroup
@vsc.covergroup
class covergroup:
def __init__(self, name="bla"):
self.options.name = name
self.with_sample(mode=vsc.bit_t(1), key=vsc.bit_t(128))
self.enc = vsc.coverpoint(self.mode, bins=dict(enc=vsc.bin(0)))
self.dec = vsc.coverpoint(self.mode, bins=dict(dec=vsc.bin(1)))
self.key0 = vsc.coverpoint(self.key, bins=dict(key0=vsc.bin(0)))
self.keyF = vsc.coverpoint(self.key, bins=dict(keyF=vsc.bin(2**128 - 1)))
self.encXkey0 = vsc.cross([self.enc, self.key0])
self.encXkeyF = vsc.cross([self.enc, self.keyF])
self.decXkey0 = vsc.cross([self.dec, self.key0])
self.decXkeyF = vsc.cross([self.dec, self.keyF])