SystemVerilog语法之内建数据类型

简介:SystemVerilog引进了一些新的数据类型,具有以下的优点:(1)双状态数据类型,更好的性能,更低的内存消耗;(2)队列、动态和关联数组,减少内存消耗,自带搜索和分类功能。(3)类和结构:支持抽象数据结构。(4)联合和合并结构:允许对同一数据有多种视图。(5)字符串:支持内建的字符序列。(6)枚举类型:方便代码编写,增加可读性。

1.1内建数据类型

Verilog-1995有两种基本数据类型:变量和线网。变量可以是reg,integer,time与real。其中integer是32比特的有符号数。所有的存储都是静态的,意味着所有变量在整个仿真过程中都是存活的,子程序不能通过堆栈来保存形式参数和局部变量。Verilog-2001允许使用者在静态和动态存储之间切换,例如堆栈。

1.1.1逻辑类型(logic)

SystemVerilog对经典的reg数据类型进行改进,使得它除了作为一个变量以外,还可以被连续赋值,门单元和模块所驱动,命名为logic。任何使用线网的地方都可以使用logic类型,但是要求logic类型不能有多个结构性驱动,例如双向总线,必须使用wire类型。

module logic_data_type(input logic rst_h);parameter CYCLE = 20;logic q,q_l,d,clk,rst_l;initial beginclk = 0;forever #(CYCLE/2) clk = ~clk;endassign rst_l = ~rst_h;not n1(q_1, q);my_dff(q,d,clk,rst_l);endendmodule
1.1.2双状态数据类型

SystemVerilog引入的双状态数据类型有利于提高仿真器的性能并减少内存的使用量。最简单的双状态数据类型是bit,它是无符号的。双状态数据类型:bit,int,byte,shortint,longint,real。四状态数据类型:integer,time。无符号数据类型:bit,time。有符号数据类型:int,byte,int,integer。可以使用unsigned或者signed改变数据的符号类型。

注意:在把双状态变量连接到被测设计时,尤其时被测设计的输出时务必要小心,如果被测设计试图产生X或Z,这些值会被转换为0或1.使用$isunknown操作符,可以在表达式任意位出现X或Z时返回1.

 if ($isunknown(iport) == 1) begin$display("@%0t:4-state value detected on iport %b", $time, iport);end

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/79938.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

蓝光三维扫描技术:高效精密测量相机镜头底座注塑件

如今越来越多的摄影爱好者、vlog拍摄者使用数码相机以及无人机,随时随地记录生活中的每一刻美好瞬间,对相机设备的要求也不断提高。 — 案例背景 — 相机镜头底座涉及镜头装置可靠、螺丝位置度连接以及壳体组装,镜头底座注塑件生产厂商&…

【前端】【面试】【业务场景】前端如何获取并生成设备唯一标识

✅ 总结 问题:前端如何获取并生成设备唯一标识? 核心要点:浏览器原生信息有限,但通过组合多个维度可生成设备指纹(Device Fingerprint),用于唯一标识设备。 常见方式: 浏览器信息&…

极刻AI搜v1.0 问一次问题 AI工具一起答

软件名:极刻AI搜 版本:v1.0 功能:囊括了互联网上比较好用的一些支持”搜索“的网站或者工具 开发平台:nodepythonweb 分类有: AI搜索(支持智能问答的AI搜索引擎) 常规搜索:&#xff…

《2025最新Java面试题全解析:从基础到高并发架构设计》

25年Java开发者面试中最常考察的100道面试题,涵盖Java基础、JVM、多线程、Spring框架、分布式系统等核心知识点,并结合大厂真实面试案例进行深度解析,助你顺利通过技术面试。 一、Java基础篇(高频15问) 1. HashMap底层…

[c语言日寄]免费文档生成器——Doxygen在c语言程序中的使用

【作者主页】siy2333 【专栏介绍】⌈c语言日寄⌋:这是一个专注于C语言刷题的专栏,精选题目,搭配详细题解、拓展算法。从基础语法到复杂算法,题目涉及的知识点全面覆盖,助力你系统提升。无论你是初学者,还是…

51c嵌入式~单片机~合集5~DMA

我自己的原文哦~ https://blog.51cto.com/whaosoft/12940885 一、DMA DMA,全称Direct Memory Access,即直接存储器访问。 DMA传输将数据从一个地址空间复制到另一个地址空间,提供在外设和存储器之间或者存储器和存储器之间的高速数据传输…

Linux随记(十七)

一、综合报错:fork: Cannot allocatte memory 和 modues is unknwon 和 pam_limits(crond:session) : unknwon limit item ‘noproc’ 1.1 fork: Cannot allocatte memory 处理 - 随记 排查时间2025年4月。 环境描述: 2014年左右的服务器,…

支持mingw g++14.2 的c++23 功能print的vscode tasks.json生成调试

