SystemVerilog语言简介(三)

15. 强制类型转换

 

Verilog不能将一个值强制转换成不同的数据类型。SystemVerilog通过使用'操作符提供了数据类型的强制转换功能。这种强制转换可以转换成任意类型,包括用户定义的类型。例如:

 

 

int'
(2.0 * 3.0) // 将结果转换为int类型

 

mytype' (foo)
// 将foo转换为mytype类型

 

 

 

一个值还可以通过在强制转换操作符前指定一个10进制数来转换成不同的向量宽度,例如:

 

17' (x - 2)
// 将结果转换为17位宽度

 

 

也可以将结果转换成有符号值,例如:

 

 

signed' (x)
// 将x转换为有符号值

 

16. 操作符

 

Verilog没有C语言的递增(++)和递减(--)操作符。而SystemVerilog加入了几个新的操作符:

 

l         ++和--:递增和递减操作符;

 

l         +=、-=、*=、/=、%=、&=、^=、|=、<<=、>>=、<<<=和>>>=赋值操作符;

 

17. 唯一性和优先级决定语句

 

在Verilog中,如果没有遵循严格的编码风格,它的if-else和case语句会在RTL仿真和RTL综合间具有不一致的结果。如果没有正确使用full_case和parallel_case综合指令还会引起一些其它的错误。

 

SystemVerilog能够显式地指明什么时候一条决定语句的分支是唯一的,或者什么时候需要计算优先级。我们可以在if或case关键字之前使用unique或requires关键字。这些关键字可以向仿真器、综合编译器、以及其它工具指示我们期望的硬件类型。工具使用这些信息来检查if或case语句是否正确建模了期望的逻辑。例如,如果使用unique限定了一个决定语句,那么在不希望的case值出现的时候仿真器就能够发布一个警告信息。

 

bit
[2:0] a;

 

unique if ((a==0) || (a==1))
y = in1;

 

else if (a==2)
y = in2;

 

else if (a==4)
y = in3; //
值3、5、6、7会引起一个警告

 

 

 

priority if
(a[2:1]==0) y
= in1; // a是0或1

 

else if
(a[2]==0) y
= in2; // a是2或3

 

else y
= in3; // 如果a为其他的值

 

 

 

unique
case (a)

 

 
0, 1: y = in1;

 

 
2: y = in2;

 

 
4: y = in3;

 

endcase
// 值3、5、6、7会引起一个警告

 

 

 

priority casez (a)

 

 
2'b00? : y = in1;
// a是0或1

 

 
2'b0?? : y = in2; // a是2或3

 

 
default : y = in3; //如果a为其他的值

 

endcase

 

 

18. 底部检测的循环

 

Verilog包含for、while和repeat循环,这几个循环都是在循环的起始处检测循环条件。SystemVerilog加入了一个do-while循环,这种循环在执行语句的结尾处检测循环条件。

 

19. 跳转语句

 

在语句的执行过程中,C语言提供了几种方式来跳转到新的语句,包括:return、break、continue和goto。在Verilog中除了通过使用disable语句跳转到语句组的尾部外,没有提供任何其它跳转语句。使用disable语句执行中止和继续功能要求加入块的名字,并且会产生不直观的代码。SystemVerilog加入了C语言的break和continue关键字,这两个关键字不要求使用块名字。另外,SystemVerilog还加入了一个return关键字,它可以用来在任何执行点上退出一个任务或函数。

 

l         break:退出一个循环,与C语言相同;

 

l         continue:跳转到一个循环的尾部,与C语言相同;

 

l         return 表达式:退出一个函数;

 

l         return:退出一个任务或void类型的函数。

 

SystemVerilog没有包含C语言中的goto语句。

 

20. 块名字和语句标签

 

在Verilog中,我们可以通过在begin或fork

时间: 2024-08-01 19:58:34

SystemVerilog语言简介(三)的相关文章

SystemVerilog语言简介(二)

6. 用户定义的类型   Verilog不允许用户定义新的数据类型.SystemVerilog通过使用typedef提供了一种方法来定义新的数据类型,这一点与C语言类似.用户定义的类型可以与其它数据类型一样地使用在声明当中.例如: typedef unsigned int uint;   uint a, b;     一个用户定义的数据类型可以在它的定义之前使用,只要它首先在空的typedef中说明,例如     typedef int48; // 空的typedef,在其他地方进行完整定义  

SystemVerilog语言简介(一)

