systemverilog packages提供了对于许多不同数据类型的封装,包括变量、task、function、assertion等等,以至于可以在多个module中共享。
简单来说,package就是一个命名空间。
package mypack; typedef struct { int i; int j; } cstruct; function cstruct add (cstruct a , b); add.i = a.i + b.i; add.j = a.j + b.j; endfunction endpackage module top ( //referencing package item 'cstruct' of mypack output mypack::cstruct cout, input mypack::cstruct a , b ); //referencing 'add' function of mypack assign cout = mypack::add(a , b); endmodule
在上面的例子中,我们声明了一个package “mypack” ,其中声明了一个struct数据类型“cstruct”和一个function “add.” 在module “top”中,我们使用package中的“cstruct”数据类型作为module的输入输出。
我们在引用package中成员使用了:
mypack::**
另外一种方式就是import了,import之后就无需在引用package中的成员时使用“mypack::”
【试验机老二】卧式LED灯珠推拉力机有哪些生产商?
云存储与普通存储方式的优劣对比分析
励磁和永磁的区别详解
智能门锁如何上网,联网门锁的优点是什么
数字时代:关于数据可视化的定义/优势及示例
SystemVerilog中的package
利用多端口存储器双口RAM和FIFO实现多机系统的设计
2019年物联网将在人工智能中不断发展 逐渐融为一体
小米8SE评测 1799元的售价才是让人下单的最后一锤
哈勃智慧云发布 打造时尚领域工业互联网平台
Imagination和Intercede展示Trust Continuum确保IoT安全性的强大功能
电动推杆和电缸的区别是什么?
适合自制的小巧天线
充电板生产厂家
移动云操作系统改造技术实践分享
Stealth发布防水迷你PC,售价3195美元
电脑主板不取消电池的原因
模拟技术对数字化设备创造的重要必不可少因素
电容电感对EMC的影响
虚拟仿真技术在电子行业中的应用