当前位置: 首页 > backend >正文

【IC验证】systemverilog_包

systemverilog_包

  • 一.定义
  • 二.语法
    • (1)定义语法
    • (2)域索引
      • (a)说明
      • (b)方法一
      • (c)方法二
      • (d)方法三
  • 三.注意
    • 1.注意点一
    • 2.注意点二
    • 3.注意点三
    • 4.`注意点四`

一.定义

包就是将软件类型的成员(自定义类型,参数,成员变量,方法,类等(没有模块))进行打包,方便重复使用和共享。

二.语法

(1)定义语法

package 包名字;//自定义类型typedef enum {RED,GREEN,BLUE} color_t//定义参数或常量const  int MAX_VALUE = 100;//方法function int double_value(data_in);double_value = data_in *2;endfunctiontask print_message(string msg);$display("%s",msg);endtask//类class my_class;endclass
endpackage

(2)域索引

(a)说明

在模块中使用package中的内容前,必须要先把使用的东西导入到模块中。
原因:在编译testbench时,其会查找所有library中的内容,但是不会查找package,所以需要提前告诉编译器去package中查找。

(b)方法一

说明:使用将包中的所有成员都导入;
语法:

import 包名::*;

例子:
在这里插入图片描述

结果:
在这里插入图片描述

(c)方法二

说明:使用将包中使用的成员导入;
语法:

import 包名::使用的成员;

例子:
在这里插入图片描述
结果:
在这里插入图片描述

(d)方法三

说明:使用将包中使用的成员导入;
语法:

包名::使用的成员;

例子:
在这里插入图片描述
结果:
在这里插入图片描述

三.注意

1.注意点一

说明:
包中的成员都是静态成员;
例子:
见二.2.d

2.注意点二

说明:
当前区域和包中的成员同名时,使用的成员会优先在当前的区域查找,只有当前区域没有时才会去包中查找;
代码:

package pak1;int data1 = 7;class class1;endclass
endpackagepackage pak2;int data2 = 8;class class2;endclass
endpackagemodule tb1;import pak1::*;import pak2::*;int data1 = 9;int data2 = 10;initial begin$display("data1 == %0d",data1);$display("data2 == %0d",data2);end
endmodule 

结果:
在这里插入图片描述

3.注意点三

说明:当两个包中存在同名成员时,在使用包中的成员时,必须指定来自哪个包;

4.注意点四

注意:两个包中的成员最好不要重命,包和其他区域的成员最后不要重命;

http://www.xdnf.cn/news/7991.html

相关文章:

  • 自由开发者计划 001:创建一个用于查看 Jupyter Notebook 的谷歌浏览器插件 Jupyter Peek
  • 常见的LLM
  • 从零基础到最佳实践:Vue.js 系列(2/10):《模板语法与数据绑定》
  • 对抗学习(AL),生成对抗网络(GAN),强化学习,RLHF
  • 【差异分析】t-test
  • React中 lazy与 Suspense懒加载的组件
  • 26、AI 预测性维护 (燃气轮机轴承) - /安全与维护组件/ai-predictive-maintenance-turbine
  • 鸿蒙电脑系统和统信UOS都是自主可控的系统吗
  • 从零开始:Python语言基础之条件语句(if-elif-else)
  • Java虚拟机栈
  • 社会工程与信息收集
  • 左手腾讯CodeBuddy 、华为通义灵码,右手微软Copilot,旁边还有个Cursor,程序员幸福指数越来越高了
  • Human Dil-HDL,使用方法,红色荧光标记人源高密度脂蛋白
  • 循环队列分析及应用
  • 在 Qt 中实现动态切换主题(明亮和暗黑)
  • Gartner研究报告《Generative AI 赋能Digital Commerce的三种路径》学习心得
  • 笑林广记读书笔记三
  • 下一代电子电气架构(EEA)的关键技术
  • 具有思考模式模型部署:Qwen3、DeepSeek-R1-Distill、Phi-4、QWQ系列
  • 模型量化与保存
  • Python实例题:Python实现简单画板
  • 网络安全之身份验证绕过漏洞
  • 【AI+开发】什么是LLM、MCP和Agent?
  • 容器网络中的 veth pair 技术详解
  • 求无符号字符型数据乘积的高一半
  • 隧道自动化监测解决方案
  • 【攻防实战】MacOS系统上线Cobalt Strike
  • 高并发内存池|六、page cache的设计
  • 13、自动配置【源码分析】-自动包规则原理
  • Springboot2