自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 IC学习笔记9——多比特信号的跨时钟域处理方法之“MUX/DMUX同步器”

一、“打两拍”处理多比特信号跨时钟域的问题如上图所示adata信号从2’b00变到2‘b11,一段时间之后再变为2’b00,但是因为寄存器同步器的delay有随机性,可能是一个周期之后就同步过去了,也可能需要两个周期。这样我们就可能在bdata1上看到一个周期的2’b01,之后也可能看到一个周期的2’b10,这两个值都是adata没有出现过的,也就是说bdata1出现了错误的值。为了解决这个问题,我们介绍一种"MUX/DMUX同步器“来解决多比特信号的跨时钟域问题。二、MUX/DMUX同步器2.

2022-05-25 19:38:33 12753 5

原创 IC学习笔记3——异步FIFO

IC学习笔记3——异步FIFO异步FIFO的工作内容与同步FIFO类似,但是异步FIFO的控制并不像同步FIFO那么简单,因为异步FIFO工作在不同的时钟域,这将会带来一些问题,比如空满检测?是否还可以像同步FIFO通过计数器来判断?是否需要同步电路?这些问题将会在本章节一一讨论。一、异步FIFO的空满检测1. 同步FIFO的空满检测因为同步FIFO工作在一个时钟域,可以通过一个计数器来判断空满。当同步FIFO写入一次数据,计数器加1.当同步FIFO读出一次数据,计数器减1.当同步FIFO同时

2022-05-19 16:12:47 9082 6

原创 IC学习笔记1——建立时间和保持时间

IC学习笔记1——建立时间和保持时间前言为了自己以后需要这些知识的时候,可以方便查阅。一、建立时间和保持时间1.1 触发器建立时间、保持时间和传输延迟时间都是和触发器的动态特性有关,因此必须介绍一下触发器,一个简单的触发器除了有输入和输出信号,还有一个触发信号,我们通常称这个信号为时钟信号,只有触发信号的到来,触发器的输出信号才会发生改变,一个简单触发器示意图如下所示:1.2 建立时间建立时间(setup time):时钟沿到来之前输入信号D必须保持稳定的最小时间,如下图所示:1.3 保持

2022-04-07 14:30:46 6632

原创 蒙哥马利算法模乘(四)

一 蒙哥马利算法模乘介绍蒙哥马利模乘算法主要为了进行大数运算a*b mod n,在介绍蒙哥马利模乘之前,先让我们来了解蒙哥马利约减。

2023-11-05 14:05:02 435

原创 椭圆曲线在SM2加解密中的应用(三)

SM2加解密

2023-10-29 18:29:26 327

原创 椭圆曲线的参数(二)

椭圆曲线方程参数是p,a,b,G,n,h

2023-10-28 22:14:10 593

原创 椭圆曲线点加的推导公式(一)

椭圆曲线点加推导过程

2023-10-28 19:34:33 440

原创 TCL 脚本学习1——置换

TCL(Tool Command Language)是一种解释执行的脚本语言,它提供了通用的编程能力;支持变量、过程和控制结构;同时TCL还拥有一个功能强大的固有的核心命令集。

2023-04-19 22:28:57 871 1

原创 IC学习笔记22——memory_compiler&memory_wrapper

memory_compiler为一系列工具的统称,用于生成芯片开发所需要的memory。芯片开发中所需要的memory为sram、rom等。很多公司都有自己开发的memory_compiler工具。

2023-04-12 21:34:59 2932 1

原创 数字验证学习笔记——SystemVerilog芯片验证23 ——数据采样

- 当你**coverpoint**指定采样一个变量或表达式时,SV会创建很多“仓(**bin**)”来记录每个数值被捕捉到的次数。 - 这些bin是**衡量**功能覆盖率的基本单位。 - covergroup中可以定义多个coverpoint,coverpoint中可以自定义多个cover bin或者SV帮助**自动**定义多个cover bin。 - 每次covergroup采样,SV都会在一个或者多个cover bin中留下标记,用来记录采样时变量的数值和匹配的cover bin。

2023-01-08 13:09:52 1042

原创 数字验证学习笔记——SystemVerilog芯片验证22 ——功能覆盖率策略&覆盖组

功能覆盖策略&覆盖组

2023-01-07 20:34:43 980

原创 数字验证学习笔记——SystemVerilog芯片验证21 ——覆盖率类型

- **覆盖率**是衡量设计验证完备性的一个通用词语。 - 随着测试逐步覆盖各种**合理**的**组合**,仿真过程过程会慢慢勾画你的设计情况。 - 覆盖率工具会在仿真过程中**收集信息**,然后进行**后续处理**并且得到**覆盖率报告**。 - 通过这个报告找出覆盖之外的**盲区**,然后**修改**现有测试或者**创建**新的测试来**填补**这些盲区。 - 这个过程可以一直**迭代**进行,直到你对覆盖率满意为止

