数据类型规则的放宽

数据类型规则的放宽

SystemVreilog放宽了使用变量的限制
SystemVreilog放宽了变量的使用规则,大大简化了模型中数据类型的使用。在SystemVreilog中共,任何数据类型的变量都可以通过下列方式赋值,但只能采用其中的一种方式。
(1)在任意的initial或always的过程中赋值
(2)在单个always_comb,always_ff或always_latch过程块中赋值
(3)通过单个的持续赋值语句赋值
(4)通过单个模块或原语的output/inout端口驱动赋值
大部分信号可以声明为logic或bit
这些变量使用规则的放宽允许模型中的大部分信号声明为一个变量类型,如bit或logic。不用事先确定信号使用的上下文,模型由系统级转换到RTL级或门级也不用改变信号的数据类型

module compare(output logic lt,eq,gt,input logic [63:0] a,b);
always@(a,b)if(a < b) lt = 1'b1;  //过程赋值else lt = 1'b0;assign gt = (a>b); //持续赋值
comparator  u1 (eq,a,b);//模块实例化
endmodulemodule comparator(output logic eq,input [63:0] a,b
);
always@(a,b)eq = (a == b);
endmole

对变量使用的限制可以防止设计错误

注意:变量不能被多个源驱动

SystemVreilog使用变量的约束
在SystemVreilog中下列使用是错误的:多个输出端口驱动一个变量,或者对一个变量进行多次持续赋值,或者对一个变量同时使用过程赋值和持续赋值。
对变量的这些 限制是因为变量没有内置决断函数,当多个器件驱动同一输出时,无法得到最终值。

module add_and_increment(output logic [63:0] sum,output logic carry,input logic [63:0] a,b
);
always@(a,b)sum = a + b;//sum的过程赋值assign sum = sum + 1; //错误!sum已经赋了一个值look_ahead  i1(carry,a,b);//实例化模块驱动carry
overflow_check i2(carry,a,b);//错误!对carry进行第二次驱动
endmoudlemodule look_ahead (output wire carry,input logic[63:0]a,b);
...
endmodulemodule overflow_check (output wire carry,input logic[63:0]a,b);
...
endmodule

单驱动逻辑使用变量,多驱动逻辑使用线网
SystemVreilog对于变量不能有多个驱动源的限制避免了设计错误。如果设计中的一个信号只有源,那么可以使用变量,就可以使用过程赋值、持续赋值、模块或原语的一个输出/输入端口。如果不小心使一个信号连接了两个驱动则会报错,因为一个变量只能有一个源。
SystemVreilog允许一个变量在多个always过程块中赋值,虽然着也是一种多驱动形式,但是一些新的过程块:always_comb,always_latch和always_ff。也限制了一个变量只能在一个过程块中赋值。
只有net数据类型可以有多个驱动,如多次持续赋值,和/或多个模块或者原语实例化输出端口的连接。因此,设计中可以被多个器件驱动的信号,如数据总线或者地址总线应该被声明为Verilog的net数据类型,如wire。即可用于输入,又可用输出的双向端口也应该被声明为net数据类型。
通过持续赋值或模块输出给自动变量赋值也是非法的。只用静态变量可以被持续赋值或连接到输出端口。之所以需要静态变量是为了能持续赋值,变量需要在整个仿真过程中都存在。自动变量则不会存在于整个仿真运行时间。

有符号修饰和无符号修饰

Verilog-2001有符号和无符号类型  
允许将任何数据类型声明为有符号数,缺省的数据类型为无符号数reg [63:0] u;//无符号64位变量
reg signed [63:0] s ;//有符号64位变量

SystemVreilog增加了缺省为有符号的数据类型。这些数据类型包括:byte、shortint、int和longint。SystemVreilog使用insigned关键字可以将这些有符号的数据类型定义为无符号的。

int s_int ;//有符号32位变量
int unsiged u_int; //无符号32位变量

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

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

相关文章

真实,让文学回到原点:关于非虚构写作的思考

任何一种文学主张&#xff0c;其实都是先有实践&#xff0c;而后再有理论和命名。“非虚构写作”也是如此。如果大胆猜想&#xff0c;“非虚构写作”可能要追溯到远古的口传心记和结绳记事。当时的人类记录下身边发生的事情&#xff0c;应该就是非虚构&#xff0c;而口头讲述的…

4位16色灰度图像处理

定义几个辅助的宏&#xff0c;如下。 // 拆分合并BYTE #define HIBITS(w) ((BYTE)((((BYTE)(w)) >> 4) & 0xf)) #define LOBITS(w) ((BYTE)(((BYTE)(w)) & 0xf)) #define MAKEBITS(a, b) ((BYTE)(((BYTE)(((BYTE)(a)) & 0xf)) | ((…

[转] 常见WinCE启动失败原因分析

*********************************************** 一般情况下&#xff0c;为设计中的IC开发SW方案&#xff0c;难免会碰到Bootloader/EBoot/OS启动失败的情况&#xff0c;对于Bootloader和EBoot&#xff0c;由于源代码很少&#xff0c;直接使用Trace32调试是最佳方法&#xff…

树莓派安装mariadb redis

安装软件 sudo apt install mariadb-server mariadb-client sudo apt install redis 二. 配置 1, mariadb 配置 配置远程访问 maridb configuration: sudo mysql_secure_installation # 设置root密码 vim.tiny mariadb.conf.d/50-server.cnf # 设置去除本地绑定 #bind-addre…

Google云服务降价,整合持续集成工具,支持Windows和托管虚拟机

