anshulgarg Posted September 1, 2015 Report Share Posted September 1, 2015 Hi, I have a doubt about requirement of raise/drop_objection. Why does a compiler need objections in run_phase? Why can it not just wait for time given like 100ns as following example? Ex. task run_phase(uvm_phase phase); //phase.raise_objection(this); #100ns; //phase.drop_objection(this); endtask Quote Link to comment Share on other sites More sharing options...
bhunter1972 Posted September 2, 2015 Report Share Posted September 2, 2015 Some components may have a run-time phase which operates in a "Run forever and wake up when there's something to do" mode, like this simplistic driver: virtual task run_phase(uvm_phase phase); forever begin seq_item_pull_port.get(req); phase.raise_objection(phase); drive_my_request(req); phase.drop_objection(phase); end endtask : run_phase When there are no objections remaining, all of the tasks spawned by all of the component's run phases are killed. This is a feature, not a bug. It just wouldn't do to kill this task's run phase while it was driving a request. And UVM cannot implicitly know how long that will take. Therefore, the objection software pattern is used for all run-time phases. Quote Link to comment Share on other sites More sharing options...
hrishikeshadn Posted April 20, 2016 Report Share Posted April 20, 2016 Mainly the objections are used in testcases, which helps in simulation to end after your sequences or intented operations are performed.Hard coded delays are not good to use, because when you are doing Constaint Random testing we can't predict completion time.I think I answered your question Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.