Systemverilog里data type的记录

这篇具有很好参考价值的文章主要介绍了Systemverilog里data type的记录。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 区别data typedata object

我的理解data type是类似于class type,然后data object是类似于class object,相当于一个entity。所以data type可以用于声明data object。每一个data object是一个命名的entity,它带有一个data value和data type。比如:

int是一个data type;

int a=1; //a就是一个data object;

2. Singular and aggregate types

Data types可以被分类为singular或aggregate。除了unpacked structure、unpacked union、unpacked arrary,其它的data type都是singular type。unpacked structure、unpacked union、unpacked arrary都是aggregate type。一个singular variable或expression代表一个value、symbol或handle。Aggregate expressions和variables代表一组singular value。之所以这样分类,是因为方便operators和functions可以更方便的引用这些data types。

3. Nets and variables

Data objects主要可以分为两组:variables和nets。这两组的不同之处在于他们赋值和保持value的方式。

Net可以被一个或多个continuous assignment、primitive output、module port赋值。variable可以被一个或多个procedural statements赋值(包括procedural continuous assignment)。

Net可以在declaration的时候,implicit连续赋值。但variable如果在declaration的时候也给了assignment,那也只是相当于给该variable初始化,而不是continuous assignment。

有两个不同类型的net types:built-in和user-defined。Net type主要是模拟物理连线,因此net通常不能store value(除了trireg net)。Net的值取决于它的drivers,例如continuous assignment或gate。如果没有driver的话,那么它的值将会是高组态。built-in的net types有:

Systemverilog里data type的记录

wire和tri是相同的syntax和functions,提供两个名字主要是用于model只是不同的purpose。wire用于被single gate或continuous assignment驱动的nets,tri用于被多个drivers驱动的nets。如果有多个drivers具有相同的logical conflicts,那么结果就是x态。

Variable是data storage element的抽象,它可以储存value。

4. Type compatibility

有5个水平的type compatibility:matching、equivalent、assignment compatible、cast compatible和nonequivalent。

5. ScalarVector

在reg、logic或bit定义中,scalar是1bit位宽;vector是多bit位宽。

5. Packed arraysunpacked array的区别

Packed array是声明在data identifier name之前的dimensions,可以是1维或多维的,1维的也称为向量vector。Unpacked arrary是声明在data identifier之后的dimensions,可以1维或多维的。

Packed arrays可以将vector分为subfields,这样可以方便的访问到array中的元素。因此,packed array需要连续的bit存储。

固定size的unpacked arrary用以下两种方式声明都可以的:

Systemverilog里data type的记录

6. Memory

element类型为reg、logic或bit的一维数组称为memory,如:

      logic [7:0] mema [0:255];  // declares a memory arrary of 256 8-bit elements. The array indices are 0 to 255

7. Multidimensional arrarys

多维数组是数组中包含数组。多维数组可以用包括多维来定义的。在identifier之前的为packed维度,在identifier之后的称为unpacked维度。

在使用多维数组时,packed dimension在unpacked dimension之后,并且最右边的维度变化最快,如:

Systemverilog里data type的记录

Part-select指的是选择一维packed arrary中某1bit或多个连续bit。

Slice指的是选择一个数组中一个或多个连续的elements。

part-selct和slice选择的size必须是常数,但位置可以是变量,如:

Systemverilog里data type的记录

8. unpacket arrary访问方式

数组的index中如果是超出数组大小或包含任何的x/z态,那么该index就是无效的。

用invalid index从unpacked array读取内容,结果如下:

Systemverilog里data type的记录

Systemverilog里data type的记录

用invalid index写到array中,应该是不执行任何操作,除了queue中[$+1]的元素操作或者associative array创建新元素。

Systemverilog里data type的记录

 文章来源地址https://www.toymoban.com/news/detail-408203.html

