Jump to content

How to design a cool testbench??

Recommended Posts

Hi, all,

Recently I'm design testbench for RTL verification. We have a reference model which is well communicated with our testbench. But I am not sure what's the exactly way.

(1) In such case, Transaction stream driven to dut/ref are well controlled to be the same. But can I connect 2 driver to a sqr and ensure both of them receive same transaction when a sequence is started? btw,drv is operated in pull mode.

dut <---> (drv1,mon1) ---
                            | --- sqr ---tr--- sequence
ref  <---> (drv2,mon1) ---

(2) Here in this case, agent1 and agent2 are almost the same,except that drv1/drv2 are derived from drv_base and mon1/mon2 are derived from mon_base. Type of sqr1/sqr2 are the same. I think It's a little trouble to make transaction in sequence1/sequence2 be the same!?

dut <---> agent1(drv1,mon1,sqr1) ---tr--- sequence1

ref  <---> agent2(drv2,mon2,sqr2) ---tr--- sequence2

in this case, can i run the same sequence in different sqr?

Thanks very much.

Edited by IChip
Link to comment
Share on other sites

You can run the same sequence (or a clone of the sequence if they are going in parallel) on different sequencers as long as they use the same item type.

Normally, I'd used an analysis port from the seqr or driver on the dut path to drive the reference model and ensure you see the same transactions (or for better reuse, the transactions from the interface monitor). If you have a full agent for the reference model, you can use a simple sequence that takes transactions from an analysis fifo.

Link to comment
Share on other sites

Thank you, jadec.

In the first case, maybe I can use only one sequencer and use analysis_port to transfer transaction stream to reference model from driver. I need to write 2 different type of driver(one for driving dut and routing transactions to reference, the other one for driving reference model in only-reference mode) and 2 different type of monitor.

In the second case I make drv/mon in agent configurable so that agent can run in dut mode or reference mode. Easily use factory to config it. So there are 2 sequencers in such case. But randomization is called in sequence, I get different transaction streams when same sequence called twice.

Link to comment
Share on other sites

What you could do instead of connecting the analysis_port directly to the reference driver is to connect it to the reference sequencer (via factory override like is done for sequencer layering). Then use an adapter sequence to get the transactions and send them to the reference driver. This way you need only one driver type.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...