Dear all,
I am glad to take the practice with the second example from Doulos.
I find ovm is very difficult for hardware engineer,even with C++ and sv background.
It’s more complicated than AVM.
Here are some question:
1.I run the simulation and find:nothing happen:
run -all
# OVM_INFO @ 0: reporter [RNTST] Running test ...
# ** Note: $finish : ../../ovm-1.0.1/src/base/ovm_env.sv(274)
# Time: 0 ns Iteration: 16 Instance: /ovm_pkg::ovm_env::run_test
# 1
# Break in Task run_test at ../../ovm-1.0.1/src/base/ovm_env.sv
line 274
even i remove the // before:
// Define to start my_sequence_1 manually from the test and switch off the random sequencer
//`define START_SEQUENCE_MANUALLY
// Define to use ovm_factory to generate the transaction within my_sequence
`define USE_TRANSACTION_FACTORY
It did not run.I am surprised that if the code was not written by me how to debug?
2.why we should use `ovm_component_utils ?
`ovm_component_utils_begin(my_driver)
`ovm_field_object(m_dut_if_wrapper, OVM_ALL_ON)
`ovm_component_utils_end
In ovm_component_utils,it have
ovm_field_object `ovm_ field_init …?
why we need it?how to use it?
Does it mean if we did not use `ovm_field_object,we can not use set_config_object?just for this purpose?
set_config_object("*.m_driver", "m_dut_if_wrapper", m_dut_if_wrapper, 0);
I cannot see any diffirence between using new and config.
Do you have any example to show the right purpose/benifit for it?
4.Sequencer…My god!It’s more complicated!
`ovm_sequencer_utils(my_sequencer)
....
`ovm_sequence_utils(my_sequence_1, my_sequencer)
Maybe I need to read more again.
Thank you!