当前位置:网站首页>SystemVerilog-结构体(二)
SystemVerilog-结构体(二)
2022-07-01 16:24:00 【碎碎思】
数字硬件建模SystemVerilog-结构体(二)


结构体
结构体用于将多个变量组合在一个通用名称下。设计通常具有逻辑信号组,例如总线协议的控制信号,或状态控制器内使用的信号。结构体提供了将这些相关变量捆绑在一起的方法。结构体中的所有变量都可以单个赋值,或者每个变量都可以单独赋值。结构体包可以复制到具有相同定义的另一个结构体,并通过模块端口、任务或函数进出。
结构体复制
一个自定义结构体可以复制到另一个自定义结构体,只要这两个结构体是从同一个自定义结构体定义声明的。以下示例使用了上节中所示的结构体定义和声明。
匿名结构体不能作为一个整体复制,但可以一次复制一个成员:

压缩和非压缩结构体
默认情况下,结构体会被非压缩的。这意味着结构体的成员被视为独立变量或常量,并以一个共同的名称分组在一起。SystemVerilog没有指定软件工具应该如何存储非压缩结构体的成员。不同的软件工具具对于结构体的存储分布也是不同的。
通过使用关键字packed,将结构体显式声明为压缩结构体。

压缩结构体以与向量相同的形式将结构体的所有成员存储为连续位。结构体的第一个成员是向量最左边的字段。结构体中最后一个成员的最右边的位是向量的最低有效位,编号为位0。如图4-2所示。
图4-2:压缩结构体存储为向量 压缩结构体的所有成员都必须是整数值。整数值是可以表示为向量的值,例如byte、int和使用bit或logic类型创建的向量。如果结构体的任何成员不能表示为向量,则该结构体不能被压缩。这意味着压缩结构体不能包含实数或短实数变量、非压缩结构体、非压缩联合体体或非压缩的数组。
引用压缩结构体和结构体成员。压缩结构体可以复制,或分配一个结构体表达式值列表,方法与非压缩结构体相同。压缩结构体的成员可以通过成员名称引用,方式与非压缩结构体相同。
压缩结构体也可以被视为一个向量。因此,除了结构体分配,向量值还可以分配给压缩结构体

向量赋值是合法的,因为赋值左边的结构体成员已压缩在一起,形成一组连续的位,方式与向量相同。因为压缩结构体存储为一组连续的位,所以对压缩结构体执行向量操作也是合法的,包括位选择和部分选择。以下两个赋值都将分配给data_word的tag成员:

可以在向量上执行的数学运算、逻辑运算和任何其他运算也可以在压缩结构体上执行。
有符号压缩结构体。压缩结构体可以用signed和unsigned关键字声明。当在运算或关系运算中用作向量时,这些修饰符会影响整个结构体的识别方式。它们不会影响结构体成员的识别方式。结构体的每个成员都被视为有符号或无符号,这取决于该成员的类型声明。压缩结构体的部分选择是无符号的,与向量的部分选择相同。

通过端口传递结构体
自定义结构体可以通过模块和接口的端口传递,结构体必须首先使用 typedef 定义为用户自定义数据类型,然后才允许将模块或接口的端口声明为结构体类型。

非压缩的结构体必须是自定义结构体,才能通过端口传递该结构体。与端口的连接必须是与端口类型完全相同的结构体。也就是说,端口和端口两侧的连接都必须从相同的typedef定义声明。此限制仅适用于非压缩结构体。通过模块端口的压缩结构体被视为向量。端口的外部连接可以是相同类型的压缩结构体,也可以是任何类型的向量。
通过将任务或函数参数声明为结构体类型,自定义结构体也可以作为参数传递给任务或函数。

