自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 差分信号传输

由于电压是相对而言的,大部分情况下,会将GND作为电压的一个基点,平时所说的电压值都是相对GND的电压。由于这种信号只和GND作比较,因此该种信号在电路板上表现为只有一条线,也称为单端信号。如下图所示,单端信号只用一根线来传输数据,当信号产生毛刺就不能正确的传输。

2022-11-10 14:55:44 840 1

原创 fifo最小深度的计算

例题:A/D采样率50MHz,dsp读A/D读的速率40MHz,要不丢失地将10万个采样数据送入DSP,在A/D在和DSP之间至少加多大容量(深度)的FIFO才行?其中在写入时每100个时钟周期会写40个,在读出侧每10个cycle会读8个,计算最小深度?考虑最坏的情况:写速率最大,读速率最小的时候,就是需要存储数据最多的时候,也就是FIFO深度的下限值。设计一个同步fifo,读写时钟相同,其中在写入时每100个时钟周期会写10个,具体哪个时刻写入不确定,在读出侧每10个cycle会读1个,计算最小深度?

2022-09-15 16:53:01 1734

原创 跨时钟传输——多比特

单比特慢到快的跨时钟传输(电平同步器、边沿检测同步电路)、单比特快到慢传输引起的数据丢失问题(脉冲同步/脉冲检测)。:数据准确性和关联性问题。

2022-09-15 13:04:16 4962 1

原创 跨时钟传输——单比特

跨时钟问题又可以细化为脉冲同步问题,脉冲检测问题。需要用到跨时钟的场景:1.单比特:单比特慢到快的跨时钟传输(电平同步器、边沿检测同步电路)、单比特快到慢传输引起的数据丢失问题(脉冲同步/脉冲检测)。2.多比特:数据收敛性问题。

2022-09-07 21:52:21 4683 1

原创 门控时钟:Clock fating

门控时钟是低功耗设计的一种方法,在数据无效时将寄存器的时钟关闭,以此来降低动态功耗。主要应用于低功耗领域。具体实现为:在寄存器输入数据无效时,将寄存器输入时钟置0。

2022-09-05 21:40:14 1118 1

原创 三段式状态机

状态机(finite state machine):根据控制信号按照预先设定的状态进行状态转移。状态机(FSM,有限状态机)分为摩尔状态机与米利状态机,其中摩尔状态机的输出(次态)仅与现态有关,米利状态机的输出(次态)与输入和现态有关。

2022-09-05 16:21:18 1632

原创 无毛刺时钟切换

无毛刺时钟切换电路,又叫glitch free电路,时钟无缝切换电路。在芯片运行时需要通过门控切换时钟源,其产生的毛刺现象可能会导致驱动电路产生亚稳态,且对于不相关时钟的切换也有可能会产生门控电路的亚稳态问题。先来看一个简单的门控时钟:是由一个两个与门和一个或门组成的MUX。当select从0变到1时,时钟从clk0变到clk1,, 会导致产生了两个占空比既不为CLK0又不为CLK1的时钟,。

2022-09-05 16:19:52 4839 2

原创 【寄存器模型】三、寄存器模型对DUT的模拟与预测

一、期望值、镜像值、实际值寄存器模型中有两个值,分别为期望值和镜像值。DUT中的寄存器值称为实际值。实际值①:使用[write&read任务通过前门访问or后门访问的方式]向DUT中的寄存器实际值写入&读取一个新值,寄存器模型中的期望值与镜像值会自动更新为新值。②使用[peek&poke操作]向DUT中的寄存器实际值写入&读取一个新值,寄存器模型中的期望值与镜像值会自动更新为新值。③:使用[mirror操作通过前门或后门方式]......

2022-08-31 18:58:25 2237 1

原创 【寄存器模型】二、前门访问与后门访问

1.后门访问可以更好的完成前门访问能够完成的事情:后门访问不消耗仿真时间,且消耗的运行时间也远小于前门访问的运行时间。2.后门访问可以完成前门访问不能完成的事:对于某些特定的场景,如网络通信系统中的一些只读计数器,当要验证计数器进位归零的场景时,前门访问无法完成写寄存器操作,只能通过消耗仿真时间来使计数器到达特定的计数值。而后门访问可以直接对只读寄存器赋一个初值......

2022-08-31 10:43:11 6766

原创 【寄存器模型】一、一个简单的寄存器模型

