自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 verilog中宏和参数的区别

综合工具可以支持,但是不能对FSM进行优化。范围是全局的,可以跨文件和模块。综合工具可以优化FSM状态。

2025-03-08 09:58:30 85

原创 芯片验证1v1培训,助你成为验证精英

**实战项目经验积累:** 我将带你参与真实项目,从需求分析到验证计划,从测试用例编写到覆盖率分析,让你在实践中快速成长。* **快速掌握验证方法学:** 从SV到UVM验证,我将手把手教你掌握主流验证方法学,助你构建扎实的理论基础。* **外企工作背景:** 常年在知名芯片外企工作,熟悉国际化的开发流程和规范,能够帮助你快速适应外企工作环境。* **丰富的实战经验:** 7年芯片验证经验,参与过多款芯片的验证工作,对验证流程和方法学有着深刻的理解。**期待与你一起,在芯片验证的道路上共同进步!

2025-03-07 17:26:36 140

原创 深入理解AMBA总线3 APB interconnect的补充

之前的两篇文章给大家介绍了APB协议相关的知识点,并结合实际的代码给大家讲解了一下APB slave的设计。并说明了一下APB slave mux这个模块。上一篇文章提到:通常而言,APB的interconnect模块只能连接一个master,多个Slave。因此继续管它叫interconnect感觉差了点意思。所以一般就叫它slave mux了。巧的是前几天有个同事碰到了需要多个APB master的情况。本人便帮忙调研APB是否真的只能是一主多从的结构。

2024-07-26 14:09:51 444

原创 深入理解AMBA总线2

右边这个slave reg实际上就对应我们设计的IP的寄存器配置部分,这个部分的接口是native interface,也就是没有考虑通用性的原生接口,想要通过APB总线对其进行配置,就需要通过slave_interface这个模块进行协议转换,进而完成APB协议的传输。这套代码的缺点或者优点是他是组合逻辑做的,逻辑非常的简单。上面的APB相关信号都介绍过,这里不再重复介绍,其中的ECOREVNUM的意思是ECO revision number,如果没有用到ARM的ECO的话,将该信号固定为全0即可。

2024-07-24 15:34:18 724

原创 深入理解AMBA总线1 APB总线入门

对于读操作而言,非常好理解,你要读的数据我还没有准备好(可能正在计算),当然不能拉高PREADY,而写的话,这种情况往往出现在写特定的地址,这个时候外设本身要进行判断是否可以写,因此两个周期完成不了,就不能拉高PREADY。因此PREADY这个信号可以说是非常的好,它让主从之间的通信更加的可靠,也增加了从机的控制能力,不至于出现主机写的数据从机压根没有收到或者从机没有准备好读数据,进而主机读到错误数据的情况。对于AMBA协议,APB的信号都是以P开头,AHB的信号都是以H开头,而AXI的信号都是以A开头。

2024-07-24 13:55:19 1350

原创 深入理解AMBA总线0

下图为基于AMBA总线的一个互联架构,可以看到基于AMBA总线,可以快速的将各个模块连接起来。儿AMBA总线为片上总线,即一个芯片上不同模块之间的一种规范化交换数据的方式。基于片上总线,可以非常迅速的搭建SOC。·AMBA3推出了APB3,AXI3,AHB-lite协议,需要注意的是AXI3代表第三代AMBA中的AXI协议,是AXI协议的首次提出。·APB1.0一般指的是AMBA3中的APB的版本,也就是APB3,而APB2.0一般指的是APB4。·总线位宽:指的是总线有多少比特,即32位,64位总线。

2024-07-09 14:46:34 338

原创 系统任务$readmemb和$readmemh

当数据文件被读取时,每个被读取的数字都没存放到地址连续的存储器单元中去,存储器单元的存放地址范围由系统任务声明语句中的起始地中和结束地址来说明。当系统任务遇到一个地址说明时,系统任务将该地址后的数据存放到存储器相应的地质单元中去。在这两个系统任务中,被读取的数据文件的内容只能包含:空白位值(空格,换行,制表格,注释行),二进制或十六进制的数字。数字中不能包含位宽说明和格式说明,对于$readmemb系统任务,每个数字必须是二进制数字,对于$readmemh系统任务,每个数字必须是十六进制数字。

2024-06-25 16:41:13 384

原创 生成块(generate)