在mingw14.2版本中, print库的功能默认没有开启, 生成可执行文件的tasks.json里要显式加-lstdcexp, 注意放置顺序. tasks.json (支持mingw g14.2 c23的print ) {"version": "2.0.0","tasks": [{"type": "cppbuild","…

赋能能源 | 智慧数据,构建更高效智能的储能管理系统

行业背景 随着新能源产业的快速发展,大规模储能系统在电力调峰、调频及可再生能源消纳等领域的重要性日益凸显。 储能电站作为核心基础设施,其能量管理系统(EMS)需要处理海量实时数据,包括电池状态、功率变化、环境监…

使用 Flutter 遇坑小计

前言 首先, 谷哥很贴心地为国内用户准备了一份使用手册 不过很遗憾 就算你照着它的手册来了, 还是会在后续使用中遇到其它的坑 今天我踩了, 保不齐明天就是其他人(lol) running gradle task ‘assembledebug’ stuck 首先去确定下当下Android Studio(或者说你目前的Flutter项…

链表与文件

链表 单链表 1.链表的初始化 typedef struct node {char name[100];int number;struct node *next; }Node,*LinkList;}Node;2.链表的初始化函数(Initlist) LinkList InitList() {LinkList head;head(Node*)malloc(sizeof(Node));head->nextNULL;return head; }3.建立链…

uniapp打ios包

uniapp在windows电脑下申请证书并打包上架 前言 该开发笔记记录了在window系统下,在苹果开发者网站生成不同证书,进行uniapp打包调试和上线发布,对window用户友好 注:苹果打包涉及到两种证书:开发证书 和 分发证书 …

OpenCV 图形API(48)颜色空间转换-----将 LUV 颜色空间的图像数据转换为 BGR 颜色空间函数LUV2BGR()

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 将图像从LUV颜色空间转换为BGR颜色空间。 该函数将输入图像从LUV颜色空间转换为BGR。B、G和R通道值的常规范围是0到255。 输出图像必须是8位无符…

HOW MUCH POSITION INFORMATION DO CONVOLUTIONAL NEURAL NETWORKS ENCODE?

1. 动机: 卷积神经网络中的卷积操作实际上是一个局部的操作,这样的话就会使得它虽然知道自己看的是什么,但是却不清楚他在图像中的位置信息,但是位置信息实际上是很有用的,因此CNN可能潜在的学习到了如何去编码这种位置信息。所以这篇论文就是为了研究这种位置信息是如何在…

56、如何快速让⼀个盒⼦⽔平垂直居中

在网页开发中&#xff0c;有多种方式能让一个盒子实现水平垂直居中。下面为你介绍几种常见且快速的方法。 1. 使用 Flexbox 布局 Flexbox 是一种非常便捷的布局模型&#xff0c;能够轻松实现元素的水平和垂直居中。 html <!DOCTYPE html> <html lang"en"&…

RAG应用过程监控系统选型:LangFuse

Langfuse 是一个开源的大语言模型&#xff08;LLM&#xff09;工程平台&#xff0c;旨在协助团队构建、调试和改进由人工智能驱动的应用程序。凭借其全面的工具套件&#xff0c;Langfuse 使开发者能够深入洞察其 LLM 应用程序&#xff0c;并优化性能。 Stars 数10,522Forks 数9…

Java+nanomsg快速实现去broker的数据通信

先说一下nanomsgJava需要做什么&#xff1a; 1、nanomsg的so文件的制作与放置路径 2、Java代码引入nanomsg的依赖 3、支持Socket参数的调节&#xff08;包括ipv4/ipv6的网络支持&#xff09; 在我目前的认知范围内要与一个通讯目标实现数据交互通常有这些方式 1、broker中间人…

lightgbm原理、特殊点、参数分析

lightgbm&#xff1a; 一、位置&#xff1a; 相比XGB&#xff0c;LGBM有更高效的计算效率和更低的内存占用&#xff0c;并且面对高维数据&#xff0c;LGBM算法拥有更好的过拟合特性&#xff0c;这使得在建模数据量日趋增加的今天&#xff0c;LGBM会更适合作为前期探索性建模的模…

车载软件架构 --- 二级boot设计说明需求规范

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 周末洗了一个澡,换了一身衣服,出了门却不知道去哪儿,不知道去找谁,漫无目的走着,大概这就是成年人最深的孤独吧! 旧人不知我近况,新人不知我过…

Cpp实现window上cmd执行效果

Cpp实现window上cmd执行效果 文章目录 Cpp实现window上cmd执行效果1.头文件包含部分2.main 函数部分3. 获取当前工作目录部分4.主循环部分5.退出条件部分6.处理 cd 命令部分7.执行其他命令部分8.读取命令输出部分9.关闭管道并处理返回码部分10.源码 1.头文件包含部分 #include…