In axi_slave_private_pkg.vhd, p_rnd is never seeded, so every axi_read_slave/axi_write_slave instance uses the same default OSVVM seed.
In testbenches with multiple AXI slave VCs, we may want equal stall probabilities, but usually we don't want cycle-by-cycle identical behavior.
As a quick workaround, adding this line to the init() procedure causes the instances to be seeded differently:
p_rnd.InitSeed(name(axi_slave.p_actor));
(not forgetting to first use work.com_pkg.name;).
IMO that would be reasonable default behavior, but for backwards-compatibility maybe a better solution would be to add a boolean element to axi_slave_t so InitSeed() is only called if enabled?
In axi_slave_private_pkg.vhd,
p_rndis never seeded, so everyaxi_read_slave/axi_write_slaveinstance uses the same default OSVVM seed.In testbenches with multiple AXI slave VCs, we may want equal stall probabilities, but usually we don't want cycle-by-cycle identical behavior.
As a quick workaround, adding this line to the
init()procedure causes the instances to be seeded differently:(not forgetting to first
use work.com_pkg.name;).IMO that would be reasonable default behavior, but for backwards-compatibility maybe a better solution would be to add a boolean element to
axi_slave_tsoInitSeed()is only called if enabled?