首页 > 其他分享 >SystemVerilog -- 2.21 Data Types ~ SystemVerilog typedef and alias

SystemVerilog -- 2.21 Data Types ~ SystemVerilog typedef and alias

时间:2024-05-03 18:45:14浏览次数:20  
标签:typedef -- light alias GREEN data SystemVerilog

SystemVerilog typedef and alias

Typedef

在复杂的测试平台中,某些变量声明可能具有更长的数据类型规范,后者需要在测试平台的多个位置使用。

在这种情况下,我们可以使用a为现有数据类型提供用户定义的名称。然后,可以在整个代码中使用新的数据类型,因此如果需要,无需在多个位置进行编辑。typedef

// Mormal declaration may turn out to be quite long
unsigned shortint          my_data;
enum {RED, YELLOW, GREEN}  e_light;
bit [7:0]                  my_byte;

// Declare an alias for this long definition
typedef unsigned shortint         u_shorti;
typedef enum {RED, YELLOW, GREEN} e_light;
typedef bit [7:0]                 ubyte;

// Use these new data-types to create variables
u_shorti my_data;
e_light  light1;
ubyte    my_byte;     

Syntax

typedef data_type type_name [range];

Example

module tb;
  typedef shortint unsigned         u_shorti;
  typedef enum {RED, YELLOW, GREEN} e_light;
  typedef bit [7:0]                 ubyte;
    
  initial begin
    u_shorti   data  = 32'hface_cafe;
    e_light    light = GREEN;
    ubyte      cnt   = 8'hFF;

    $display ("light=%s data=0x%0h cnt=%0d", light.name(), data, cnt);
  end
endmodule

模拟日志

ncsim> run
light=GREEN data=0xcafe cnt=255
ncsim: *W,RNQUIE: Simulation is complete

Alias

在 SystemVerilog 中,别名是对变量、信号或实例的命名引用。他提供了一种使用不同名称引用变量的方法。别名在许多情况下都很有用,包括降低代码复杂性、增强可读性和提高仿真性能。它还用于对双向短路进行建模,并可用于模块、接口和生成模块。

下面是如何在 SystemVerilog 中创建别名的示例:

logic [7:0] data;
alias mydata = data;  // alias "mydata" for single "data"

initial begin
  mydata = 8'hFF;     // assign the value to "data" using the alias "mydata" 
end

在此示例中,使用别名mydaya为信号data分配值8‘hFF。使用别名的优点是它允许您使用不同的名称引用相同的信号,这可以使代码更具可读性和更易于理解。

标签:typedef,--,light,alias,GREEN,data,SystemVerilog
From: https://www.cnblogs.com/sys-123456/p/18171484

相关文章

  • P2573 [SCOI2012] 滑雪
    原题链接题解这题乍一看好像是一道最小生成树的模板题,但如果直接找模板打会发现WA。仔细一看这题是有向图的最小生成树,可以直接套朱刘算法,but,我还不会······直接套模板的反例3321125132231所以我们再分析题目,发现只要把山的高度设为第一优先级,边的权值......
  • [MDP.AspNetCore] 實作OAuth協定SSO Server/Client專案範例
    團隊負責的系統變多的時候,使用SSOServer提供統一身分驗證,讓團隊只需要維護一份用戶資料及一個身分驗證服務。除了減少團隊維護成本之外,也讓使用者不用記憶多個站台的帳號密碼,提供更好的使用者體驗。本篇文章,介紹使用MDP.AspNetCore的NuGet套件,所建立的實作OAuth協定SSOServer/C......
  • 计算机操作系统
    计算机操作系统的简述计算机操作系统是管理计算机硬件和软件资源的基础软件。它负责协调计算机的工作流程,确保各个程序和任务能够顺利运行。主要功能:进程管理:操作系统负责创建、调度和终止计算机上的进程,确保CPU得到高效利用。内存管理:管理计算机内存,确保程序有足够的空间来运......
  • 深入 Django 模型层:数据库设计与 ORM 实践指南
    title:深入Django模型层:数据库设计与ORM实践指南date:2024/5/318:25:33updated:2024/5/318:25:33categories:后端开发tags:DjangoORM模型设计数据库关系性能优化数据安全查询操作模型继承第一章:引言Django是一个基于Python的开源Web应用程序框架,它......
  • [分块] [Luogu AT_joisc2014_c] 历史研究
    题目描述IOI国历史研究的第一人——JOI教授,最近获得了一份被认为是古代IOI国的住民写下的日记。JOI教授为了通过这份日记来研究古代IOI国的生活,开始着手调查日记中记载的事件。日记中记录了连续\(N\)天发生的事件,大约每天发生一件。事件有种类之分。第\(i\)天发生的......
  • 计算机导论微机操作
    微机操作的章节是任何计算机科学入门课程的基石。通过学习微机的工作原理、主要组成部分以及如何进行基本操作,我们不仅能够对计算机的硬件和软件有一个直观的了解,还能够更加深入地理解计算机如何与用户的命令进行交互。这部分内容详细介绍了中央处理器(CPU)、随机访问内存(RAM)、硬盘......
  • dasctf2024 week1复现
    复现题目.web1234开局源码泄露www.zipindex.php<?phperror_reporting(0);include"class.php";$Config=unserialize(file_get_contents("/tmp/Config"));foreach($_POSTas$key=>$value){if(!is_array($value)){$param[$key]=ad......
  • 计算机导论操作系统
    我深刻认识到了操作系统在计算机系统中的核心地位。操作系统是计算机的基石,它不仅管理着硬件资源,还提供了用户与计算机交互的界面。通过本章的学习,我了解到操作系统的基本功能包括进程管理、文件管理、内存管理和设备管理等。特别是进程管理,操作系统需要有效地调度多个进程,确保系......
  • pd.merge函数合并DataFrame 保留原index
    C=pd.merge(A,B),merge之后C的行数并不会变。但是A的index丢失了,因为merge之后index是重排的。解决办法:方法1:#可以先把A的index保存一下,A、B中含有"col"列A_index=A.indexC=pd.merge(A,B,on="col",how="left")C.index=A_index方法2:#A、B中含有"col"列,set_index设置C......
  • 题解:AT_abc298_h [ABC298Ex] Sum of Min of Length
    分析模拟赛签到题。考虑分讨。分两种情况:\(L=R\)。\(L\neR\)。对于第\(1\)种情况,用换根DP求一个\(i\)为根时所有点的深度和就行。对于第\(2\)种情况,钦定$dep_R\gedep_L$。很显然,\(R\)为根的子树中所有点都是离\(R\)更近。假设在\(L\)到\(R\)的路径......