system-verilog - 试图在寄存器中设置所有具有相似名称的寄存器字段
问题描述
我正在尝试在SystemVerilog
. 这是我的注册字段:
TXA
TXA1
RSVD
T4AMP
我有兴趣将所有这些都设置到以 TXA 开头的寄存器字段中。我已经使用下面的代码来使用正则表达式
uvm_reg_field my_fields;
register1.get_fields(all_fields);
my_fields = all_fields.find(register1)
with(!uvm_re_match("TXA*",register1.get_name()));
//I have a loop to loop through the interested fields
my_fields[i].set('1);
但是,我看到了错误:
指定值 (
0xffffffffffffffff
) 大于字段“TXA”大小(1 位)
有人可以帮帮我吗。提前致谢 :)
解决方案
uvm_reg_field
这是所有值在内部都具有 typedef 的宽度的缺点之一umm_reg_data_t
。默认为 64 位。因此'1
扩展到 64 个。
你可以做:
my_fields[i].set((uvm_reg_data_t'(1) << my_fields[i].get_n_bits)-1)
推荐阅读
- flutter - 布尔表达式不能为空 | 当我将 timerState 切换为“true”时出现此错误。“False”没有给出错误,出了什么问题?
- youtube - 如何提取按日期发布的 YouTube 视频数量(包含特定关键字)?
- elasticsearch - 如何检查 ElasticSearch 黄色状态的原因
- css - 修复对齐项目“中心”输入/按钮不匹配
- java - 给定一个字符串,删除除连字符以外的所有特殊字符并计算单词数
- html - CSS 选择下一个元素
- java - 在 Spring 与 NGINX 中配置 SSL
- html - div之间的神秘边距
- oop - 店铺产品管理
- java - “线程“主”java.util.MissingFormatArgumentException 中的异常:格式说明符“%.4f””