Question for OVM and OVM2.0

Dear All,
1.Why TLM port/export and tlm_fifo?
Why not mailbox?It’s the same right?
mailbox is simple and easy to use.

2.Why in OVM2.0UserGuide P36 there is
“Note:The SystemVerilog OVM Class Library provides the ovm_sequence_item base class.Every user-defined data item must be derived directly or indirectly from this base class” ?
It’s just the C***** method not M*** 's,right?

Thank you!

Hi,

In answer to (1). the TLM fifos do provide some extra methods, like can_get, can_put, and can_peek methods, but more importantly, they use the same API as the already-existing TLM standard used in SystemC. Remember, TLM is more than just the uni-directional API - it is also the bi-directional API and analysis interface. Also, a mailbox is technically not a class and cannot be extended and used polymorphically.

For (2), the ovm_sequence_item class adds two very important fields that do not exist in ovm_transaction: sequence_id and transaction_id. These properties are critical when you send a response item back through a sequencer.

I would strongly disagree that OVM 2.0 sequences are just the Cadence method. If you look at it as a “battle”, then I would say that the Cadence API and terminology “won”, but the Mentor implementation “won”. In my opinion, the Cadence API was more complete, but the Mentor scenario implementation was far superior, cleaner, and more efficient.

In the end, the real winner is us: the user community, because the best parts of both methodologies were maintained and merged in an (almost) completely backward-compatible way. The developers in both companies did a fantastic job with this release.

-Kurt

Hi Kurts,
Thanks for your valuable inputs!

1)TLM is more than uni-direction ,but mailbox is uni_direction.
Yes.If you have two mailbox ,they can have same function as TLM.
I believe:
The usage of mailbox is more flexible than TLM…port/export/connection…
Also,mailbox has it’s method(API) peer,try_get…
One more is TLM has analysis_port which can broadcast.
All of these things can do by mailbox as simple as it would be.

2)I wonder what user should do for their stimulus generation?
A:ovm_transaction----->ovm_sequence—>ovm_sequencer(scenarios)
B:ovm_sequence_item—>ovm_sequence—>ovm_sequencer
C:ovm_transaction----->customized stimulus generation
I don’t see much advantage of sequence and sequencer because it’s hard to implement it.just like :User should learn how to use a “nuclear weapon” to kill a tiny bird.
Why not use a “gun”?
I mean the mechanisim of sequence is not clear and like a blackbox.
get_next_item…item_done
body …'ovm_do

What’s your opinion?

Thank you!