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])