![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
芯片验证
狮子座硅农(Leo ICer)
努力成为卓越的芯片研发人员!
展开
-
断言语法disable iff
如果disable iff (~rst_ni) (full_o | -> ~push_i)成立,则不启动assert。原创 2023-02-15 15:37:02 · 1019 阅读 · 0 评论 -
systemVerilog的变量类型转换
if(unsigned’(a-b)原创 2022-11-15 15:18:35 · 2059 阅读 · 0 评论 -
四值逻辑二值逻辑计算
【代码】四值逻辑二值逻辑计算。原创 2022-11-14 20:41:01 · 296 阅读 · 0 评论 -
vcs简单语法调试,简单仿真,无makefile
命令:vcs -R -sverilog bit_logic_operator.sv。//8bit 有符号整数。//8bit无符号整数。byte 有符号8位数,取反+1,存入的,反推回去是-1。文件名称:bit_logic_operator.sv。说明:多个.sv文件,在后面直接加就行。原创 2022-11-14 17:00:15 · 341 阅读 · 0 评论 -
systemVerilog验证中的program块
systemVerilog验证中的program模块原创 2022-11-14 12:35:16 · 291 阅读 · 0 评论 -
验证systemVerilog中激励的时序(clocking)
驱动过晚或采样过早,都会引起竞争现象。在建立之前,稳定的驱动信号,可以避免竞争现象。input skew表示在时钟有效边沿采样信号的扭斜单位时间 output skew表示在时钟有效边沿驱动信号的扭斜单位时间。原创 2022-11-14 10:59:03 · 2379 阅读 · 0 评论 -
编写arduino独立工程,不使用原库支持
当创建一个空的工程,先按下ctrl+s保存一下。这个时候弹出对话框,命名工程。假如命名为LED,并保存在我自己的Arduino工作目录下。于是IDE会自动帮我们在Prj_Arduino下创建1个文件夹,并将sketch主文件放在里面,而且主文件和文件夹同名。原创 2022-10-24 19:41:24 · 2870 阅读 · 0 评论 -
SSD1306 OLED驱动芯片 详细介绍(使用I2C)
SSD1306 OLED驱动芯片 详细介绍(使用I2C)原创 2022-10-24 18:11:00 · 15010 阅读 · 1 评论 -
I2C协议
I²C(Inter-Integrated Circuit),中文应该叫集成电路总线,它是一种,使用多主从架构,是由飞利浦公司在1980年代初设计的,方便了主板、嵌入式系统或手机与周边设备组件之间的通讯。由于其简单性,它被广泛用于微控制器与传感器阵列,显示器,IoT设备,EEPROM等之间的通信。以上是I²C的一些重要特点,下面会进一步对I²C进行介绍。原创 2022-10-24 11:33:38 · 387 阅读 · 0 评论 -
Arduino跑通ssd1306_spi显示屏
代码首先,您需要下载两个库:● Adafruit GFX库,这是核心图形库,提供了一组通用的图形基元(点、线、圆等)。它需要与特定于硬件的库对应。● Adafruit SSD-1306 OLED显示库,这是基于SSD1306驱动程序的OLED显示器的库。解压缩这两个库并将它们添加到Arduino库文件夹中,然后运行Arduino IDE并从OLED库中打开SPI示例。原创 2022-10-24 09:29:50 · 989 阅读 · 0 评论 -
uart数据传输特性
因为UART没有时钟信号,无法控制何时发送数据,也无法保证双发按照完全相同的速度接收数据。因此,双方以不同的速度进行数据接收和发送,就会出现问题。异步串行工作得很好,但是在每个字节发送的时候都需要额外的起始位和停止位以及在发送和接收数据所需的复杂硬件方面都有很多开销。如果要解决这个问题,UART为每个字节添加额外的起始位和停止位,以帮助接收器在数据到达时进行同步;相应的协议如下图所示;不难发现,如果接收端和发送端设置的速度都不一致,那么接收到的数据将是垃圾(乱码)。原创 2022-10-22 10:35:10 · 343 阅读 · 0 评论 -
Win10安装Arduino IDE
网站:https://www.arduino.cc/en/software。选择办卡:Arduino/Genuino Uno(对应开发板型号)打开控制面板 -> 设备管理器 -> 端口(快捷键:win+x)串口驱动安装,可能是自动安装的,打开以后就是下面这样。测试:随便导入一个程序:Blink。板子上的A13的LED在闪烁。原创 2022-10-22 10:18:55 · 1244 阅读 · 0 评论 -
systemVerilog的interface(接口)介绍
systemVerilog的接口使用例子原创 2022-10-20 21:23:04 · 774 阅读 · 0 评论 -
sv验证环境-分层验证平台
对DUV接口信号进行赋值。原创 2022-10-20 20:37:44 · 611 阅读 · 0 评论 -
Python中import的as语法
在Python中,如果import的语句比较长,导致后续引用不方便,可以使用as语法,比如:import dir1.dir2.moddir1.dir2.mod.X那么,为了简化输入,可以使用as语法:import dir1.dir2.mod as mm. Ximport mod as mm.X # OKmod.X # Error下面提供as的完整语法格式,import和from都支持:import modulename as name # 只能通过name来引用from modulename im原创 2022-10-20 16:14:14 · 6799 阅读 · 0 评论 -
验证计划文档模板
芯片验证计划模板原创 2022-10-19 22:54:32 · 535 阅读 · 0 评论 -
`timescale理解
timescale命令是用来说明该命令后的模块的时间单位和时间精度。原创 2022-10-19 17:06:40 · 424 阅读 · 0 评论 -
32位加法器覆盖率分析(完整工程)
仿真工具:VCS。原创 2022-10-19 15:40:32 · 214 阅读 · 0 评论 -
验证中,如何提取功能点(思想很重要)
【代码】验证中,如何提取功能点(思想很重要)原创 2022-10-14 00:03:13 · 750 阅读 · 0 评论 -
验证中的随机种子(seed),VCS
【代码】验证中的随机种子(seed),VCS。原创 2022-10-13 23:25:50 · 3238 阅读 · 0 评论 -
VCS和Verdi安装教程,测试成功
vcs和verdi安装教程原创 2022-09-29 21:45:37 · 769 阅读 · 0 评论 -
Boot Rom和Bootloader
Boot Rom是嵌入式处理器芯片内的一小块掩膜ROM或写保护闪存。它包含处理器上电或复位的第一个代码。Bootloader提供最初的初始化代码,并检测和初始化单板,这样就可以执行其他的程序。它的主要工作就是引导操作系统,再定位、解压、加载操作系统到内存空间后,将相应的控制器移交给操作系统。当操作系统获取控制权后,嵌入式下的bootloader就不复存在了。原创 2022-09-08 19:56:17 · 1402 阅读 · 0 评论 -
JTAG调试结构
JTAG调试工具:在调试时需要用到一个工具,比如JLink或者CMSIS-DAP,对于这个工具,在这里称为JTAG主机(JTAG host),而嵌入在芯片内部的JTAG称为JTAG从机(JTAG slave),需要注意的是上面这些信号的输入输出方向是对于JTAG从机来说的。下文中如无特别说明,JTAG都是指JTAG从机。JTAG内部有一个IR(instruction register)寄存器和多个DR(data register)寄存器,IR寄存器决定要访问的是哪一个DR寄存器。...原创 2022-08-18 17:10:10 · 2385 阅读 · 0 评论 -
IDCODE指令/通路
由于IDCODE指令是可选的,不是每个芯片都有的,所以当对一个边界扫描链(scan chain)执行IDCODE指令来输出所有IDCODE时,有IDCODE指令的芯片就选择IDCODE。,输出输出IDCODE,没有 IDCODE指令的芯片会自动选择BYPASS寄存器,输出一个“0”。(data identification register)连通TDI和TDO。是一个32位的寄存器,内容包括IC的生产厂商,芯片类型,版本等。选择IDCODE指令时,IC工作在正常工作模式,选择数据识别。...原创 2022-08-18 15:30:37 · 710 阅读 · 0 评论 -
LBIST是什么?应用场景是什么?实现的方法是什么?挑战是什么?
不依赖于ATE机台,直接在板上进行测试,甚至芯片部署到产品中以后也可以进行in-system 的测试。LBIST的开发难度大、开发周期长,对芯片面积也有很大的开销,一般都是对可靠性要求比较高的芯片才做LBIST,像消费类的产品鲜有做lbist的。由于LBIST on chip产生的激励是伪随机的,coverage一般不高,并且对芯片中的X-source敏感,芯片中的X-source会直接crash LBIST,所以进行lbist设计,清理芯片中的x-source是很大一部分工作量。...原创 2022-08-18 15:08:51 · 3539 阅读 · 0 评论 -
AXI协议介绍
AXI数据AMBA(The ARM Advanced Microcontroller Bus Architecture)家族中的一员,AXI协议在AMBA3.0版本中开始出现,并在后续的AMBA4.0、AMBA5.0中持续更新,对应AXI3、AXI4和AXI5。原创 2022-08-15 20:30:42 · 418 阅读 · 0 评论 -
存储器故障模型
存储器故障模型。原创 2022-08-13 17:24:47 · 3992 阅读 · 0 评论 -
systemVerilog中bind使用方法
代码】systemVerilog中bind使用方法。原创 2022-08-11 08:58:59 · 2788 阅读 · 0 评论 -
#include<>和#include“”的区别
一、查找的目录不同1、#include:编译器直接从系统类库目录里查找头文件:比如在VS2013中,编译器会直接在\VC\include目录下查找到stdio.h这个文件,这就是编译器的类库目录;在Linux GCC编译环境下,一般为/user/include和/usr/local/include。 如果类库目录下查找失败,编译器会终止查找,直接报错:No such file or directory.例如,我们自定义一个头文件"test.h"...原创 2022-07-01 09:07:38 · 287 阅读 · 0 评论 -
#include errors detected. Please update your includePath.
问题描述:在使用vscode时候,#include出现波浪线,提示:#include errors detected. Please update your includePath.在terminal 中输入 gcc -v -E -x c++ - ,然后将最下的路径复制到 c_cpp_properties.json中 includePath下在vscode界面,C/C++: Edit Configurations (UI) from the Command Palette ( 快捷键:Ctrl+Shift+原创 2022-06-30 21:22:27 · 3901 阅读 · 0 评论 -
芯片验证中,问题追踪分类及工具
(1)系统功能定义问题;(2)硬件设计问题;(3)芯片验证环境问题;(4)硅前工具问题;(5)引用库和IP问题。数据库要求:问题追踪工具:,、原创 2022-06-05 10:16:10 · 1194 阅读 · 0 评论 -
动态仿真、形式验证和硬件加速使用情况
在模块级或IP级验证中,更多使用动态仿真和形式验证,尽量将缺陷率曲线更快、更多地收敛在这一层次。在芯片系统级验证过程中,使用动态仿真测试模块之间的集成关系。对于耗时长的测试用例,如固件启动测试、性能测试、大规模数据存储测试等,在系统测试阶段使用硬件加速以更快地得到结果。原创 2022-06-01 11:18:01 · 571 阅读 · 0 评论 -
低功耗预测分析工具
功耗分析预测分析工具包括PowerArtist(Ansys)、Spyglass Power(Synopsys)、Prime Time PX(Synopsys)和Redhawk(Ansys)等。通过对实际项目中;不同工具的比较,建议如下表:原创 2022-06-01 10:48:37 · 1900 阅读 · 0 评论 -
计算机相关预测定律
香浓预测定律:摩尔定律:电池定律:存储定律:原创 2022-06-01 10:18:19 · 487 阅读 · 0 评论 -
硬件仿真加速器(emulator)
主流实现硬件加速的三家公司:(1)Veloce(Mentor公司);(2)ZeBu(Synopsys公司);(3)Palladium(Cadence公司)。(1)Veloce(Mentor公司)(2) ZeBu(Synopsys公司)(3) Palladium(Cadence公司)真实世界的频率高于模拟器的频率。需要为它们之间的频率差搭建降速同步的桥接(speed bridge),通过主动降低快速端的速度并缓存快速端的数据,适配两端的数据交换。原创 2022-06-01 10:02:11 · 5581 阅读 · 2 评论 -
芯片的虚拟模型
概念:虚拟模型是高抽象级的硬件模型。作用:软件模型可以依赖虚拟模型在早期开发,并将反馈交给硬件设计。优势:(1)通过虚拟模型,硬件可以更早获取软件反馈而对设计进行修改;(2)判断硬件和软件的协同任务是否满足功耗目标。例:在目前多核的手机移动平台上,将不同的任务合理分配到多核上以取得更好性能的需求日益增长,这种软件层面的评估就可以在虚拟建模阶段完成。虚拟建模语言:SystemC虚拟建模工具:First Encounter(Cadence..原创 2022-05-29 20:56:52 · 203 阅读 · 0 评论 -
跨时钟域检查
什么是时钟域:大多数复杂的设计都拥有不止一个时钟,多个时钟之间也常表现为异步的关系。设计中的不同功能模块如果被不同的时钟驱动,就会形成不同的时钟域(clock domain)。问题:单一时钟域模块的设计方式和验证环境较为简单,而拥有多时钟域的硬件,其跨时钟域的逻辑通信就需要考虑同步问题。用来验证这些设计要求的过程称为跨时钟域检查。例如:需要同步是因为考虑不同时钟域的信号采样问题,当时钟域A的信号进入时钟域B被采样时,每个周期都有相对于时钟B不同的延迟,这种随机性可能导致建立时间或保持.原创 2022-05-29 17:44:05 · 872 阅读 · 0 评论 -
spyglass语义检查-针对systemVerilog语言
语义检查软件:Spyglass语义检查范围:(1)常见设计错误(2)影响覆盖率收敛问题(3)可能会产生X值以及受其影响的设计部分进一步细化这些检查项,它们会具体检查以下设计方面:(1)验证收敛性检查无法达到的逻辑部分 无法跳转到的状态机状态 无法完成的状态机跳转逻辑(2)硅效用检查寄存器被固定赋值 寄存器未初始化 X值的传播(3)功能问题检查状态机检查 总线检查 case语句检查 数学逻辑检查这些静态检查最大的便捷性在于,可以在早期发原创 2022-05-29 16:23:49 · 1079 阅读 · 0 评论 -
SystemVerilog丛书,目前国内出版的有(以出版时间为序):
《SystemVerilog Assertions应用指南》,清华大学出版社2006年10月出版。英文原版书名《A Practical Guide for SystemVerilog Assertion》。 《SystemVerilog验证方法学》,北京航空航天大学出版社2007年5月出版。英文原版书名《Verification Methodology Manual for SystemVerilog》。 《高级验证方法学》,电子科技大学出版社 2007年8月出版。英文原版书名《The Ver...原创 2022-05-26 17:19:25 · 728 阅读 · 0 评论 -
子系统交付
与模块相比,子系统更稳定也更封闭,便于集成。合格交付的子系统应该包括:设计包 验证包 回归测试表 覆盖率收集脚本和数据 完整的设计文档(设计、验证、集成、后端)原创 2022-05-28 14:24:51 · 82 阅读 · 0 评论