2023-01-07 11:02:53 1545

原创 数字验证学习笔记——SystemVerilog芯片验证20 ——线程间的通信

- 测试平台中的所有**线程**都需要**同步**并**交换数据**。 - 一个线程需要**等待**另一个。 - **多个**线程可能**同时访问**同一个资源。 - 线程之间可能需要交换数据。 - 所有这些数据交换和同步称之为**线程间的通信(IPC)**。

2023-01-01 20:39:12 706

原创 数字验证学习笔记——SystemVerilog芯片验证19 ——线程的控制

线程的控制

2023-01-01 13:54:03 653

原创 数字验证学习笔记——SystemVerilog芯片验证18 ——线程的使用

- **module**作为SV从Verilog继承过来的概念,自然地保持了它的特点,除了作为RTL模型的外壳包装和实现硬件行为,在更高层的集成层面,模块之间也需要通信和同步。 - 对于硬件的**过程块**,它们之间的通信可理解为不同逻辑/时序块之间的通信或者同步,是通过信号的变化来完成的。 - 从硬件实现的角度来看,Verilog 通过always、initial过程语句块和信号数据连接实现进程间通信。 - 我们可以将不同的module 作为**独立**的程序块,他们之间的同步通过**信号的变化*

2022-12-31 21:53:32 601

原创 数字验证学习笔记——SystemVerilog芯片验证17 ——数组约束

数组约束

2022-12-28 22:35:19 491

原创 数字验证学习笔记——SystemVerilog芯片验证16 ——约束控制块&随机函数

- 一个类可以包含多个约束块。可以把不同约束块用于不同测试。 - 一般情况下,各个约束块之间的约束内容是互相协调不违背的,因此通过随机函数产生随机数时可以找到合适的解 如果子类继承父类,也继承了父类的约束,这个时候如果在子类里约束,不能违背父类里面的约束。 - 对于其他情况,例如根据不同需求,来选择使能那些约束块,禁止那些约束块的要求,可以使用内建的constraint_mode()函数打开或者关闭约束。

2022-12-27 22:53:51 894

原创 数字验证学习笔记——UVM学习6 消息管理

- 在一个好的验证系统应该具有消息管理特性,它们是: - 通过一种标准化的方式打印信息 - 过滤(重要级别)信息 - 打印通道 - 这些特性在UVM中均匀支持,UVM提供了一系列丰富的类和方法来生成和过滤消息: - 消息方法 - 消息处理 - 消息机制

2022-12-13 23:13:04 128

原创 数字验证学习笔记——SystemVerilog芯片验证15 ——随机约束和分布

定向测试能找到你认为可能存在的缺陷,而随机测试可以找到你没有想到的缺陷。 随机测试相对于定向测试可以减少相当多的代码量,而产生的激励较定向测试也更多样。我们想要的随机自由是一种合法的随机,需要限定激励和合法范围。同时,伴随测试的进行,约束甚至应该“变形”,变得更趋于为测试得数值范围或者期待得数值范围。

2022-12-12 23:04:26 542

原创 数字验证学习笔记——UVM学习5 config机制

在验证环境得创建过程build phase 中,除了组件的实例化,配置也是必不可少的。为了验证环境的复用性,通过外部的参数设置,使得环境在创建时可以根据不同参数来选择创建得组件类型、组件实例数目、组件之间得连接以及组件得运行模式等。在更细致得环境调节中有更多的变量需要配置,例如for-loop的阈值、字符串名称、随机变量的生成比重等。比起重新编译来调节变量,如果在仿真中可以通过变量设置来修改环境,那么就更灵活了,而UVM config 机制正提供了这样的便捷。

2022-12-09 11:23:32 368

原创 数字验证学习笔记——SystemVerilog芯片验证14 ——接口&参数化的类

接口可以用作设计,也可以用作验证 在验证环境中,接口可以使得连接变得简洁而不易出错 interface和module得使用性质很像。它可以定义端口,也可以定义双相信号;它可是使用initial和always,也可以定义function和task。 interface可以在硬件环境和软件环境中传递,例如作为module得端口列表,也可以作为软件方法得形式参数。(interface也可以作为参数) 初学者可以将interface看做一个“插排”,而DUT和TB之间得数据驱动关系都可以使用

2022-12-04 20:12:43 521

原创 数字验证学习笔记——SystemVerilog芯片验证13 ——虚方法

除了之前介绍的类的封装和继承,关于类的多态性也是必须关注的。正是由于类的多态性,使得用户在设计和实现类时,不需要担心句柄指向得对象是父类还是子类,只要通过虚方法,就可以实现动态绑定(dynamic binding),或者在SV中称之为动态方法查找。我们将已经编译阶段就可以确定下来调用方法所处作用域得方式称之为静态绑定(static binding),而与之相对得是动态绑定。动态绑定指的是,在调用方法时,会在运行时来确定句柄指向对象的类型,再动态指向应该调用的方法。为了实现动态绑定,我们将bas