在描述寄存器模型之前,首先来了解一下实际寄存器的组成结构:如下图所示的DUT内部真实的寄存器寄存器中最小的一个单位是域(field),域是由一个或多个bit拼接而成的。一个或多个域就构成了一个寄存器(reg)。一个或多个寄存器就构成了一个块(block)。将DUT中的寄存器抽象出来,建立寄存器模型,如下图所示:uvm library已经定义好了field、reg、block等相关的概念,构建寄存器模型时,只需要继承这些类即可。:构建寄存器模型中的域段。uvm_reg。...

2022-08-23 21:10:36 3648 1

原创 【System Verilog】赋值、复制(浅拷贝)、深拷贝、克隆

复制行为属于浅复制,因为它只能复制源对象内部的属性,源对象内部的嵌套的对象属性并不会被复制。深度复制就是不仅要复制源对象的属性,其内部嵌套的对象属性也一并复制进来,这需要自己写copy函数。

2022-08-21 19:46:23 1821

原创 【UVM的数据流】分为一个agent和多个agent的情况

一个sequence在向sequencer发送transaction前,要先向sequencer发送一个请求,sequencer把这个请求放在一个仲裁队列中。作为sequencer,它需做两件事情:第一,检测仲裁队列里是否有某个sequence发送transaction的请求;第二,检测driver是否申请transaction。只有一个agent时,sequencer一般在agent类之前使用typedef定义一下,然后在agent中例化即可。...

2022-08-20 22:19:23 2476

原创 【m_sequencer与p_sequencer】

而连接到driver 的真正的sequencer 是从uvm_sequencer_base类派生出来的uvm_sequencer类型,所以如果使用m_sequencer句柄来引用sequencer,会产生编译错误。因此要访问正在运行sequence 的真实sequencer ,我们需要将m_sequencer类型转化为真实sequencer ,通常称为。sequence 希望访问sequencer的 clock monitor组件,有两种办法,分别为手动转换,和使用宏的方式自动转换。

2022-08-19 11:06:37 392

原创 【IC设计】异步FIFO

同步FIFO:读写操作共用一个时钟。异步FIFO:读操作时钟和写操作时钟相互独立。异步FIFO内部一共有五个模块:第1部分是双口RAM,用于数据的存储。第2部分是数据写入控制器第3部分是数据读取控制器读指针同步器使用写时钟的两级触发器采集读指针,输出到数据写入控制器。写指针同步器使用读时钟的两级触发器采集写指针,输出到数据读取控制器。...

2022-08-15 02:11:17 1006 1

原创 【IC设计】同步FIFO

同步FIFO如何判断空满?使用扩展位来判断FIFO的空满,当读写指针的扩展位(最高位)不同,而剩余低位相同时,FIFO满。当读写指针的大小相等时,FIFO为空。

2022-08-14 16:59:19 1199 2

原创 【AMBA】AHB_slave的hready_in与hready_out

针对多个SLAVE传输不协调的情况,需要引入hready_in信号,该信号是所有的hready_out信号相与得到的。hready_out的复位信号是高电平(防止死锁),所有的hready_out相与输入到hready_in中,这就意味着,只要有一个hready_out为低,那么所有的slave都要延迟传输,直到所有的hready_out为高为止。.........

2022-08-13 23:55:26 2017 3

原创 【DVE命令报错,yum本地源配置】error while loading shared libraries:libtermcap.so.2

做了一个覆盖率验证的小实验,当运行dve_cov命令查看覆盖率时报错:提示缺少库文件libtermcap.so.2,yum命令找不到这个安装包,原因是yum本地源设置在://mnt/hgfs/RPM_Packx64中了,而这个本地源是没有挂载镜像的,需要手动挂载本地源;......

2022-07-16 14:02:38 1543 1

原创 第八章:覆盖率

覆盖率覆盖率有三种:验证计划目标覆盖率、代码覆盖率、功能覆盖率基于覆盖率驱动的验证方法学主要包括:代码覆盖率和功能覆盖率1.验证计划目标覆盖率验证列出的项目要一一的测试:哪些功能点需要检查?这个功能点的哪些数据需要检查?如何对这个数据进行采样?2.代码覆盖率通过在仿真器运行过程中自动统计数据生成报告,就是代码覆盖率,该报告只表明哪些部分被测试过,而不能指出设计行为是否正确。3.功能覆盖率功能覆盖率在随即激励测试中十分重要,一个测试用例可能会测试到不同的功能点。Systemve

