A lot of articles on UVM refer about control knobs to be provided in components like driver, monitors.
Do these need to be through API or they need to be provided through transaction class (seq_item).
I assume it has to be through API as putting knob related variables in the transaction class can pollute transaction classes unnecessarily.
Please let me know your comments. A few examples will help me.
In reply to verif_learner:
Control knobs are mostly used in sequences. I did not see them in UVM components, because the structure is fixed at the end of runtime 0.
In reply to verif_learner:
Finally it depends what you have to do.
It might be a good approach to run a configuration sequence to configure eitheer you UVM environment or/and your DUT.
If you need only a very few values you can use the config_db to set certain values from the test and retrieve the corresponding values in a UVM component.
A control knob is a variable you set in one place that alters the behavior of code in another place. In the UVM, these variables are usually set through the uvm_config_db. The use of the term “knob” distinguishes it from other kinds of settings like handle to a virtual interface which is just passed through and inconsequential to your code.
Hi Dave, But I have an issue, How can the outside world communicate with UVM env? I mean to change the dut configurations without toucning testcases and uvm env?
Also In case I have an equation which can be change between different project, How can I change it inside the UVM env without touching the env itself, I mean to configure it with minimum updates?