2022-12-04 16:19:10 248

原创 数字验证学习笔记——UVM学习4 phase机制

SV的验证环境构建中,我们可以发现,传统的硬件设计模型在仿真开始前,已经完成例化和连接了;而SV的软件部分对象例化则需要在仿真开始后执行。虽然对象例化通过调用构建函数new()来实现,但是单单通过new()函数无法解决一个重要的问题,就是验证环境在实现层次化时,如何保证例化的先后关系,以及各个组件在例化后的连接。此外如果要实现高级功能,例如在顶层到底层的配置时,SV也无法在底层例化之前完成对底层的配置逻辑。因此UVM在验证环境构建时,引入phase机制,通过该机制很清晰地将UVM仿真阶段层次化。

2022-12-04 09:33:26 269

原创 数字验证学习笔记——UVM学习3 核心基类

UVM世界中的类最初都是从一个uvm_void根类(root class)继承来的,而实际上这个类并没有成员变量和方法。uvm_void只是一个虚类(virtual class),还在等待将来继承于它的子类去开垦。在继承与uvm_void的子类中,有两个类,一个为uvm_object类,另外一个为uvm_port_base类。在uvm世界的类库地图中除过事务接口(transaction interface)类继承于uvm_port_base,其它所有的类都是从uvm_object类一步步继承而来的。从u

2022-12-03 21:30:11 436

原创 数字验证学习笔记——UVM学习2 覆盖方法

覆盖方法

2022-12-01 23:04:33 579

原创 数字验证学习笔记——SystemVerilog芯片验证12 ——句柄的使用&包的使用

句柄的使用&包的使用

2022-11-28 22:18:17 554

原创 数字验证学习笔记——SystemVerilog芯片验证11 ——类的继承

类的第二核心要素,即类的“继承”,继承也符合我们认识实际的观点,在自然界和科学界我们对世界的认识无外乎归纳法和演绎法。归纳论证是一种由**个别**到**一般**的论证方法。它通过许多个别的事例或分论点,然后归纳出它们所**共有**的特性,从而得出一个一般性的结论。所以从具体对象抽象出类的**属性和方法**,就符合定义类时的思维方式。

2022-11-27 10:47:02 721

原创 数字验证学习笔记——SystemVerilog芯片验证10 ——类的成员

类是成员变量和成员方法的载体,之所以称为自洽体,是因为其变量和方法应符合‘聚拢’原则,即一个类的功能应该尽可能简单,不应承担过多的职责,更不应该承担不符合它的职责。

2022-11-26 21:49:58 510

原创 数字验证学习笔记——SystemVerilog芯片验证9 ——类和对象的概述

这个世界是由无数的类(class)和对象(object)构成的。类是将相同的个体抽象出来的描述方式,对象是实体,其具备有独立行为的能力,一个对象是万千世界中的“一粒沙”。具有相同属性和功能的对象属于同一类,而不同的类之间可能有联系或者没有联系。

2022-11-26 17:16:43 686

原创 数字验证学习笔记——UVM学习1 类库地图&工厂机制

类库地图&工厂机制

2022-11-26 14:26:39 557

原创 SM3密码杂凑算法

SM3密码杂凑算法用于商用密码应用中的数字签名和验证、消息认证码的生成与验证以及随机数的生成,可满足多种密码应用的安全需求。

2022-10-30 09:32:52 3656

原创 安全加解密引擎基础(ECC、ECDH)

ECC、ECDH、ECDSA

2022-10-16 16:14:19 2316

原创 数字验证学习笔记——SystemVerilog芯片验证8 ——验证环境的结构和组件

激励发生器

2022-10-11 23:13:59 561

原创 数字验证学习笔记——SystemVerilog芯片验证7 ——验证环境的结构和组件

测试平台&硬件设计描述

2022-10-11 21:35:52 723

原创 数字验证学习笔记——SystemVerilog芯片验证6 ——设计例化和连接

设计例化和连接

2022-10-11 21:35:15 639

原创 数字验证学习笔记——SystemVerilog芯片验证5 ——过程块和方法

过程块&方法

2022-10-11 21:34:26 460

原创 数字验证学习笔记——SystemVerilog芯片验证4 ——数据类型

结构体&枚举&字符串

2022-10-11 21:33:39 208

原创 数字验证学习笔记——SystemVerilog芯片验证3 ——数据类型

数组

2022-10-11 21:32:58 947

原创 数字验证学习笔记——SystemVerilog芯片验证2 ——数据类型

数据类型&数据转化

2022-10-11 21:32:14 470

原创 数字验证学习笔记——SystemVerilog芯片验证1

芯片开发流程

2022-10-11 21:31:19 554

空空如也

空空如也

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

TA关注的人

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