uvm寄存器模型怎么给定数据的位宽

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了uvm寄存器模型怎么给定数据的位宽相关的知识,希望对你有一定的参考价值。

参考技术A 计算机在访问存储器时,用地址来进行索引,也就是根据地址来找到数据进行存储或读取 而计算机内最小的地址单位是字节地址,也就是按照字节来编排存储区的地址 由于每个字节是8位二进制数据,所以读写数据时,需要8位数据总线,一次可同时读写8位...

在 c 中找到一个 int 的位宽;最佳跨平台方法

【中文标题】在 c 中找到一个 int 的位宽;最佳跨平台方法【英文标题】:finding the bit-width of an int in c; best-cross platform method 【发布时间】:2014-01-11 22:46:00 【问题描述】:

我需要知道我的代码正在运行的系统中本机 int 的宽度(大小),以位为单位。

我可以使用“sizeof”来获取字符的宽度,但是,我的理解是,在 C 规范中,char 没有分配特定数量的位。

那么找到 int 位宽的最佳跨平台方法是什么?

【问题讨论】:

"... 需要知道 ... 的宽度(大小),以位为单位。" 那么标题最好是:“finding the bit-宽度 ..."? 是的,我很抱歉 - 已编辑 【参考方案1】:

打开limits.h,您应该会看到有关特定平台整数限制大小的所有信息。

这是您确定int 中有多少位的方法:

#include <limits.h>
printf("Number of bits in an int: %zu\n", sizeof(int) * CHAR_BIT);

如果您对特定平台的floatdouble 限制感兴趣,请打开float.h

【讨论】:

【参考方案2】:

CHAR_BIT(来自&lt;limits.h&gt;)是char中的位数,所以

sizeof(int) * CHAR_BIT

就是你要找的。​​p>

CHAR_BIT 在“5.2.4.2.1 整数类型的大小”中指定 符合 C99 标准。

添加: Open Group 规范可能会很有趣

http://pubs.opengroup.org/onlinepubs/7999959899/basedefs/limits.h.html

状态:

限制 CHAR_BIT、SCHAR_MAX 和 UCHAR_MAX 的值是 现在需要分别为 8、+127 和 255。

【讨论】:

如果它是一个符合 Posix 的系统,你可以使用WORD_BIT,fwiw。否则,不能保证int 中没有填充位。【参考方案3】:

如果每个字符不使用 8 位,我会感到非常惊讶。你可以用更多的字符填充一个字符,然后它应该像 0xFFFF 一样,看看它的值是什么。

【讨论】:

不要太惊讶!大于 8 位的字符实际上很常见。

以上是关于uvm寄存器模型怎么给定数据的位宽的主要内容,如果未能解决你的问题,请参考以下文章

第七章 UVM中的寄存器模型

UVM寄存器模型小盲点

fpga编程问题,这些代码怎么理解,求注释

UVM1.1 和 UVM1.2的不同

了解模型机中多寄存器接数据总线的实现原理

Verilog中reg寄存器位宽[1:0]和[WIDTH-1:0]的区别?