Пікірлер
@Jumptrix
@Jumptrix Ай бұрын
Why interfaces are explained under the uvm_component ?
@JonahArthur-o1r
@JonahArthur-o1r 2 ай бұрын
Cicero Rapids
@NellyBurton-t2l
@NellyBurton-t2l 2 ай бұрын
Nathan Junction
@TuttlePartridge-z4e
@TuttlePartridge-z4e 2 ай бұрын
Doyle Alley
@YahairaDorge-k5p
@YahairaDorge-k5p 2 ай бұрын
Jerrod Track
@nhanhuynh1863
@nhanhuynh1863 2 ай бұрын
Thank you! Very clear to me.
@anshumanpatra6488
@anshumanpatra6488 2 ай бұрын
sir can factory also be consider as a global data base?
@SiddharthSrivastava29
@SiddharthSrivastava29 3 ай бұрын
Thanks, it is very useful!
@MimKhan-t2f
@MimKhan-t2f 3 ай бұрын
Stehr Bypass
@sreekeerthichandar4568
@sreekeerthichandar4568 4 ай бұрын
Could you also solve problems on umm?, more practical examples?
@celinayu2056
@celinayu2056 4 ай бұрын
what is my_seq_item?
@ManalShah2907
@ManalShah2907 5 ай бұрын
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?
@VaishnaviMadhusudhan
@VaishnaviMadhusudhan 6 ай бұрын
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_chiru
@name.is_chiru 7 ай бұрын
Use non blocking. a<=b; b<=a;
@name.is_chiru
@name.is_chiru 7 ай бұрын
Use non blocking. a<=b; b<=a;
@siddharthjain5376
@siddharthjain5376 9 ай бұрын
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_freak
@Wander_freak 11 ай бұрын
Can’t we directly use array sort method and return array[1]? Which will basically be second smallest after sorting
@rishabhmishra2906
@rishabhmishra2906 2 ай бұрын
yes we can but complexity would be nlogn where this solution is O(n)
@tanushridoi
@tanushridoi Жыл бұрын
Hi, But as per LRM function can have outputs.
@ekansh0308
@ekansh0308 Жыл бұрын
Driver needs run_phase()
@zebra00024
@zebra00024 Жыл бұрын
Why not to use #(1ps*half_period_in_ps) clk = ~clk;
@zebra00024
@zebra00024 Жыл бұрын
Have you seen successful use of the sub phases? Is that normal to define subphases along with run_phase?
@zebra00024
@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
@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
@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
@jyh4820 Жыл бұрын
Good!! Tks
@prajishp.j1180
@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
@rezakozusko9048 Жыл бұрын
Promo'SM
@writetorohit
@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
@paulc139 Жыл бұрын
Integer have four state?
@KenIntQ
@KenIntQ Жыл бұрын
yes "integer" data type has 4 states, where as "int" has 2 states.
@praveenthakur6337
@praveenthakur6337 2 жыл бұрын
Is it possible to set config db in lower hierarchy and get it in upper hierarchy?
@KenIntQ
@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.
@yss2685
@yss2685 2 жыл бұрын
Thanks for a great video.
@KenIntQ
@KenIntQ Жыл бұрын
Glad you liked it!
@ishwaryasara9739
@ishwaryasara9739 2 жыл бұрын
does ovm have late randomisation
@KenIntQ
@KenIntQ Жыл бұрын
Yes, similar to UVM.
@Borinquen12347
@Borinquen12347 2 жыл бұрын
I hope you come back to make more of these videos Ken. They were very helpful in my interview prep. Thank you
@KenIntQ
@KenIntQ Жыл бұрын
More to come! :)
@ianlang6058
@ianlang6058 2 жыл бұрын
Nice video
@KenIntQ
@KenIntQ Жыл бұрын
Thanks
@interestingthings170
@interestingthings170 2 жыл бұрын
Thank you, very useful
@KenIntQ
@KenIntQ Жыл бұрын
Glad it was helpful!
@naseemshaik5023
@naseemshaik5023 2 жыл бұрын
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
@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
@balajideva6503
@balajideva6503 2 жыл бұрын
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?
@nandhagopal300
@nandhagopal300 2 жыл бұрын
Good video... Need more to learn this channel
@KenIntQ
@KenIntQ Жыл бұрын
More to come:)
@naseemsultana7942
@naseemsultana7942 2 жыл бұрын
Hi Ken, Is run_test is blocking or non-blocking?
@KenIntQ
@KenIntQ Жыл бұрын
Yes, it is a blocking call as it blocks the calling thread of execution until the test finishes.
@anilmohanty6956
@anilmohanty6956 2 жыл бұрын
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
@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.
@HirenMadhavani
@HirenMadhavani 2 жыл бұрын
Great explanation. Very helpful. Thank you
@KenIntQ
@KenIntQ Жыл бұрын
Glad it was helpful!
@vishalmoladiya2735
@vishalmoladiya2735 2 жыл бұрын
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
@KenIntQ Жыл бұрын
To put it simply, a P-sequencer (port-sequencer) is to drive transaction to a specific port interface on the DUT.
@vishalmoladiya2735
@vishalmoladiya2735 2 жыл бұрын
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.
@narendrak2974
@narendrak2974 2 жыл бұрын
This exploit polymorphism, which are of uvm_sequencer_base class.
@narendrak2974
@narendrak2974 2 жыл бұрын
m sequencer does have any other handle(cannot add) and if you want some handle you need to go with p_sequencer pointer.
@KenIntQ
@KenIntQ Жыл бұрын
To put it simply, a P-sequencer (port-sequencer) is to drive transaction to a specific port interface on the DUT.
@madhusudaneyunni7816
@madhusudaneyunni7816 2 жыл бұрын
Isn't end_of_elaboration() and start_of_simulation() essentially doing the same thing?
@KenIntQ
@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
@madhusudaneyunni7816
@madhusudaneyunni7816 2 жыл бұрын
Why don't you recommend using virtual_sequencer, can you elaborate the disadvanatages ? What is the alternative method to using virtual_sequencer?
@KenIntQ
@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.
@madhusudaneyunni7816
@madhusudaneyunni7816 2 жыл бұрын
But exactly, what is the issue with early randomization? would be useful to elaborate possibly with an example
@KenIntQ
@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.
@ashokkumarmeghwal2644
@ashokkumarmeghwal2644 2 жыл бұрын
Nicely explained
@KenIntQ
@KenIntQ 2 жыл бұрын
Keep watching
@vishalmoladiya2735
@vishalmoladiya2735 2 жыл бұрын
Thanks for good content
@KenIntQ
@KenIntQ 2 жыл бұрын
My pleasure
@mihailkuyumdzhiev3161
@mihailkuyumdzhiev3161 3 жыл бұрын
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
@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.8969
@yotams.8969 3 жыл бұрын
In case you are using "my_rsp", should you create it as well as "my_trans"?!
@KenIntQ
@KenIntQ Жыл бұрын
Yes because response is from the DUT with update fields.
@shahzebimtiaz1849
@shahzebimtiaz1849 3 жыл бұрын
Correct me if I'm wrong, final phase is top down and not bottom-up?
@alhadpathak9860
@alhadpathak9860 2 жыл бұрын
Yes , I have read it that its top down!!
@KenIntQ
@KenIntQ Жыл бұрын
It is a top-down phase
@chikku204
@chikku204 3 жыл бұрын
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
@KenIntQ
@KenIntQ 3 жыл бұрын
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.