1. 接口(Interface) Verilog模块之间的连接是通过模块端口进行的.为了给组成设计的各个模块定义端口,我们必须对期望的硬件设计有一个详细的认识.不幸的是,在设计的早期,我们很难把握设计的细节.而且,一旦模块的端口定义完成后,我们也很难改变端口的配置.另外,一个设计中的许多模块往往具有相同的端口定义,在Verilog中,我们必须在每个模块中进行相同的定义,这为我们增加了无谓的工作量. SystemVerilog提供了一个新的.高层抽象的模块连接,这个连接被称为接口(Interfac

《从问题到程序:用Python学编程和计算》——1.2 Python语言简介

1.2 Python语言简介 本节将首先简单介绍Python语言的一些基本情况,包括其发展和使用的情况.而后介绍Python语言系统的安装和使用方面的基本常识.1.2.1 Python语言的发展和应用 Python语言是CWI(荷兰国家数学和计算机研究中心)的程序员Guido van Rossum在1989年开始开发的一种高级编程语言,当时的主要设计目标是希望能用于方便地管理CWI的Amoeba操作系统.后来,由于其各方面的优点而逐渐流行起来. Python语言现在由Python软件基金会(Py

Macromedia Flex 标记语言简介_其它

Macromedia Flex 标记语言简介      Macromedia Flex(开发代号为Royale)是一个展现服务器,开发者可以用它来开发新一代的"复杂Internet应用"(RIAs - Rich Internet Applications).复杂Internet应用融合了桌面应用的可用性和web应用的易于管理的优点.     Flex是一个在J2EE应用服务器或servlet容器安装的展现服务器.它拥有丰富的用户界面组件.用于排布这些组件的基于XML的标记语言,以及可以

急急急-用c语言写三个函数分别判断年月日是否合法

问题描述 用c语言写三个函数分别判断年月日是否合法 年规定在1900-2050,月规定1-12,还要考虑是否闰年,闰年二月的天数是否正确,不正确则重新输入.本人实习生,整不出来领导要发飙了,这是一个通讯录内容的一部分,输入用户生日,1.name. 2.address. 3.birthyear. 4.birthmonth. 5.birthday 解决方案 #include<stdio.h> int isYear(int y) { return y>=1900 && y<

Swift语言指南(三)--语言基础之整数和浮点数

原文:Swift语言指南(三)--语言基础之整数和浮点数   整数   整数指没有小数的整数,如42,-23.整数可以是有符号的(正数,零,负数),也可以是无符号的(正数,零). Swift提供了8,16,32,64位形式的有符号和无符号的整数,这些整数遵循与C语言相似的命名规则.如8位无符号整数的类型为UInt8,32位有符号整数的类型为Int32,和Swift语言的其它类型一样,这些整型命名以大写字母开头.   整数的边界 你可以通过min或max属性为每一个整数类型指定一个最小值或最大值:

《Lua游戏开发实践指南》一2.1脚本语言简介

2.1脚本语言简介 脚本语言可以方便地与计算机底层功能交互.这体现在它常常被当做批处理命令工具,即发送一系列重复的指令给命令处理器的工具.所以早期的脚本语言常常称做批处理语言或者作业控制语言. 一个熟悉的例子就是MSDOS时期的老的*bat文件,这种批处理文件就是简单的文本文件,它包含一系列顺序执行的DOS命令.该语言本身就是DOS命令集合,通过进一步扩展成为一种伪脚本(参考下面的示例). 计算机语言用于解决一些特定的问题,从系统控制级别的C和C++到人工智能处理语言(如LISP).脚本语言

《R语言数据分析与挖掘实战》——第2章 R语言简介 2.1 R安装

第2章 R语言简介 R语言是一种为统计计算和图形显示而设计的语言环境,是贝尔实验室(Bell Laboratory)的Rick Becker.John Chambers和Allan Wilks开发的S语言的一种实现,提供了一系列统计和图形显示工具.它是一套开源的数据分析解决方案,由一个庞大且活跃的全球性研究型社区维护.它具有下列优势: 1)作为一个免费的统计软件,R可运行于多种平台之上,包括Windows.UNIX.MacOS和Linux. 2)R可以轻松地从各种类型的数据源导入数据,包括文本文

C/C++学习----C语言简介

一.基本常识: 1.交互方式: 软件的出现实现了人与计算机之间的更好的交互. 交互方式: 自然交互界面:声音控制,触摸屏手势识别 图形化界面:这种方式简单直观,使用者易于接受,容易上手操作. 命令行方式:需要有一个控制台,输入特定的指令,让计算机完成一些操作.较为麻烦,需要记录住一些命令. 2.计算机结构组成 3.计算机系统组成 4.程序与指令 指令:是对计算机进行程序控制的最小单位. 所有的指令的集合称为计算机的指令系统.电脑是X86,手机是ARM. 程序:是为完成一项特定任务而用某种语言编写