Why interfaces are explained under the uvm_component ?
@JonahArthur-o1r2 ай бұрын
Cicero Rapids
@NellyBurton-t2l2 ай бұрын
Nathan Junction
@TuttlePartridge-z4e2 ай бұрын
Doyle Alley
@YahairaDorge-k5p2 ай бұрын
Jerrod Track
@nhanhuynh18632 ай бұрын
Thank you! Very clear to me.
@anshumanpatra64882 ай бұрын
sir can factory also be consider as a global data base?
@SiddharthSrivastava293 ай бұрын
Thanks, it is very useful!
@MimKhan-t2f3 ай бұрын
Stehr Bypass
@sreekeerthichandar45684 ай бұрын
Could you also solve problems on umm?, more practical examples?
@celinayu20564 ай бұрын
what is my_seq_item?
@ManalShah29075 ай бұрын
How does the driver handles if the DUT is giving more then one or out of order responses back, how the driver send same response back to original sequence and not any other sequence?
@VaishnaviMadhusudhan6 ай бұрын
Hi ken If there is no config db in system verilog and we don’t set or get virtual interface there what would we do there and what is advantage here please explain
@name.is_chiru7 ай бұрын
Use non blocking. a<=b; b<=a;
@name.is_chiru7 ай бұрын
Use non blocking. a<=b; b<=a;
@siddharthjain53769 ай бұрын
Kenneth Sean "Ken" Carson Jr. is a fashion doll introduced by American toy company Mattel in 1961 as the counterpart of Barbie, who had been introduced two years earlier.
@Wander_freak11 ай бұрын
Can’t we directly use array sort method and return array[1]? Which will basically be second smallest after sorting
@rishabhmishra29062 ай бұрын
yes we can but complexity would be nlogn where this solution is O(n)
@tanushridoi Жыл бұрын
Hi, But as per LRM function can have outputs.
@ekansh0308 Жыл бұрын
Driver needs run_phase()
@zebra00024 Жыл бұрын
Why not to use #(1ps*half_period_in_ps) clk = ~clk;
@zebra00024 Жыл бұрын
Have you seen successful use of the sub phases? Is that normal to define subphases along with run_phase?
@zebra00024 Жыл бұрын
What was the idea behind having sequencer? In most cases it looks like an extra layer without good purpose. Most of sequencers implementations I saw were plain proxy between sequencer and driver. Sequencer layer weren't doing any work. I would say it only make sense if you actually have an arbitration based on priority or you have to control sequencer e.g. by purging FIFO when reset or end of the test comes.
@kuangquan08 Жыл бұрын
there are multiple reasons, the first as you mentioned providing a arbitration for sequence request and grand. second, sequencer provide a hierarchical component for sequence, if you wanna pass some config setting, sequence can retrieve the seqr handler to config your transaction in running time. Then if you are trying to implement some complicate sequence like layer sequences, sequencer offer a convenient way to implement that.
@zebra00024 Жыл бұрын
@@kuangquan08 1. what do you mean by layer sequences? 2. I don't see why configuration idea is good unless that is runtime driver specific configuration (there are better uvm ways, imo for other configurations). Then, again, why don't use driver for that type of configuration? I believe arbitration argument is good other arguments not so much convincing.
@jyh4820 Жыл бұрын
Good!! Tks
@prajishp.j1180 Жыл бұрын
Everywhere it is mentioned that UVM sequence is a collection of sequence items.So suppose I have 2 sequence items ,one for write , one for read..does this mean a single sequence can have both the sequence items..in all examples there s one sequence for one sequence items..then how is sequence a collection of sequence items??
@rezakozusko9048 Жыл бұрын
Promo'SM
@writetorohit Жыл бұрын
Hi, Default values of smallest and second_smallest will be 0. So, this function will return only 0. (assuming the array has + numbers)
@paulc139 Жыл бұрын
Integer have four state?
@KenIntQ Жыл бұрын
yes "integer" data type has 4 states, where as "int" has 2 states.
@praveenthakur63372 жыл бұрын
Is it possible to set config db in lower hierarchy and get it in upper hierarchy?
@KenIntQ Жыл бұрын
Yes, it is possible to set the config db in a lower level and obtain it in a higher hierarchy. One way to prevent issues is to do config db set in an earlier phase in the lower level hierarchy and get it from config db in later phase.
@yss26852 жыл бұрын
Thanks for a great video.
@KenIntQ Жыл бұрын
Glad you liked it!
@ishwaryasara97392 жыл бұрын
does ovm have late randomisation
@KenIntQ Жыл бұрын
Yes, similar to UVM.
@Borinquen123472 жыл бұрын
I hope you come back to make more of these videos Ken. They were very helpful in my interview prep. Thank you
@KenIntQ Жыл бұрын
More to come! :)
@ianlang60582 жыл бұрын
Nice video
@KenIntQ Жыл бұрын
Thanks
@interestingthings1702 жыл бұрын
Thank you, very useful
@KenIntQ Жыл бұрын
Glad it was helpful!
@naseemshaik50232 жыл бұрын
Hi Ken. I have few queries, 1)What is the argument passed in item done function? 2) when we use item_done () with and without argument in our environment?
@KenIntQ Жыл бұрын
Hi Naseem, 1) Item done take a ref of the sequence item that has finished running. 2) Item done is typically called without an argument, when you call it from within the sequence item itself and is called with an argument when called from outside the seq item
@balajideva65032 жыл бұрын
1) While using second option of handshake(using get and put method in driver side), whether finish_item() in sequence is non blocking func? If yes, then how its blocking for 1st approach and non blocking for 2nd approach? 2) During 2nd approach, what will happen to rsp port? Can you please explain how port will work in both approach?
@nandhagopal3002 жыл бұрын
Good video... Need more to learn this channel
@KenIntQ Жыл бұрын
More to come:)
@naseemsultana79422 жыл бұрын
Hi Ken, Is run_test is blocking or non-blocking?
@KenIntQ Жыл бұрын
Yes, it is a blocking call as it blocks the calling thread of execution until the test finishes.
@anilmohanty69562 жыл бұрын
Very nicely explained..👏.I have one doubt ,you told that instance override is only applicable to components and it is not applicable to uvm_transaction,uvm_sequence etc as component consists of hierarchy but uvm_transaction,uvm_sequence don't have this hierarchy.Could you please explain how the above doesn't have any hierarchy.As I am new to this Uvm.so I need to know this.
@KenIntQ Жыл бұрын
It comes down to the diff between uvm components (drivers, scb, monitors, etc.) and uvm objects (transactions, seq items, etc). Uvm transaction / seq items are dynamic , transients and as thus their constructors only has name as an arguments whereas, components are static and exist throughout the simulation and their constructor has both name and hierarchy.
@HirenMadhavani2 жыл бұрын
Great explanation. Very helpful. Thank you
@KenIntQ Жыл бұрын
Glad it was helpful!
@vishalmoladiya27352 жыл бұрын
Is p sequencer is only associated with virtual sequencer concept?Can you please also tell me what is the use of p_sequencer ? when will you use p_sequencer ?Here, I want to know the general use case like using p_sequencer for axi_sequencer.
@KenIntQ Жыл бұрын
To put it simply, a P-sequencer (port-sequencer) is to drive transaction to a specific port interface on the DUT.
@vishalmoladiya27352 жыл бұрын
Is p sequencer is only associated with virtual sequencer concept?Can you please also tell me what is the use of p_sequencer ? when will you use p_sequencer ?Here, I want to know the general use case like using p_sequencer for axi_sequencer.
@narendrak29742 жыл бұрын
This exploit polymorphism, which are of uvm_sequencer_base class.
@narendrak29742 жыл бұрын
m sequencer does have any other handle(cannot add) and if you want some handle you need to go with p_sequencer pointer.
@KenIntQ Жыл бұрын
To put it simply, a P-sequencer (port-sequencer) is to drive transaction to a specific port interface on the DUT.
@madhusudaneyunni78162 жыл бұрын
Isn't end_of_elaboration() and start_of_simulation() essentially doing the same thing?
@KenIntQ Жыл бұрын
The end_of_elab phase is called after all of the TB components have been instantiated and connected, but before any simulation activity has begun, whereas, start_of_sim mark the start of the simulation activity like resetting, registers, DUT, etc
@madhusudaneyunni78162 жыл бұрын
Why don't you recommend using virtual_sequencer, can you elaborate the disadvanatages ? What is the alternative method to using virtual_sequencer?
@KenIntQ Жыл бұрын
Virtual_seqeuncers add complexity to the TB, as you need to implement and connect both a virtual sequencer and a p_sequencer, also it has a little harder to debug because there is an extra layer of abstraction.
@madhusudaneyunni78162 жыл бұрын
But exactly, what is the issue with early randomization? would be useful to elaborate possibly with an example
@KenIntQ Жыл бұрын
Early Randomization can result in the object being configured or connected in an inconsistent or invalid state. Take a testbench with a driver and monitor as an example. Both of these components have a configuration parameter that sets the largest transaction size they can support. The driver might be configured with a bigger maximum transaction size than the monitor if the driver and monitor are both produced at random with early randomization, which would prevent the monitor from correctly processing the transactions from the driver.
@ashokkumarmeghwal26442 жыл бұрын
Nicely explained
@KenIntQ2 жыл бұрын
Keep watching
@vishalmoladiya27352 жыл бұрын
Thanks for good content
@KenIntQ2 жыл бұрын
My pleasure
@mihailkuyumdzhiev31613 жыл бұрын
Hi Ken, If we have a test class and if we call ::type_id::create in its build phase to create an environment class, than the environment class will be created. My questions is which part triggers the build phase of the environment class - the end of build phase of test class or the ::type_id::create function call? Is it the built phase of the environment class automatically called and what happens to the built phase of the environment class when we don't create the environment class in the build phase in test class? Thanks
@KenIntQ Жыл бұрын
When a UVM class is created, its build phase is invoked after all of its fields have been initialized but before any simulation work has started. When ::type_id::create is invoked in a test the build_phase of the environment class will be called automatically as part of the process of instantiating the environment class.
@yotams.89693 жыл бұрын
In case you are using "my_rsp", should you create it as well as "my_trans"?!
@KenIntQ Жыл бұрын
Yes because response is from the DUT with update fields.
@shahzebimtiaz18493 жыл бұрын
Correct me if I'm wrong, final phase is top down and not bottom-up?
@alhadpathak98602 жыл бұрын
Yes , I have read it that its top down!!
@KenIntQ Жыл бұрын
It is a top-down phase
@chikku2043 жыл бұрын
What is the main role of build phase ? we are having new() function which can do the same as build phase .. I mean the instantiation of class
@KenIntQ3 жыл бұрын
Hi Majji, the build phase is part of a series of phases like run, end of elab etc which helps in segregating instanton of tb components (typically in build)phase, the connection happen in connect phase, and so on. Whereas new() is used to construct an object without using the UVM factory. In UVM we typically use create() so that we can leverage factory. In conclusion, build is just a task which groups instantiations of various tb components/objects, whereas, new() or create() commands are used for instantiation. Check out the diff b/w new & create here --> kzbin.info/www/bejne/l3SQe2yHqrV_iaM.