首页 > 其他分享 >SystemVerilog -- 2.1 Data Types ~ New Data types

SystemVerilog -- 2.1 Data Types ~ New Data types

时间:2024-04-13 21:47:34浏览次数:30  
标签:en -- data logic var my bit Data SystemVerilog

SystemVerilog logic and bit

上一篇文章中,概述了主要数据类型。在本会话中,我们将研究 4-state 和 2-state 变量以及两种名为logicbit的新数据类型。

4-state data types

除了 0 和 1 之外,还可以具有未知(X)和高阻态(Z)值的类型称为 4 态类型。请注意,只能在过程快中驱动,例如,数据类型只能在语句中驱动。SystemVerilog 引入了一种新的 4-state 数据类型,称为可以在过程快和连续语句中驱动。但是,具有多个驱动程序的信号需要声明为 net-type,以便 SystemVerilog 可以解析最终值。reg always initial wire assign logic assign wire

logic

module tb;
    logic [3:0] my_data;      // Declare a 4-bit logic type variable
    logic       en;           // Declare a 1-bit logic type variable

    initial begin
      $display ("my_data=0x%0h en=%0b", my_data, en); // Default value of logic type is X
      my_data = 4'hB;
      $display ("my_data=0x%0h en=%0b", my_data, en);
      #1;
      $display ("my_data=0x%0h en=%0b", my_data, en);
    end

    assign en = my_data[0];    // logic datatype can also be driven via assign statements
endmodule

模拟日志

ncsim> run
my_data=0xx en=x
my_data=0xb en=x
my_data=0xb en=x
ncsim: *W,RNQUTE: Simulation is complete.

2-state data types

在典型的验证tb中,在许多情况下,我们实际上并不需要所有四个值(0、1、x、z),例如,在使用指定数据包长度的标头对网络数据包进行建模时。长度通常是一个数字,但不是 X 和 Z。SystemVerilog 添加了许多新的 2-state数据类型,这些数据类型只能存储且值为 0 或 1。这将有助于加快仿真速度,占用更少的内存,并且在某些设计风格中是首选。

当 4-state 值转换为 2-state 值时,任何未知或高阻抗位都应该转换为0.

最重要的 2-state 数据类型是tb中最常用的数据类型。类型的变量可以是 0 或 1,表示单个位。应提供从 MSB 到 LSB 的范围,使其表示和存储多各位bit

bit

module tb;
    bit       var_a;
    bit [3:0] var_b;

    logic [3:0] x_val; // declare a 4 bit varible of type "logic"

    initial begin
      $display ("Initial value var_a=%0b var_b=0x%0h", var_a, var_b);

      var_a = 1;
      var_b = 4'hF;
      $display ("New values var_a=%0b var_b=0x%0h", var_a, var_b);

      var_b = 16'h481a;
      $display ("Truncated value: var_b=0x%0h", var_b);
  
      var_b = 4'b01zx;  // X and Z get converted to 0
      $display ("var_b = %b", var_b);
    end
endmodule

模拟日志

ncsim> run
Initial value var_a=0 var_b=0x0
New values var_a=1 var_b=0xf
Truncated value: var_b=0xa
var_b = 0100
ncsim: *W,RNQUTE: Simulation is complete.

标签:en,--,data,logic,var,my,bit,Data,SystemVerilog
From: https://www.cnblogs.com/sys-123456/p/18133406

相关文章

  • 在Linux中,如何编写脚本处理命令行参数?
    在Linux中,编写脚本处理命令行参数是编写shell脚本的基本功之一。命令行参数是用户在执行脚本时附加在命令行上的额外信息,这对于增加脚本的灵活性和复用性至关重要。以下是如何在bashshell脚本中处理命令行参数的几种常见方法:1.位置参数bash提供了一系列特殊变量$0至$9用于......
  • 2024.4.13 模拟赛总结
    坑点总结:1.关于数据顺序模拟赛T1题面清明节,又称祭祖节,在每年4月4日至6日之间,是祭祀、祭祖和扫墓的节日。小明的爸爸妈妈决定清明假期带着他回老家扫墓。小明的爸爸一共要开车行驶1000千米才能到家,现在沿途有N个旅馆,为了安全起见,每天晚上都不开车,住在旅馆里(晚上不可以......
  • 原型设计工具比较及实践
    一、对墨刀、Axure、Mockplus等原型设计工具的各自的适用领域及优缺点的分析Axure:适用于制作功能复杂、交互多样的原型设计,尤其在PC端原型图上有优势。墨刀:适合APP和微信小程序的原型设计,也支持网页和桌面应用的设计。Mockplus:适用于快速原型设计,强调简单易用和高效,适合初学者......
  • Zookeeper的选举机制
    为什么要进行Leader选举?Leader主要作用是保证分布式数据一致性,即每个节点的存储的数据同步。遇到以下两种情况需要进行Leader选举服务器初始化启动服务器运行期间无法和Leader保持连接,Leader节点崩溃,逻辑时钟崩溃。服务器初始化时Leader选举Zookeeper由于其自身的性质,一般......
  • Spring学习笔记
    一、Spring启示录阅读以下代码:packagecom.powernode.oa.controller;importcom.powernode.oa.service.UserService;importcom.powernode.oa.service.impl.UserServiceImpl;publicclassUserController{privateUserServiceuserService=newUserServiceImpl();......
  • Docker mysql 配置文件读取失败 [Warning] World-writable config file '/etc/mysql/c
    这个警告表明MySQL正在忽略/etc/mysql/conf.d/my.cnf这个配置文件,因为它被设置为了全世界可写。这个警告是基于安全性的考虑。当配置文件被设置为全世界可写时,任何人都可以修改它,这可能会导致安全风险,因为恶意用户可以更改MySQL的配置,从而影响数据库的行为和安全性。为了......
  • Living-Dream 系列笔记 第53期
    妙妙题大合集。T1令\(dp_{i,j}\)表示分离出以\(i\)为根的恰含\(j\)节点的树所需的最小删边数。有初始状态\(dp_{i,1}=\)其子节点个数,其余为\(\infty\)。对于答案,我们考虑到对于每个节点\(i\),除了其子树内的删边数之外,它的父节点与它的连边也应删去(注意根节点\(root......
  • screenrc配置
    #Setdefaultencodingusingutf8defutf8on##解决中文乱码,这个要按需配置defencodingutf8encodingutf8utf8#兼容shell使得.bashrc.profile/etc/profile等里面的别名等设置生效shell-$SHELL#setthestartupmessagestartup_messageofftermlinux##......
  • MySQL 8 显示错误代码2058
    在使用mysql-uroot-P3307-proot和SQLyong连接MySQL时报错1.在MySQL8.3CommandLineClient登录点击查看代码Enterpassword:****WelcometotheMySQLmonitor.Commandsendwith;or\g.YourMySQLconnectionidis14Serverversion:8.3.0MySQLCommunitySer......
  • 基于Vue 的axios简单封装
    在static/mock下建一个模拟数据文件json1.json{"a1":123,"a2":567}在文件目录下新建src/utlis/http.js//src/utlis/http.jsimportaxiosfrom"axios";exportdefault(function(){functionqa(arr){let_iqaob=new_iqa(),......