本周二&#xff0c;Google举行了云平台的现场活动&#xff08;点击查看视频记录&#xff09;&#xff0c;展示了一系列新特性、改进和全新定价模型。\u0026#xD;\n定价\u0026#xD;\nGoogle认为&#xff0c;云计算价格应该跟随硬件领域的摩尔定律&#xff0c;而且在过去数年间硬件…

静态和自动变量

静态和自动变量 自动变量–也可以称为动态变量&#xff0c;主要是用来描述在测试程序、抽象系统级、交易级或总线功能模型中的验证程序。自动变量的另一个用途就是编写可重入的任务&#xff0c;当一个任务的前一次调用仍然在执行时&#xff0c;可以再次对其调用。 自动变量也允…

图像拉普拉斯金字塔融合(Laplacian Pyramid Blending)

转摘的&#xff0c;修改了下程序&#xff0c;图像融合看不太懂 。。。。http://blog.csdn.net/abcjennifer/article/details/7628655#comments // 转摘的别人的程序 // #include <stdio.h> #include <cv.h> #include <cxcore.h> #include <highgui.h>…

[转]GIS简介

************************************************** 最近论坛上经常有人讨论GIS&#xff0c;特意从别人的blog中转了一篇GIS简介的帖子************************************************** 地理信息系统(GIS,Geographic Information System)是一门用计算机来研究地理的学科…

debug设计

debug设计 会用到debug设计的阶段 (1)RTL级设计仿真 (2)实施后的设计模拟 (3)在系统调试 使用网表插入调试探测流动 (1)最高级别是一个简单的向导,用于创建和配置集成逻辑分析仪 (ILA)内核会根据选定的一组网络自动进行调试。 (2)下一级是主调试窗口,允许控制单个…

ASA 9.21 in Vmware Workstation 10

There is old post “ASA 8.02 in Vmware Workstation “ in this blog posted on Dec 2011. Anothe post “How to Make your own ASA 8.42 in VMware”. Here are all related posts in this blog: ASA 8.02 in Vmware WorkstationASA 8.42 in VMware WorkstationASA 9.21 i…

MMU及PTS说明

MMU与PTS表格 最近在FPGA上仿真调试Virgo&#xff08;基于ARM11的一款处理器&#xff09;芯片。MMU部分总是出错&#xff0c;具体的现象是查看物理地址和虚拟地址的映射时候芯片经常会挂掉。先是怀疑MMU的寄存器配置有问题&#xff0c;后来又怀疑MMU映射使用的PTS表格有问题&a…

bug?VS2010中CImageList::DrawIndirect总是返回失败

//VS2010 #if _MSC_VER > 1600pImageList->Draw(pDC, nImage, point, ILD_NORMAL); #elseSIZE size;size.cx rect.Width() < sizeImage.cx ? rect.Width() : sizeImage.cx;size.cy rect.Height() < sizeImage.cy ? rect.Height() : sizeImage.cy;pImageList-&g…

VHDL基本结构

VHDL基本结构 (1)实体(Entity):描述所设计的系统的外部接口信号,定义电路设计中得到所有的输入和输出端口。 (2)结构体(Architecture):描述系统内部的结构和行为 (3)包集合(Package):存放各设计模块能共享的数据类型、常数和子程序等; (4)配置(Configurat…

Source Code Collection for Reproducible Research

转自&#xff1a;http://www.csee.wvu.edu/~xinl/source.html “It doesnt matter how beautiful your theory is, it doesnt matter how smart you are. If it doesnt agree with experiment, its wrong” - Richard Feynman "As a method for finding things out, scien…

IClass与电源管理

IClass与电源管理 前段时间为J9项目上添加电源管理&#xff0c;中间走了一些弯路。之前错误的认为&#xff0c;IClass只是与电源状态的改变方法有关&#xff0c;也就是说IClass的正确与否只会影响到设备电源状态的正确与否&#xff0c;而不会造成设备是否可以支持设备电源状态的…

状态机在VHDL中的实现

状态机在VHDL中的实现 1、Moore状态机的VHDL描述 输出仅取决于所处的状态 LIBRARY IEEE; --库、程序包的说明调用 USE IEEE.STD_LOGIC_1164.ALL;ENTITY Moore IS PORT (RESET,CLOCK,DIN : IN STD_LOGIC;DOUT : OUT STD_LOGIC_VECTOR(2 DOWNTO 0) ); END;ARCHITECTURE Mo…

Linux : find big file in the all directories

1. Juniper Firewall find . -type f -size 10000 -exec ls -lh {} ; Sample output: [email protected]% find . -type f -size 10000 -exec ls -lh {} ; -rw-r–r– 1 930 929 134M Jan 5 17:34 ./cf/packages/junos-11.4R6.6-domestic-rw-r–r– 1 root wheel 1…

VC++静态文本框/PICTURE控件的notify属性

RT&#xff0c;该属性对应的是SS_NOTIFY&#xff0c;但是很多人误以为是WM_NOTIFY 。该属性可以用ModifyStyle函数修改。

VHDL仿真

VHDL仿真 仿真(Simulation也称模拟),不接触具体的硬件系统利用计算机对电路设计的逻辑行为和运行功能进行模拟检测,较大规模的VHDL系统设计的最后完成必须经历多层次的仿真测试过程,包括针对系统的VHDL行为仿真、分模块的时序仿真和硬件仿真,直至最后系统级的硬件仿真测…

从Var Tick角度来对CE电源管理

从Var Tick角度来对CE电源管理 一&#xff0e;相关的基础知识如下 1&#xff0e;OAL中Timer相关函数说明 1> OALTimerInit 参数&#xff1a; msecPerSysTick: 每个系统调度Tick对应多少ms&#xff1b; countsPerMSec: Timer的Counter变化多少为1ms&#xff0c;其值为T…