到了这里,关于Systemverilog里data type的记录的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 理解 flask中request中form、data、json、values属性的区别

    flask的request对象中关于请求参数的获取有几个不同的属性,例如 args、form、data、json。估计大部分人一开始也分不清什么情况下哪个属性有值,哪个属性没值,这篇文章全面整理了这几个属性之间的区别和使用场景。 flask.request对象其实是对HTTP请求的一种封装,我们知道HTTP

    2024年02月12日
    浏览(39)
  • Systemverilog中processes的记录

    Processes general: Structured procedures (initial procedures, always procedures, final procedures, task, function) Block statements (begin-end sequential blocks, fork-join parallel blocks) Timing control (delays, events, waits, intra-assignment) Process threads and process control 1. always_comb 和 always @* 的区别 always_comb在time zero时会自动执行

    2023年04月09日
    浏览(36)
  • systemverilog之program与module的区别

    为避免仿真和设计竞争问题(race condition),systemverilog中引入了program的概念。 在Verilog中,调度如下图所示: 从图中可以看出,阻塞赋值与非阻塞赋值的调度是不一样的,其中#0的阻塞延时赋值则处在中间的调度区域。 对于systemverilog来说,就多添加了几种调度区域。如下图所示

    2024年02月11日
    浏览(27)
  • Result type not match for select id=“xxx“类似错误解决

    这个错误通常是由于在你的代码中使用了一个无效的选择器或者是因为你使用了一个未定义的选择器导致的。 首先,确保你的选择器是正确的,尤其是在使用 ID 选择器的时候,注意 ID 名称是否写错了。你也可以使用控制台来检查选择器是否正确,例如使用 document.querySelect

    2024年02月06日
    浏览(50)
  • Windows 数据类型 (Windows Data Types)

    参考:https://learn.microsoft.com/en-us/windows/win32/winprog/windows-data-types 要求 要求 值 最低受支持的客户端 Windows XP [仅限桌面应用] 最低受支持的服务器 Windows Server 2003 [仅限桌面应用] Header BaseTsd.h;WinDef.h;WinNT.h 系统函数的调用约定 头文件:WinDef.h 声明 详细信息:https://learn.microsoft.

    2024年02月06日
    浏览(35)
  • SAP ABAP中的数据类型 Data Types

    简单来说分两种: 数据字典里定义的 在ABAP程序里定义的 1.1 数字型的 用在数学计算里的,表达式里的,表序号里的。 Interger整数型 : INT1 : 1字节整数,0-255 (2的8次方-1) INT2 : 2字节整数,-32768-32767(2的15次方-1,有一位是符号位) INT4 : 4字节整数,-2147483648-2147483647(

    2024年02月03日
    浏览(43)
  • 解决‘function‘ object has no attribute ‘data‘

    报错1 原本代码 修改后代码 key 报错2  解决方法2.1 解决方法2.2 AttributeError: \\\'function\\\' object has no attribute \\\'data\\\' function对象没有data属性 key from sklearn import datasets cancer = datasets.load_breast_cancer() load_iris  is a function and needs to be called as such: Use  load_iris()  instead of  load_iris , like this,  

    2024年02月05日
    浏览(51)
  • Kotlin 1.9 新特性预览:data object (数据单例)

    data object (数据单例) 是 Kotlin 1.9 中预定引入的新特性 ,但其实从 1.7.20 开始就可以预览了。启动预览需要在 gradle 中升级 KotlinCompileVersion: 接下来让我们看看它有哪些特点。 data object 相对于普通 object ,在调用 toString() 的时候,前者的可读性更好,输出类名,不再携带 HashC

    2024年02月12日
    浏览(35)
  • AttributeError: ‘NoneType‘ object has no attribute ‘data‘

    在深度学习训练网络过程中,我们常遇到如下的问题:属性错误(其中非类型的对象没有属性\\\'data\\\'),解决的方法主要是查看网络构造是否出现问题。 废话不多说,实践出真知。举个轻量级神经网络训练的例子,源代码包含三部分:网络构造、数据预处理加载以及网络训练。

    2024年02月11日
    浏览(49)
  • pip报TypeError: ‘type‘ object is not subscriptable错误

    因为安装 Manim库,中间下载 colour 组件时因为更新pip版本到 23.1.2 ,与python3.9.0 适配的 pip version 19.2.3 版本矛盾,导致后续无法正常使用python,出现如下报错: 修复 pip 的思路很简单,出问题的并不是 python ,而是因为 pip 的版本等级太高,因此想办法能够把 pip 的版本降低就可

    2024年02月15日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包