- 博客(27)
- 收藏
- 关注
原创 实例化和句柄
实例化是指在内存中真正创建了一个对象(Object)或模块(Module)的实体。它分配了物理存储空间,并通常会调用构造函数(如new()这是典型的 Verilog/SystemVerilog接口(Interface)实例化。它创建了一个名为dutif的接口实例,并且把信号clk连接了进去。此时,硬件仿真器中真的存在了一组名为dutif的信号线。句柄(Handle)本质上是一个指针或引用。声明句柄只是在告诉编译器:“我要用一个变量来指向某个类型的对象”,但在这一刻,并没有创建实际的对象,内存中也。
2026-07-30 21:49:50
231
原创 类的继承与多态(3)
被protected修饰的成员,只能被当前类及其子类访问被local修饰的成员,只能被定义它的当前类自身访问,子类和外部均无权访问把基类里的核心句柄或状态变量设为 或 防止其他人在外部随意篡改内部状态,导致验证环境跑着跑着出现难以追踪的“野指针”或非法状态。这就是面向对象的封装性。new()函数 -构造函数声明句柄(black_cat bk;)相当于拿到了一把钥匙的名字,但是房子(内存)这时候还没有盖起来,实例化(bk = new();:调用new()就是盖房(分配内存),仿真器会在内存开辟一
2026-07-29 20:40:08
237
原创 (oop)类的继承与多态(2)
在实际的 IC 验证中,我们经常需要对基础数据包进行扩展。例如,原本只有普通数据包,现在要验证一个带有“高优先级”标志的特种数据包。
2026-07-29 10:39:27
196
原创 面向对象编程(oop)-class(1)
在 UVM 和现代验证体系中,所有的激励(Transaction)、环境组件(Driver, Monitor, Scoreboard)都是用 class。无论是浅拷贝(Shallow Copy)还是深拷贝(Deep Copy),它们都开辟了全新的内存空间(盖了新房子),不再像简单的句柄赋值。显式地写一个copy()函数,在内部先new()一个新对象,然后递归地把所有成员变量、嵌套的对象全部独立复制一遍。这行代码就是 复制了一把钥匙(句柄handle),没有建造一座新的房子(对象object)
2026-07-28 20:25:26
211
原创 interface 、modport 、clocking block(2)
1.消除冗余连接:端口的方式需要再TB顶层声明100根线,再分别例化连接到DUT和test,极易出现错位连接。interface吧总线物理限号实体化,顶层只需要连一个接口实例即可。2.封装与可重用性:接口不仅能包含信号,还能包含函数(task function)断言(SVA)以及时序约束(clocking block)。协议本身校验逻辑可以跟着接口走,实现了极高的复用性。
2026-07-27 20:39:20
216
原创 interface,竞争冒险,class (1)
让我们从以下几个问题中 引入到绿皮书第四章interface - clocking block - class的学习。
2026-07-23 22:21:22
210
原创 for还是foreach?绿皮书第二章
在大型项目里,我们不希望到处写bit [31:0]或 unsigned int。一旦某天总线位宽从 32 位升级到 64 位,我们需要改动成百上千处代码。通过typedef,我们把类型抽象化,不仅提高了可读性,更方便了后续的维护。例子:1//声明时使用我们自定义的类型23定义了一个32位int型的 fixed_array5(新的类型),它是一个有五个元素的定宽数组。声明f5这么一个定宽数组, 进行初始化。
2026-07-17 11:19:34
228
原创 队列和合并数组
在验证中,Monitor从DUT的输出接口上源源不断地抓取数据,我们需要把这些数据存起来,等后面和参考模型(Reference Model)的结果做对比。这个存数据的地方必须是“先进先出(FIFO)”的,且容量要能动态伸缩。
2026-07-16 20:36:54
169
原创 SV子程序,接口,驱动和采样
automatic生命周期,一般要在function后面加automaticref传递意味着子程序直接操作外部变量的内存地址(类似于 C 语言的指针)。ref int f[5]和int fa[5] 表示一个包含五个int元素的数组调用init(fa,5),仿真器会在内存里开辟一块全新的临时空间f.f变成了fa,它直接指向了fa在堆栈中的真实内存地址。此时,仿真器根本没有为f分配独立的数组存储空间。在函数内部,只要你对f[i]进行操作,底层直接修改的就是外部fa[i]那块内存。
2026-07-16 16:53:23
244
原创 struct union enum
SV 内置的枚举方法。 打印出来的是带有可读性的文本1 位的有效信号 ;你刚刚定义的枚举类型 ;8 位的字段 。always @(posedge clk) begin a = a + 1; $display("Display a = %0d", a); $strobe ("Strobe a = %0d", a);end 和 打印出来的 的值会是一样的吗?如果不一样,哪个打印出的是旧值,哪个打印出的是变化后的新值?为什么?这个内容涉及到了 Verilog/SV 的仿
2026-07-14 09:42:49
262
原创 二段式-三段式tb仿真代码分享
有了@(posedge tb_clk),就能保证每一个输入信号,都踩着时钟的节拍,一个周期一个周期的,和时钟同步.突然发现他和always@(边沿触发)有些相似,它们都在等待,等待某个事情发生.区别:always@(posedge clk):永动机(1)只要仿真不结束,它就永远挂在那里。每次只有有时钟上升沿,他就一次又一次的执行一次,每次执行完等待下一个沿。(2)它代表真实的物理触发器硬件initial。
2026-06-29 18:36:23
233
原创 两段式-三段式状态机
状态数少(如小于10个)推荐用独热码(One-hot),状态数极多推荐用格雷码(Gray)。1. 独热码(One-Hot)有且仅有一个bit为1,其余全为0。2.格雷码(Gray)相邻的两个数值之间,有且仅有一个 bit 发生翻转。状态寄存解决了“我在哪”的问题;状态转移解决了“我去哪”的问题;状态输出解决了“到了之后干点啥”的问题。
2026-06-16 21:55:00
360
原创 IC验证(SV&UVM)学习第一天
你不再需要手动写每一个激励,而是定义一个“数据包(Class)”,告诉工具规则(比如:“数据包的长度在 64 到 1518 字节之间”),让 VCS 自动帮你生成成千上万个不同的测试数据。如果每个工程师都用 SV 按照自己的想法写测试平台,A 写的驱动器(Driver)没办法直接给 B 用的监控器(Monitor)传数据,跳槽或者换项目时,以前的代码全部得重写。它决定了本次仿真实例化哪一个组件环境(Env),调用哪一个测试场景(Sequence),配置什么样的参数。是个“指针/句柄”(软件指针)。
2026-06-06 21:29:14
223
原创 Ubuntu系统开启无法进入桌面,显示failed to start detect the availabe gpus, start light dispaly manager.
可能的原因:前几天博主的电脑nvidia-driver英伟达驱动自动消失了,我重新安装了nvidia驱动,系统重新恢复了我的显卡驱动。推测错误原因为 Ubuntu系统自动升级了内核,与我安装的nvidia驱动不兼容。进入这个恢复模式,两个恢复模式(recovery mode)博主的第一个进入是黑屏状态,所以博主进入的是第二个recovery mode。重新启动可以正常进入系统了。这两行报错消失,但是仍然是黑屏状态,黑屏显示光标闪烁(不显示输入密码界面)。进入nvidia官网,选择自己的配置,手动下载。
2025-09-29 11:18:19
872
原创 ubuntu系统升级显卡驱动后不能正确挂载机械硬盘的解决方法且分享离线下载pytorch、cuda的方法
然后修复从挂载报错信息中查看要修复的硬盘分区,比如修复。可以用ntfs工具来修复。
2025-09-04 21:02:54
175
原创 怎么样在文本语言模型里加入语音模态?
李沐大神模型和代码:参考文献:丁培耕,刘智威,王金桥. 多模态人工智能大模型综述及展望[J]. 无线电工程,2024.
2025-07-26 10:47:31
1598
原创 2 嵌入时频变换的可解释神经网络用于轴承故障诊断
实现了一个高效的一维信号处理骨干网络:四级卷积特征提取自适应池化统一输出三层全连接分类参数化卷积核:灵活适配不同信号特性该骨干网络作为TFN模型的核心组件,负责从TFconv层生成的时频特征中提取高级抽象表示,最终实现高精度故障分类。实现了三种物理启发的时频卷积层,将时频变换嵌入卷积层,复值卷积核生成时频能量分布,参数化核函数设计。STTF:固定带宽时频分析Chirplet:自适应带宽分析Morlet:多尺度小波分析。
2025-07-18 09:26:48
1490
原创 嵌入时频变换的可解释神经网络用于轴承故障诊断
复现的论文:TFN: AN INTERPRETABLE NEURAL NETWORK WITH TIME-FREQUENCY TRANSFORM EMBEDDED FOR INTELLIGENT FAULT DIAGNOSIS(发表在机械工程领域顶级期刊之一)github地址:https: // github. com/ ChenQian0618/ TFN。
2025-07-15 09:09:03
2035
原创 ubuntu系统的一些常用指令
例如: sudo mkdir /opt/zjhhandsome (这样就在opt路径下创建了一个zjh最帅的文件夹)例如:export PATH=/home/muyu/anaconda3/bin:$PATH。sudo apt-get --purge remove ... 卸载某个软件。sudo apt list --installed(列出已安装的软件包)删除虚拟环境: conda remove -n 名称 --all。export PATH=/anaconda3(在系统的路径)
2025-07-08 08:34:31
365
原创 Ubuntu系统下Anaconda包管理器移动位置出现的问题及下载anaconda教程
然后博主贼傻,把anaconda3文件里的bin文件夹里的每一个源代码中的路径位置都修改成现在所在的位置,哼哧哼哧的干了好几个小时,然后诶有大问题,运行报错,找不到文件或者目录。当博主运行代码时,发现还是找不到文件,原来博主的anaconda名字叫Or。而且重命名后还是无法解决这个问题,因为里面的源代码 全是以 ./Or/bin 形式的地址。所以在我想要放入的硬盘中出现了一个这样的文件夹,里面是我的anaconda所需文件。例如博主输入的:/media/albert/8../anaconda3。
2025-07-02 08:49:14
492
原创 针对台式机VGA可以外接显示屏,HDMI显示屏无法显示。
AUTO(默认)是由主板自动判断—原则上主板优先启用PEG/PCI独立显卡,其次是集成显卡。在同时装有独立显卡和集成显卡的情况下,若想启用Intel CPU中集成显卡,需要进入BIOS将上述菜单项的值修改为IGFX,保存重启电脑前,将显示器连接到主板或集成的显示接口上。问题:Windows系统下,无论是核显的VGA口还是独显的HDMI都可以外接显示屏。在advanced里或configuration中,有选项Graphic Device, 切换独显模式: switchable graphics。
2025-06-26 15:56:24
3872
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