当调用一个任务或函数时,如果该任务或函数有一个非压缩的结构体作为正式参数菜单,则必须将一个完全相同类型的结构体传递给该任务或函数。压缩结构体形式参数被视为向量,可以传递给任何类型的向量。
传统的Verilog与结构体
最初的Verilog语言没有一种方便的机制来将常见信号收集到一个组中。在传统的Verilog样式的模型中,工程师必须使用特殊的分组方法,例如命名约定,其中一组中的每个信号都以一组公共字符开始或结束。最初的Verilog语言也无法通过模块端口或任务和函数传递信号集合,每个信号都必须通过单独的端口或参数传递。
在原始Verilog语言中添加结构体是一种强大的RTL建模构造,反之亦然。它提供了一种更简洁、更直观、更可重用的复杂模型功能建模方法。包中定义的自定义结构体可以在多个模块中重复使用,也可以在用于验证RTL模型的验证测试台中重复使用。
综合指导
非压缩结构体和压缩结构体都是可综合的。综合工具支持结构体通过模块端口传递 , 也支持作为输入或输出传递给任务和函数 , 也支持使用成员名和值的列表对结构体进行赋值。
综合编译器可能比压缩结构体更好地优化非压缩结构体。非压缩结构体允许软件工具确定存储或实现每个结构体成员的最佳方式,而压缩结构体则决定如何组织每个成员。
边栏推荐
- 学会了selenium 模拟鼠标操作,你就可以偷懒点点点了
- Sqlserver query: when a.id is the same as b.id, and the A.P corresponding to a.id cannot be found in the B.P corresponding to b.id, the a.id and A.P will be displayed
- The Department came to a Post-00 test paper king who took out 25K. The veteran said it was really dry, but it had been
- Talking from mlperf: how to lead the next wave of AI accelerator
- IM即時通訊開發實現心跳保活遇到的問題
- vim用户自动命令示例
- Origin2018 installation and use (sorting)
- Submission lottery - light application server essay solicitation activity (may) award announcement
- 全面看待企业数字化转型的价值
- Go 语言怎么优化重复的 if err != nil 样板代码?
猜你喜欢

How to restore the system with one click on Lenovo laptop

數據庫系統原理與應用教程(006)—— 編譯安裝 MySQL5.7(Linux 環境)
![[JetsonNano] [教程] [入门系列] [三] 搭建TensorFlow环境](/img/0e/52e37527bc717c7a55741725087bad.png)
[JetsonNano] [教程] [入门系列] [三] 搭建TensorFlow环境

毕业季 | 华为专家亲授面试秘诀:如何拿到大厂高薪offer?

How to maintain the laptop battery

VMware 虚拟机启动时出现故障:VMware Workstation 与 Hyper-v 不兼容...

C语言输入/输出流和文件操作

Korean AI team plagiarizes shock academia! One tutor with 51 students, or plagiarism recidivist

程序员职业生涯真的很短吗?

The supply of chips has turned to excess, and the daily output of Chinese chips has increased to 1billion, which will make it more difficult for foreign chips
随机推荐
Graduation season | Huawei experts teach the interview secret: how to get a high paying offer from a large factory?
Leetcode 77 combination -- backtracking method
sql刷题586. 订单最多的客户
Germany if was crowned with many awards. How strong is this pair of headphones? In depth evaluation of yinpo GTW 270 hybrid
【Hot100】17. Letter combination of telephone number
为国产数据库添砖加瓦,StoneDB 一体化实时 HTAP 数据库正式开源!
Bugku's file contains
用手机在同花顺上开户靠谱吗?这样有没有什么安全隐患
Learn selenium to simulate mouse operation, and you can be lazy a little bit
OJ questions related to complexity (leetcode, C language, complexity, vanishing numbers, rotating array)
Sweden announced its decision to exclude Huawei 5g equipment, but Huawei has successfully found a new way out
Five years after graduation, I became a test development engineer with an annual salary of 30w+
Submission lottery - light application server essay solicitation activity (may) award announcement
德国iF多项大奖加冕,这副耳机有多强?音珀GTW 270 Hybrid深度评测
MLPerf Training v2.0 榜单发布,在同等GPU配置下百度飞桨性能世界第一
Dataframe gets the number of words in the string
Exclusive news: Alibaba cloud quietly launched RPA cloud computer and has opened cooperation with many RPA manufacturers
[daily question] 1175 Prime permutation
今天14:00 | 港大、北航、耶鲁、清华、加大等15位ICLR一作讲者精彩继续!
【Hot100】20. Valid parentheses
