- 博客(29)
- 收藏
- 关注
原创 让我来帮你搞懂这些内存概念!RAM、ROM、SRAM、DRAM、SDRAM
ROM和RAM是存储器的两大类别:ROM断电不丢失数据,用于长期存储;RAM断电丢失数据,用于临时存储。RAM又分为SRAM(静态RAM,速度快、成本高,用于CPU缓存)和DRAM(动态RAM,容量大、需刷新,用于内存条)。SDRAM是DRAM的同步版本,通过匹配CPU时钟提升效率,如DDR内存。简单来说,ROM是永久仓库,RAM是临时工作台;SRAM是快速抽屉,DRAM是大货架;SDRAM则是带传送带的升级货架。
2025-08-15 15:12:30
2350
原创 UVM验证(三)—UVM机制(1)
本文系统阐述了UVM验证平台的三大核心机制:工厂机制、Phase执行机制和Sequence交互机制。工厂机制通过"注册-创建-覆盖"实现组件动态替换,提高验证灵活性;Phase机制定义了组件内、组件间和同级组件间的执行顺序规则;Sequence机制则详细介绍了三种激励产生方法(基础方法、宏封装方法、高级宏方法)和三种子sequence发送方法,并对比了它们的适用场景。实验验证表明,这些机制协同工作,构建了UVM验证平台的可复用、可配置基础架构,支持高效开发和调试复杂验证场景。
2025-08-15 11:42:02
1367
原创 UVM验证(二)—UVM组件(搭建UVM验证环境)
本文介绍了基于UVM验证方法学的测试平台搭建过程,主要包括以下核心组件:1)事务类(dadd_item)定义测试数据包;2)驱动器(driver)实现信号时序转换;3)序列器(sequencer)调度激励生成;4)监视器(monitor)采集DUT输入输出;5)代理器(agent)封装接口组件;6)参考模型(reference model)模拟DUT理想行为;7)计分板(scoreboard)进行结果比对;8)环境(environment)整合所有验证组件。通过TLM通信机制实现组件间数据交互,构建验证环境
2025-08-13 17:57:01
1378
原创 UVM验证(一)—UVM 简述
本文介绍了SystemVerilog验证环境中的核心机制和UVM验证方法学。主要内容包括: 虚拟接口机制:作为连接验证组件与物理硬件信号的桥梁,通过句柄引用实现软件验证环境与硬件DUT的交互。以加法器DUT为例,展示了从物理接口定义到虚拟接口使用的完整流程。 UVM基础架构:通过HelloWorld示例解析UVM测试平台结构,包括环境类、测试类、相位机制和组件注册等核心概念。 UVM组件体系:详细说明UVM的类继承树和层次化结构,重点分析uvm_transaction和uvm_component两大分支。
2025-08-11 17:44:21
1687
原创 代码执行详细流程
本文详细解析了tlm_test.sv中基于UVM相位机制的验证流程,主要分为7个阶段:1)仿真启动,通过run_test()创建顶层测试组件;2)构建阶段,自顶向下实例化所有组件;3)连接阶段,建立生产者到消费者的两种TLM通信链路(直接连接和FIFO缓冲);4)层次确认阶段;5)仿真准备阶段;6)核心事务传输阶段,生产者发送数据,消费者通过不同端口接收并处理;7)仿真结束阶段。整个流程严格遵循UVM相位机制,通过两条通信链路验证了事务级建模的正确性,是UVM验证的典型实践。
2025-08-11 17:32:28
635
原创 芯片设计流程
芯片设计全流程包含需求分析、RTL设计、物理实现和制造测试四大阶段。需求阶段明确技术指标和架构;前端设计将架构转化为RTL代码并进行功能验证;后端设计生成物理版图并优化性能;最后通过制造测试完成芯片量产。各阶段环环相扣,通过层层验证确保设计质量,专业分工有效管理芯片设计的复杂度与风险。该流程实现了从概念到产品的完整转化,是芯片开发的标准框架。
2025-08-11 16:10:01
1071
原创 数字逻辑电路基础-学习进度
本文系统介绍了数字逻辑电路的基础知识及其应用。首先,阐述了数制、编码、逻辑代数和逻辑函数等基本概念。其次,详细讲解了集成逻辑门电路,包括正负逻辑门电路、二极管和PN结的形成过程及其特性。接着,探讨了组合逻辑电路的分析与设计方法,以及触发器的工作原理,特别是D触发器的特性和应用。最后,介绍了时序逻辑电路的结构形式、移位寄存器和计数器的工作原理及其在数字电路中的具体应用。通过本文,读者可以全面了解数字逻辑电路的基本原理和实际应用。
2025-07-29 14:46:43
1022
原创 UVM验证—第二课(二):配置&消息机制
在验证环境的创建过程build phase中,除了组件的实例化,配置也是必不可少的。为了验证环境的复用性,通过外部的参数配置,使得环境在创建时可以根据不同参数来选择创建的组件类型、组件实例数目、组件之间的连接以及组件的运行模式等。在更细致的环境调节(environment tuning)中有更多的变量需要配置,例如for-loop的阈值、字符串名称、随机变量的生成比重等。比起重新编译来调节变量,如果在仿真中可以通过变量设置来修改环境,那么就更灵活了,而UVM config机制正提供了这样的便捷。
2025-06-16 14:42:53
1063
原创 UVM验证—第二课(一):核心基类&阶段机制
本文总结了UVM验证方法学中的核心基类和phase机制。核心基类uvm_object提供数据操作方法(copy/clone/compare/print/pack等)和域自动化机制,支持深拷贝和自定义回调。相位机制将验证环境构建分为构造、配置、主测试和收尾四个阶段,通过自上而下/自下而上的执行顺序和objection机制精确控制组件初始化和仿真流程。同级组件按字典序执行,objection机制确保所有组件完成当前阶段后才进入下一阶段。这些机制提高了验证平台的规范性和可控性。
2025-06-13 16:53:12
892
原创 UVM验证—第一课:方法学&类库&工厂
UVM验证方法学通过类库地图和工厂机制提供了高效的验证平台构建方案。类库地图将验证环境标准化为9大核心模块,如工厂类、事务类和寄存器模型类等。工厂机制作为UVM的核心特性,支持通过覆盖(override)实现组件/对象的灵活替换,包括类型覆盖(set_type_override)和实例覆盖(set_inst_override)。创建对象时需先注册到工厂,通过create()方法创建可自动应用覆盖。uvm_coreservice_t类提供全局服务,包含工厂、报告等核心组件。
2025-06-08 15:46:48
1061
原创 SV系统验证—第七课:线程的控制和同步(二)
本文摘要: 本文将Verilog/SV中的线程通信机制分为三类进行详细讲解: 事件(event)机制: 使用@操作符进行边沿敏感阻塞 通过triggered()方法实现电平敏感等待 旗语(semaphore)机制: 通过new()初始化钥匙数量 使用get()/put()控制资源访问 保证共享资源互斥访问 信箱(mailbox)机制: 可作为FIFO实现线程间数据交换 提供阻塞(put/get)和非阻塞(try_put/get)方法 支持参数化数据类型
2025-06-08 15:33:15
1096
原创 SV系统验证—第五课:类和对象&包的使用(二)
面向对象编程(OOP)的核心三要素是封装、继承和多态。在SystemVerilog中,类(class)通过封装将数据和方法组合,并控制访问权限;继承(extends)允许子类复用父类特性,可通过super和this关键字区分父类与当前类成员;多态则体现在句柄的动态修改和成员覆盖上。package机制为类提供了命名空间隔离,通过import导入不同包中的类,需注意命名冲突问题。文章详细讲解了类的构造过程、句柄传递规则(需用ref实现传引用)以及包的使用规范,并通过猫类、测试类等实例演示了面向对象特
2025-05-30 10:41:42
852
原创 SV系统验证—第七课:线程的控制和同步(一)
线程即独立运行的程序;线程需要被触发,可以结束或者不结束;在module中的initial和always,都可以看做独立的线程,它们会在仿真0时刻开始,而选择结束或者不结束;硬件模型中由于都是always语句块,所以可以看成是多个独立运行的线程,而这些线程会一直占用仿真资源,因为他们并不会结束;软件测试平台中的验证环境都需要有initial语句块去创建,而在仿真过程中,验证环境中的对象可以创建和销毁,因此在软件测试端的资源占用是动态的;
2025-05-25 21:34:16
861
原创 SV系统验证—第六课:随机约束和分布(二)
接着,文章探讨了如何通过约束控制来打开或关闭约束,以及如何使用内嵌约束和随机函数进行更灵活的随机化操作。此外,文章还介绍了数组约束的方法,包括对数组大小和元素的约束,以及如何生成唯一元素值的数组。最后,文章讨论了随机控制技术,如随机序列和随机决策树的应用。
2025-05-25 21:15:21
1349
原创 SV系统验证—第六课:随机约束和分布(一)
本文详细介绍了SystemVerilog中的随机约束和分布、约束控制、随机函数、数组约束以及随机控制的相关概念和应用。首先,文章阐述了随机测试的重要性,指出随机测试能够发现更多潜在缺陷,并介绍了随机变量的声明和约束的定义。
2025-05-21 15:24:38
1355
原创 Tensorflow 神经网络
神经元是神经网络的基本单元,具有多输入单输出的特性,输入分为兴奋性和抑制性两种,并具备空间整合和阈值特性。神经网络的训练过程包括数据准备、网络结构选择、参数初始化、正向传播、损失计算、反向传播、参数更新、迭代训练、模型评估和部署。MP模型和梯度下降法是神经网络中的重要概念,而sklearn是Python中常用的机器学习库。激活函数和损失函数是神经网络中引入非线性和评估模型性能的关键。过拟合和欠拟合问题可以通过调整网络参数和正则化等方法缓解。优化器如SGD、Adam等用于更新网络参数。使用TensorFlow
2025-05-19 09:53:47
615
原创 SV系统验证—第五课:类和对象&包的使用(一)
本文详细介绍了SystemVerilog中类和对象的概念及其相关操作,包括对象的创建、销毁、句柄的使用、静态变量和静态方法的应用。通过示例代码,展示了如何定义类、创建对象、使用构造函数和析构函数,以及如何通过句柄传递和修改对象。此外,文章还探讨了类的封装、继承和多态性,强调了面向对象编程在SystemVerilog中的重要性。最后,介绍了包(package)的使用,如何通过包来组织和管理类,避免命名冲突,并通过import语句导入包中的类。文章通过丰富的代码示例和详细注释,帮助读者深入理解SystemVer
2025-05-14 11:36:16
1095
原创 SV系统验证—第四课:接口&采样驱动&测试始末
在硬件描述语言(如SystemVerilog)中,`module` 和 `interface` 是两个核心概念,它们用于定义数字系统的行为和结构。下面详细解释了它们的区别与联系:### Module(模块)- **定义**:模块是SystemVerilog中的基本构建块,用来封装设计的某一部分,包括输入、输出端口、内部信号以及实现逻辑。- **功能**:- 模块可以包含寄存器、线网声明、过程块(initial和always)、连续赋值语句(assign),以及其他模块实例化。
2025-05-12 15:26:24
807
原创 SV系统验证—第三课:设计例化和连接
**功能**: FIFO 缓冲区用于暂时存储从设备的数据,以确保数据传输的连续性和稳定性。- **功能**: 仲裁器用于协调多个从设备之间的访问请求,确保数据传输的正确性和一致性。- **连接**: 仲裁器与多个从设备相连,通过控制信号来决定哪个从设备可以进行数据传输。- **功能**: 格式器负责将来自不同通道的数据进行格式化处理,生成最终的输出数据。文章浏览阅读1.1k次。- **CLK(0)**: 时钟信号,用于同步系统中的所有操作。- **功能**: 每个从设备负责处理特定通道的数据。
2025-05-12 10:30:16
711
原创 验证通识1—验证环境
**节省地址空间**:- 跳过中间值可以避免浪费地址空间。未使用的地址范围可以保留给未来的功能扩展或其他用途。---### 2. **简化地址解码逻辑**- **硬件实现简化**:- 地址解码是硬件设计中的一个重要部分。通过让寄存器地址间隔固定(如 4 或 8 的倍数),可以大大简化地址解码逻辑。- 例如,如果所有寄存器地址都是 4 的倍数,硬件可以通过简单的位操作(如忽略低两位)来快速定位目标寄存器。- **减少硬件复杂性**:
2025-05-10 16:18:12
502
原创 SV系统验证—第二课:过程块和方法
本文主要讨论了Verilog中函数参数传递的机制及其对变量初始化的影响。在Verilog中,函数参数默认是按值传递,这意味着函数内部对参数的修改不会影响调用者中的原始变量。文章通过一个具体的例子,解释了为什么在未显式初始化的情况下,结构体变量t的成员addr和data会被重置为默认值'h0,而cmd则因显式赋值而保持为'h2。此外,文章还提出了通过使用引用传递(ref)来避免默认初始化问题的解决方案。最后,文章简要提及了变量生命周期的概念,强调了理解变量作用域和生命周期的重要性。
2025-04-18 09:59:32
344
原创 SV系统验证—第一课:数据类型
本文主要介绍了Verilog和SystemVerilog(SV)中的数据类型及其操作。Verilog数据类型包括线网类型和变量类型,而SV在此基础上新增了四值逻辑、二值逻辑、有符号和无符号类型等。SV还引入了内建数据类型、自定义类型以及其他类型。在数据类型2部分,详细讨论了定宽数组、动态数组、队列、关联数组、结构体、枚举类型和字符串等复杂数据类型。此外,文章还介绍了数组的基本操作、缩减、定位和排序方法,以及$display和$write系统任务的使用区别。通过这些内容,读者可以全面了解Verilog和SV中
2025-04-18 09:57:34
1188
原创 NVIC判定规则和工作原理
STM32的优先级通过来划分。分组决定了和各占多少比特位。分组通过假设选择占2位(取值范围:0-3)占2位(取值范围:0-3)
2025-03-07 09:59:23
1062
原创 Pytorch
所谓激活函数(Activation Function),就是在人工神经网络的神经元上运行的函数,负责将神经元的输入映射到输出端。激活函数对于人工神经网络模型去学习、理解非常复杂和非线性的函数来说具有十分重要的作用。它们将非线性特性引入到网络中。如图1,在神经元中,输入的 inputs 通过加权,求和后,还被作用了一个函数,这个函数就是激活函数。引入激活函数是为了增加神经网络模型的非线性。没有激活函数的每层都相当于矩阵相乘。就算你叠加了若干层之后,无非还是个矩阵相乘罢了。
2025-03-07 09:45:19
860
原创 CNN卷积神经网络
卷积神经网络(CNN)是一种深度学习算法,广泛应用于图像识别等领域。CNN的核心结构包括输入层、卷积计算层、激活层、池化层和全连接层。输入层负责数据预处理,如去均值和归一化。卷积计算层通过滤波器提取图像特征,激活层引入非线性,池化层降低数据维度,全连接层综合特征进行最终分类。CNN的优点包括自动特征提取和强大的表达能力,但需要大量数据和调参,且对硬件要求高。CNN通过层次化结构有效处理图像数据,是深度学习的代表技术之一。
2025-03-07 09:42:03
1233
原创 常用嵌入式通讯协议
本文介绍了常见的通讯协议,包括UART、RS485、I2C、SPI和CAN。UART是一种点对点异步串行通信协议,简单易用但传输速率较低。RS485采用差分信号传输,支持多点通信,适用于远距离传输。I2C是双线制同步通信协议,支持多主从设备,简化了电路设计。SPI是全双工同步通信协议,支持高速数据传输和多从设备。CAN是一种高可靠性的异步通信协议,广泛应用于汽车电子和工业控制领域。每种协议都有其独特的物理层和协议层特点,适用于不同的应用场景。
2025-02-27 17:12:49
1802
原创 机器学习中的数学
本文分为回归和分类两部分,详细介绍了机器学习中的基本概念和方法。在回归部分,讨论了如何设置问题、定义模型、使用最小二乘法和最速下降法进行参数优化,以及多项式回归和多重回归的应用。分类部分则涵盖了感知机模型、逻辑回归算法、sigmoid函数和决策边界等关键概念,以及如何处理线性不可分问题。文章通过数学表达式和算法步骤,深入浅出地解释了如何通过训练数据优化模型参数,以实现准确的预测和分类。
2025-02-27 10:37:42
707
原创 Machine Learning
文章摘要:本文介绍了机器学习的基础概念和方法,分为三周内容。第一周涵盖监督学习和无监督学习,包括回归和分类两种类型,以及损失函数(如均方误差函数)。第二周重点讨论回归分析,涉及多维特征、向量化技术及多元线性回归的梯度下降法。第三周转向分类问题,介绍逻辑回归及其在分类中的应用,特别是决策边界的引出。整体内容旨在为读者提供机器学习的基本框架和关键算法。
2025-02-27 10:35:26
303
uvm-complete-verification-platform.zip
2025-08-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人