В вашем случае, поскольку в вашем реестре всего одно поле, их нет. Но чтобы понять немного глубже, давайте рассмотрим случай, когда ваш регистр был определен следующим образом:
reg_def MY_REG MY_REG_FILE 20'h00018 {
reg_fld my_reg_field : uint (bits : 32) : W : 0x0;
};
Обратите внимание, что я сделал поле только для записи. Допустим, ваше поле обновляется со значением 0x1010_1010
.
Вызов my_reg.my_reg_field
вернет это значение, 0x1010_1010
.
Метод read_reg_val()
возвращает значение, которое вы получили бы при доступе на чтение к этому регистру. В этом случае, поскольку поле не читается, вы получите 0x0000_0000
(это значение настраивается, но по умолчанию это значение сброса).
Также есть метод read_reg_rawval()
, который возвращает значение, которое хранится в реестре (т.е. игнорирует политики доступа к полям). В нашем случае он вернет значение, хранящееся в поле 0x1010_1010
.
read_reg_val()
и read_reg_rawval()
полезны, когда в регистре объявлено несколько полей, потому что эти методы будут упаковывать значения всех из них и возвращать скалярное значение (типа vr_ad_data_t
).
person
Tudor Timi
schedule
30.10.2014