2022-05-25 21:13:09 1539 1

原创 第七章:继承与多态

验证过程中经常会有新的测试用例(DUT)被加进来,原有的验证平台就需要做对应的修改,可能会引入意外错误。为此,SV提供类的继承和多态操作,使得被调用的方法能够动态的选择实现方式。类的继承①类的拓展与类成员的重写一个类可以被拓展,产生一个派生类。派生类(子类)也就继承了基类(父类)所有的属性。一些修改就可以在子类中完成。也就是类的重写。子类可以通过super操作符来引用父类中的方法和成员,以区分重写的属性或方法。使用extends关键字来扩展类:class PACKET; //基类

2022-05-25 21:01:49 743 2

原创 linux redhat与windows共享文件

一般情况,我们使用的操作系统是Windows,有时需要在Redhat或其它操作系统做测试,就通过Vmware建立虚拟机的方式来进行。在这种情况下,有时候需要从Windows中向Redhat拷贝一些文件,应该怎么做呢? 方式有好几种,比如,搭建FTP的方式,用Samba,如果安装了Vmware Tools,也可以直接拖进去,不过我觉得比较简便的就是以下这种方式,这种方式也需要安装Vmware Tools。 方法很简单,选中对应的虚拟机,右键,选择Setting菜单,切换到.........

2022-05-24 14:29:16 1145 1

原创 第六章:随机方法

激励产生有三种办法:直接测试(directed test,DT)、随机测试(random test,RT)、直接随机测试(direct random test,DRT)随机测试的验证平台通常更加复杂,需要激励产生器、监控器、检查器等验证组件。随机生成机制共有四种:内置系统函数、randcase、randsequence结构、基于对象的随机生成 、标准随机函数std::randomize()随机系统函数$random: random_function::=$random [(see...

2022-05-16 14:55:48 2175

原创 第五章:虚接口

虚接口接口定义了验证平台与被测设计进行通信的信号,虚接口和对应的通用方法可以将验证平台与设计分隔开:定义接口类型:interfacevariable_if; ... endinterface例化实体接口:variable_ifvariable_if()例化虚接口:virtualvariable_ifvariable_vf; 接口类型的定义是一个过程块虚接口通常是类的一个成员,该成员通过构造函数参数初始化或者过程初始化。可以将虚接口看作对应接口类型的一个句柄一般来说...

2022-05-16 14:49:34 1136

原创 第四章:面向对象的编程

方法:包括任务或者函数,对对象内的数据进行操作。对象:包括数据成员和方法。过程编程语言:数据和方法都是独立的,没有任何联系,一个方法可以对多个数据操作,多个函数可以对同一个数据操作。面向对象的编程语言:数据和方法被封装到一个对象中,对象和外部的接口通过方法来实现,是一个层次化的实现结构,可以例化复用。在SV中采用的是面对对象的编程语言,一旦抽象层次被确定,就可以映射到用户自定义类型,这种用户自定义类型就是类(class),类可以将数据和方法封装到一起。类一个对象通过类来定义,类相当于

2022-05-16 14:45:20 119

原创 第三章:并发进程&进程同步

硬件设计可以看成是由很多并发或者并行的进程组成,在验证平台中,每一个逻辑独立的并行操作都是采用独立的进程来实现的。SV提供了如下处理并发进程的能力:fork...join并发结构 通过mailbox实现进程间的通信 通过semaphore实现进程互斥或仲裁 通过event实现进程间的同步fork...join:fork...join代码称为父进程,fork...join内的语句块称为子进程,子进程并行执行①并发方式:在fork...join中,父进程会被阻塞,知道所有子进..

2022-05-15 13:00:16 1768

原创 第二章:数据类型与编程结构

SV新增了二值逻辑:byte bit int shortint longint而四值逻辑:integer logic reg net有符号数:byte integer int shortint longing无符号数:bit logic reg netlogic可以代替reg,但不能用在双向总线和多驱动的情况下,而只能用wire枚举类型:enumenum [date_type] {name1=value1,name2=value2,...nameN=valueN} var_na..

2022-05-14 12:58:21 555

原创 第一章:功能验证技术与方法学概要

SV学习笔记1

2022-05-13 13:59:02 705

空空如也

空空如也

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

TA关注的人

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