实例化和句柄

1. 什么是"实例化"?

实例化是指在内存中真正创建 了一个对象(Object) 或模块(Module)的实体。它分配了物理存储空间,并通常会调用构造函数(如 new())。

  • counter_if dutif(clk);
    • 这是典型的 Verilog/SystemVerilog 接口(Interface)实例化。
    • 它创建了一个名为 dutif 的接口实例,并且把信号 clk 连接了进去。此时,硬件仿真器中真的存在了一组名为 dutif 的信号线。

2. 什么是"句柄声明"?

句柄(Handle)本质上是一个指针 或引用 。声明句柄只是在告诉编译器:"我要用一个变量来指向某个类型的对象",但在这一刻,并没有创建实际的对象 ,内存中也没有该组件的实体 。此时句柄的值默认为 null。

比如以下属于句柄声明:

  • generator my_gen;
  • driver my_driver;
  • monitor my_monitor;
  • scoreboard my_scb;

driver是数据类型(class定义在driver.sv文件中),my_driver是这个类的句柄。

特性 实例化 (Instantiation) 句柄声明 (Handle Declaration)
本质 创建实体(造房子) 创建遥控器/指针(拿钥匙)
内存 分配实际内存空间 仅分配存放地址的空间(初始为 null)
对象状态 对象已存在,可以使用 对象不存在,直接使用会报错(Null Pointer Error)
对应代码 counter_if dutif(...) obj = new(); driver my_driver; transaction tr;
后续动作 直接连接或使用 必须先 create 或 new 才能使用
  • virtual counter_if vif; -> 句柄 (指向硬件接口的指针)指向接口实例的指针(句柄)

在 SystemVerilog 中,类(Class)内部不能直接包含硬件模块或接口的实例 。类是软件对象,存在于仿真器的动态内存区;而接口是硬件结构,存在于静态仿真区。为了让软件(Monitor)能访问硬件信号(Interface),必须使用 virtual interface 这座"桥梁"。

  • Interface 实例 (dutif): 是一台真实的电视机(硬件,有屏幕、有电路板)。
  • Virtual Interface (vif): 是电视机的遥控器 (句柄)。
    • 你手里拿着遥控器(声明了 vif),但如果没装电池或者没对准电视(没赋值),它是没用的。
    • 一旦你把遥控器和电视机配对(vif = dutif),你就可以通过遥控器去读取电视的状态(采样信号)了。
相关推荐
FPGA小徐7 小时前
数字IC/FPGA设计基础_ILA原理与使用
fpga开发
FPGA小徐8 小时前
FPGA 部署 YOLO 完整指南:从模型量化到 Zynq PS+PL 硬件加速
yolo·fpga开发
dadaobusi13 小时前
学习:chiesel,scala
学习·fpga开发·scala
爱吃汽的小橘14 小时前
异步FIFO核心揭秘:格雷码与指针同步
fpga开发
璞致电子15 小时前
基于 P201Pro | 接收端基础知识——Costas环锁定后为何仍会错?DQPSK与前导码相位校正(6)
经验分享·fpga开发·ad9361·软件无线电·sdr·qpsk·pzsdr
璞致电子1 天前
基于 AD9361 (PZSDR‑P201Pro) 软件无线电实战综述:从板卡选型、硬件平台升级到 GNU Radio QPSK 完整收发链路
经验分享·嵌入式硬件·fpga开发·软件无线电·sdr·璞致电子
炎龙铠甲会合体1 天前
从 SPEC 到上板:在 Zynq-7020 上用 RTL 手写一个 YOLO 卷积加速器(完整教程)
yolo·fpga开发·axi·芯片验证
FPGA小徐1 天前
Vivado 按键消抖与复位模块代码修复详解:KEY_TOP、key、rst_gen 完整实战
fpga开发
炎龙铠甲会合体2 天前
AXI2ICACHE— AXI4-Full 四路组相联指令 Cache 设计与 UVM 验证
fpga开发·面试·芯片验证
bingcheby2 天前
FMQL15/20/45 (复旦微青龙系列 PSOC)新手使用说明
fpga开发