Hi,
Firstly, I am quite new at both UVM and verification in general but I’ve been putting a lot of effort into it and the resources I’ve found here have been extremely useful so thank you for your efforts.
I am currently verifying a chip that works in one of 3 modes - as a master, a slave or an “individual”. This is decided via a ChipId, which is to be hardwired. In short, the chip is part of a sensing system so we have a control mechanism and a readout mechanism.
The system I’m verifying is essentially working in one of two scenarios:
- Up to 6 slaves share a line to communicate with a single master (via a token exchange mechanism), which in exchange passes its own and the slaves’ data to the outside world using a specified high speed link.
- Up to 9 “individuals” share a control line but each has an instance of the aforementioned high speed link to get data out.
What I would like to do is have a DUT module that gets information from the test configuration and decides how many chips of each type to instantiate.
Here are a couple of examples:
- Run a test with a single master and 6 slaves or a master and 4 slaves (say 2 have experienced a glitch and stopped working, which is likely). Ideally, I’d be randomising the number of faulty slaves and their position along the string of slaves.
- Run a test with a variable number of “individual” chips.
Example 1) above is really critical for me, as we have observed bugs as a result of a single slave breaking down (to do with the token exchange mechanism). Anyway this needs to be verified.
Naturally, I can just cover the basic cases and create a number of DUT instances and TOP modules to correspond. However, this is not really in line with basic principles taught here, hard to maintain and makes regression testing difficult. I can’t really get a configuration object from the DB before instantiating the DUT in the TOP level.
Another option I see is instantiating enough devices to be able to cover every scenario and selectively wiring some of them to GND. However, I don’t think this is ideal as it clutters and slows down the environment.
I hope I’ve managed to properly explain my issue. Please, feel free to contribute any ideas since I am not at all happy with the options I’ve come up with.
Regards,
Svet