Как добавить дополнительную запись uvm_reg для доступа к каждой карте регистров?

Я ищу способ всегда добавлять дополнительный доступ для записи uvm_reg, когда я читаю или пишу в uvm_reg. Поток показан в псевдокоде.

псевдокод:

reg_map.MY_REGS.REG1.write( status, <my data >);

Это всегда должно быть:

reg_map.MY_CTRL_REG.CFG   ( status, <data> );
reg_map.MY_REGS.REG1.write( status, <data> );

Идея состояла в том, чтобы использовать альтернативный входной доступ, чтобы получить адрес из rw_info и добавить дополнительную запись, но это не удается, потому что это рекурсивный вызов.

Есть ли способ настроить команду чтения, записи и обновления reg_map и добавить к исходному доступу приватную запись uvm_reg?


person rth    schedule 17.08.2017    source источник


Ответы (1)


Вы можете использовать класс обратных вызовов регистра UVM — uvm_reg_cbs. https://www.vmmcentral.com/uvm_vmm_ik/files3/reg/uvm_reg_cbs-svh.html

1) Расширьте этот класс и заполните свою виртуальную функцию pre_write

2) Зарегистрируйте свой класс обратного вызова в reg_block, с которым вы хотите его использовать. (Посмотрите на uvm_callback::add)

https://www.vmmcentral.com/uvm_vmm_ik/files3/base/uvm_callback-svh.html#uvm_callback

Удачи!

person noobuntu    schedule 17.08.2017