OVM to UVM migration of ovm_register_agent layering agent code and ovm_register_sequence_base code


I am working on migrating an existing OVM testbench to UVM. I have read the documentation on this process and the scripts available for doing this, however I’m a bit unsure as to what is involved in porting OVM register layer code. There doesn’t seem to be much detail here:


and from what I can see the UVM register layer is more sophisticated and one of the major differences between OVM and UVM. My existing OVM testbench uses the layering ovm_register_agent (with a monitor and checker hanging off it), and I have an adapter sequence extending ovm_register_translator_base. All my register sequences ultimately extend ovm_register_sequence_base which utilise do_write and do_read.

Are there scripts for this aspect of OVM->UVM porting (or even guidelines as to what’s needed)? Ideally I’d like to make the minimal amount of code changes first and get the UVM testbench running before I consider adding any of the more sophisticated uvm_reg features.

Any insights or tips welcome!


  • Andy

UVM Register model is more Advanced and have some of the inbuilt features in UVM like register adapter/predictor logic’s inbuilt whereas in OVM RAL model has only the register map and the basic backdoor and front door methods. I would like to suggest you instead of using the migration script from OVM to UVM you could generate the RAL model using the generic xls sheet that is present in UVM with this you could be able to get all the features of UVM RAL.

In reply to nchakravarthy:


Thanks for the reply! I guessed that this might be the recommended approach alright - thanks for the suggestion I think I will go down this route.