生成语句可以动态的生成Verilog代码,这一声明语句方便了参数化模块的生成。当对矢量中的多个为进行重复操作时,或者当进行多个模块实例引用的重复操作时,或者根据参数的定义来确定城西中是否应该包括某段verilog代码的时候,使用生成语句能够大大简化程序编写的过程。生成的声明和生成的实例能够在设计中被有条件的条用(实例引用)。在设计中可以多次调用(实例引用)生成的实例和生成的变量声明。此外,究竟是按照次序或者参数名赋值的参数重新定义,还是只用defparam声明的参数重新定义,都可以在生成范围中定义。

2024-06-25 16:09:44 366

原创 sv中的虚方法与多态

简而言之,当类中的方法声明为虚方法的时候,调用时候取决于句柄指向的对象,如果对象是父类对象,则调用的是父类中的方法,如果对象是子类对象,则调用的是子类中的方法。如果不声明为虚方法,调用的时候取决于句柄是父句柄还是子句柄来决定调用的方法是父类中的方法还是子类中的方法。类的继承有继承变量和方法两个方面,类的多态使得实现类时不需要担心句柄指向的是父类还是子类,只要通过虚方法就可以实现动态绑定,或者sv中称为动态方法查找。

2024-05-22 14:49:23 422 1

原创 SV仿真的调度机制

充分理解sv的不同结构体在仿真中的执行的先后顺序,有利于理解testbench中对DUT的驱动和采样的顺序,进而避免不合理的驱动和采样方式。· 设计调度区域执行完后,会通过observed区域,最后至reactive区域,而program会在reactive区域执行,所以program会采用之前已经被阻塞/非阻塞赋值后稳定值进行计算。inactive区域:所有被进行零延时操作的线程在inactive区域被激活,在被执行之前迁往active区域,因此,零延时的操作会延缓线程的执行时间。

2024-05-22 10:17:48 548

原创 UVM学习(2)uvm_sequence

uvm sequence机制是通过控制和产生一系列的事物,并通过某种方法将事物发送给driver的机制。(1)Sequence:当sequence的start的函数启动,sequence会执行body方法,产生事物,并将事物发送给sequencer放入FIFO中储存。Sequence会等待一个driver的完成响应,得到之后会退出该次事物的产生(2)Sequencer: 当sequencer启动时,首先会检查自身的default_sequence是否配置,如果配置了就会创建实体,设置该sequenc

2021-03-23 22:35:09 318

原创 UVM学习(1)uvm_test

UVM学习(1)uvm_test这个例子主要是在平台中使用run_test启动uvm_testuvm_test.sv如下:package test_package;import uvm_pkg::*;`include "uvm_macros.svh" class test_base extends uvm_test; `uvm_component_utils(test_base) function new(string name="test_base",uvm_component

2021-03-20 17:44:11 2102

原创 UVM学习(0)hello world

UVM学习(0)学习UVM首先需要在电脑上安装仿真软件,我这里安装的是questasim,然后新建一个project hello_world在这个project中新建两个文件hello.sv和sim.dohello.sv如下:`timescale 1ns/1ps`include "uvm_pkg.sv"import uvm_pkg::*;module hello; initial begin int a; `uvm_info("info","hello world!...

2021-03-20 16:55:55 299

原创 在vmware虚拟机中安装vmware tools中遇到挂载后在mnt/cdrom下面看不到vmware tools压缩包的问题

在挂载后cd到mnt下面的cdrom后ls还会看见提示:ls: reading directory .: Input/output error这个错误主要是由于在启动虚拟机之前没有将windows安装虚拟机的那个目录下面的linux.iso文件添加至cd/dvd设备,具体做法是在启动虚拟机前在 编辑虚拟机设置 中,选择 添加->cd/dvd驱动器->使用iso镜像->D:...

2018-10-04 11:19:27 3445

原创 verilog and systemverilog gotchas阅读笔记(1)

(1)在systemverilog中区分大小写(2)该书表明在synopsys的仿真器中,如果位于等式左边的标识符没有声明,在编译过程中不会报错而是会形成一个隐性节点,本人使用cadence中的irun命令试了一下,发现这种错误在cadence的编译过程中是会报错的(3)对于节点和变量的位数要声明清楚,否则可能只连接最低1bit(4)对于多个文件一起编译,在synopsys编译器中使用

2018-02-05 22:06:37 862

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除