- 博客(207)
- 资源 (11)
- 收藏
- 关注
原创 V0 第18节 随机变量
1.概述随着设计变得越来越大,要产生一个完整的激励来测试设计的功能也变得越来越困难定向激励的测试方法已经无法满足检查功能完整性的要求SOC的集成度提高带来的模块之间交互的复杂度也是指数攀升,这就使得验证工程师无法预测接下来用户使用过程中会发生什么样的状态随机—约束,两个词组合在一起就构成了目前动态仿真验证的主流方法随机约束测试(CRT, Constrained-Random Test)即能够产生你感兴趣的,你想不到的测试向量,通过回归测试、替换随机种子的方式来提高单位测试用例的覆盖率收集效率随
2021-11-25 07:13:31
341
原创 V0 第17节 包的使用
1. 包的定义在大型的验证项目中,很容易出现模块重名的情况对于重名的硬件模块我们可以将它们置入到不同的编译库中对于重名的软件类、方法等,我们可以将它们置入到不同的包中我们可能使用不同的验证IP,我们也无法预测这些类名是否可能重名通过包package可以将关联的类和方法并入到同一个逻辑集合中为了使得可以在多个模块(硬件)或者类(软件)之间共享用户定义的类型,SV添加了包package用户自定义的类型譬如类,方法、变量、结构体、枚举等都可以在package…endpackage中定义2. 导
2021-11-22 21:43:38
453
原创 V0 第16节 类的继承
1.继承和子类定义过的类Packet,可以进一步扩展构成一个新的类LinkedPacket通过extends,LinkedPacket继承于其父类Packet,包括继承其所有的成员(变量/方法)class LinkedPacket extends Packet; LinkedPacket next; function LinkedPacket get_next(); get_next = next; endfunctionendclass2.成员覆盖子类可以继承父类的成员,所以
2021-11-16 23:05:49
239
原创 V0 第15节 对象拷贝
1. 句柄的传递在区分了类(抽象)和对象(具体)之后,初学者还需要区分对象(存储空间)和句柄(空间指针),也就是说,在创建了对象之后,该对象的空间位置不会更改,而指向该空间的句柄可以有多个2. 赋值和拷贝声明变量和创建对象是两个过程,也可以一步完成Packet p1;p1 = new;如果将p1赋值给另外一个变量p2,那么依然只有一个对象,只是指向这个对象的句柄有p1和p23.类的引用和实例在SV中,对于对象的拷贝,只能针对对象中的成员变量如果想要对对象中的句柄指向的对象也做拷贝
2021-11-15 22:49:21
145
原创 V0第14节 类的封装
1. 类的概述类是一种可以包含数据和方法(function, task)的类型例如一个数据包,可能被定义为一个类,类中可以包含指令、地址、队列ID、时间和数据等成员面向对象编程(OOP ,Object-Oriented Programming)使用户能够创建复杂的数据类型,并且将它们跟使用这些数据类型的程序紧密地结合在一起用户可以在更加抽象的层次建立测试平台和系统级模型,通过调用函数来执行一个动作而不是简单地改变信号的电平在验证环境中,包括stimulator,monitor,checker以及
2021-10-23 09:38:21
104
原创 V0第 第13节 数组类型
1.动态数组与之前的定长数组相比,SV提供了可以重新确定大小的动态数组动态数组在声明时需要使用[],这表示不会在编译时为其制定尺寸,而是在仿真运行时来确定动态数组一开始为空,需要使用new[]来为其分配空间int dyn[],d2[];//声明动态数组initial begin dyn = new[5]; //分配5个元素 foreach (dyn[j]) dyn[j] = j; //对元素进行初始化end内建方法size()可以返回动态数组的大小内建方法delete()可
2021-10-23 09:08:51
135
原创 V0 第12节 数组操作
1. 非组合型unpacked对于Verilog,数组经常会被用来做数据存储,例如reg[15:0] RAM [0:4095]SV 将Verilog这种声明数组的方式称为非组合型声明,即数组中的成员之间存储数据都是互相独立的Verilog也不会指定软件去如何存储数组中的成员wire[7:0] table[3:0]SV保留了非组合型的数组声明方式,并且扩展了允许的类型,包括event,logic,bit,byte,int,longint,shortreal和real类型SV也保留了Verilog索
2021-10-10 22:41:16
289
原创 V0 第11节 验证环境组件
1. 激励发生器Simulator (激励发生器)是验证环境的重要部件,在一些场合中,它被称为driver(驱动器)、BFM(bus function model,总线功能模型),behavioral(行为模型) 或者 generator(发生器)Simulator的主要职责是模拟与DUT相邻设计的接口协议,只需要关注如何模拟接口信号,使其能够以真实的接口协议来发送激励给DUTSimulator 不应该违反协议,但不拘束于真实的硬件行为,还可以给出丰富的只要协议允许的激励场景比真实硬件行为更丰富的
2021-09-28 23:52:14
540
原创 V0 第10节 硬件设计描述
1. MCDF 简介遵循硬件设计描述的方式,介绍它的结构、功能、寄存器和时序熟悉硬件描述的方式,也是进入验证领域的一项基本技能多通道数据整形器(MCDF, multi-channel data formatter),它可以将上行uplink多个通道数据经过内部的FIFO,最终以数据包data packet的形式送出上行数据和下行数据的接口协议不同多通道数据整形器也有寄存器的读写接口,可以支持更多的控制功能2. MCDF接口描述系统信号接口CLK(0):时钟信号RSTN(0):复位信号
2021-09-27 22:48:46
334
原创 V0 第9节 验证环境结构
1. 验证环境结构测试平台(testbench)是整个验证系统的总称它包括验证结构中的各个组件、组件之间的连接关系、测试平台的配置和控制从系统的意义来讲,它还包括编译仿真的流程、结果分析报告和覆盖率量化我们主要关注验证平台的结构和组件部分,他们可以产生设计所需要的各种输入,也会在此基础上进行设计功能的检查2. 测试平台结构图各个组件之间是相互独立的验证组件与设计之间需要连接验证组件之间也需要进行通信验证环境也需要时钟和复位信号的驱动3. 验证语言应用趋势SystemVeri
2021-09-26 22:54:41
427
原创 V0 第8节 接口
1. 接口Verilog 是通过模块之间进行端口连接来完成模块间通信的对于大型设计,通过端口进行连接会让硬件集成变得容易出错SV在Verilog语言基础上扩展了接口interface接口提供了一种新型的面向抽象级建模的方式接口的使用可以简化建模和验证大型复杂的设计对于以上的连接,按照Verilog的方式,我们将按照以下步骤进行对每一个子模块进行端口声明在上层环境,需要声明非常多的线网用来在各个模块之间进行连接对于标准的总线端口也不得不在多个模块重复声明相应的通信
2021-09-25 23:14:38
172
原创 V0第7节 字符串类型
1. 字符串类型Verilog语言对于字符串的处理手段非常有限SV引入了string 类型用来容纳可变长度的字符串字符串类型变量的存储单元为byte类型字符串类型变量长度为N时,其字符成员索引值为从0到N-1不同于C语言,字符串结尾没有空字符 “\0"字符串的内存是动态分配的,用户无需担心内存空间管理2. 字符串内建方法str.len();返回字符串的长度str.putc(i, c);将第i个字符替换为字符c,等同于str[i] = cstr.getc(i); 返回第i个字符st
2021-09-23 23:32:17
276
原创 V0 第 6 节自定义类型
1.自定义类型通过用户自定义类型,以往Verilog的代码将可以通过更少的代码来表示更多的功能用户自定义类型使得代码的可读性更好通过typedef来创建用户自定义类型通过enum来创建枚举类型通过struct来创建结构体类型Verilog语言无法提供方便的特性来使得用户扩展变量和线网类型SV则提供了特性使得用户可以构建更高抽象层的数据类型定义了新的数据类型,就可以利用该类型声明变量1.1 typedef创建用户自定义类型例:typedef unsigned int uint;ui
2021-09-22 23:09:23
129
原创 V0 第5节 数据类型
1. Verilog的数据类型Verilog语言提供两种基本的数据类型, 变量类型variables和线网类型nets,这两种类型都是四值逻辑,即可表示0、1、X和Z值例如reg,integer和time等变量类型可以用来存储组合逻辑或者时序逻辑的值例如wire,wor,wand和其它线网类型用来连接硬件模块,以及提供特殊的线网驱动解决方案1.1 Verilog线网类型线网用于建模硬件设计中的连接线路,而线网的值由线网驱动器所决定驱动器可以是门或模块的实例,或者连续赋值的输出1.2 V
2021-09-20 10:33:46
328
原创 V0 第4节 SV及UVM概述
1. SystemVerilog发展历史SV 是IEEE 1364-2005 Verilog标准的扩展此扩展包含了用来实现可综合设计的设计语言特性,也包含了用来对大型设计做验证的验证语言特性SV是用来建议一种新的硬件描述和验证语言(HDVL,Hardware Description and Verification Language)SV通过一种统一的语言来帮助工程师对大型复杂硬件系统进行建模,并且对其功能进行验证2. SV标准的诞生SV标准由Accellera标准组织牵头发民Accel
2021-09-16 23:34:28
2358
原创 V0 第3节 验证的周期
1. 验证周期功能验证有着一整套完备的流程,从硬件系统定义到硅后测试部分一个验证团队会基于时间差同时进行多个项目,多个项目之间存在着借鉴、更新的关系,验证的环境和复用性也是在不断提高每一个项目在进行瀑布式的开发时,验证团队也会在细分的流程当中完成任务,同时在展开下一项任务之前会进行一些重要检查点(checkpoint)的回顾工作由于验证人员会不断地在新项目中完善验证环境,验证的周期也是不断往复、螺旋上升的过程验证周期的起始点是从创建验证计划开始的,而验证计划需要参照系统工程师给出的功能详述文档
2021-09-16 22:55:20
412
原创 V0 第2节 验证的任务和目标
1.验证的目标验证的任务可能是模块级(module level)、子系统级(subsystem level) 或者系统级 (chip level)验证的目标:按时、保质、低耗 完成目标硬件设计的验证工作功能验证是唯一可以低成本在硅前流片将上述目标 按时、保持、低耗 达成的方法衡量的两个标准1)时间2)缺陷数量2.缺陷增长曲线通过缺陷数量在时间线上的记录,可以绘制出缺陷数量的增长曲线缺陷数量的增长曲线是逐渐趋于缓慢的功能验证需要保证的就是将缺陷数量的增长保证在硅前阶段,不应该让其发生
2021-09-15 23:38:55
453
原创 V0 第1节 什么是验证
1. 什么是验证是用来证明设计功能正确,并且符合设计功能描述的流程工作量主要集中在设计流片以前,而且在前端设计中占据70%的我作量是需要在流片之前确认产品的功能和系统是否符合规则和要求,看有没有“把事情做对"2. 什么是测试平台对DUT创建测试序列 激励发生器观察DUT的输入输出 检测器对DUT的输出数据与预期数据进行比对 比较器时钟/重置装置报告检查结果3. 芯片开发流程从市场人员与客户沟通开始系统设计人员按照功能划分为各个子系统子系统被进一步划分为功能模块,并由设计团
2021-09-15 23:12:35
209
原创 跟着路桑学SystemVerilog
1. 验证技术分类1. 动态验证技术动态验证技术:依靠仿真器(simulator)来对数字电路进行激励发送和结果检查。常用的,成本低的验证技术代码覆盖率功能覆盖率断言随机约束验证语言主要学习 Verilog 、SystemVerilog 、C/C++UVM (验证方法学)2.静态验证技术静态验证技术又可以分为人工形式验证技术和自动形式验证技术人工形式验证技术:property check 通过断言结合形式验证工具对设计功能进行穷举检查,从数学意义上判断设计的正确性自动形式验证:包
2021-09-14 23:45:17
347
原创 QT_For_Android环境搭建
由于OCR 的识别算法是由C++做的,Demo是用QT for Android做的,这里需要搭建QT For Android的环境Linux(Ubuntu18.04)安装QT for Android1.下载linux android 版本qthttp://download.qt.io/archive/qtqt-opensource-linux-x64-5.12.3.run2.安装qt$...
2019-09-17 11:32:22
483
1
原创 GY_91模块
1.GY-91 简介GY-91 是MPU9250+BMP280MPU9250是InvenSense出品的模块九轴传感器,它集成了陀螺仪三轴,加速度三轴,磁感应三轴MPU9250的I2C从地址为0x68BMP280:温度气压传感器2.iio子系统iio子系统的目录位于drivers/iioiio子系统全称是Industrial I/O subsystem(工业 I/O 子系统)3.i...
2019-09-16 15:17:13
5821
原创 AS提交代码到gitee
1.安装Gitee码云插件File—>Settings—>Plugins---->安装Gitee2.上传代码到giteeVCS—>Import into Version Control—>Share Project On Gitee填写gitee的用户名和密码xxxxxxPassword:xxxxxx勾选Private则为私有项目...
2018-09-29 16:06:59
2148
原创 Android APP 直接操作内核sysfs
eth_enable 是sysfs导出的一个符号,控制以太网的电源开关APP端操作节点try{ FileOutputStream fops = new FileOutputStream("/sys/devices/platform/syspower.0/eth_enable"); fops.write("1".getBytes()); fops.flush(); ...
2018-07-04 11:05:28
1283
原创 U9300C 在Linux下的调试
硬件:A83T1.驱动加入VID和PID--- a/lichee/linux-3.4/drivers/usb/serial/option.c+++ b/lichee/linux-3.4/drivers/usb/serial/option.c@@ -948,6 +948,7 @@ static const struct usb_device_id option_ids[] = {...
2018-07-04 10:13:48
4218
1
原创 开启电量的百分比
Android V5.11.直接显示在电池里--- a/android/frameworks/base/packages/SystemUI/src/com/android/systemui/BatteryMeterView.java+++ b/android/frameworks/base/packages/SystemUI/src/com/android/systemui/Batte...
2018-07-04 09:58:16
1213
原创 EasyPermissions
Easypermissions简化了Android M的运行时权限的申请、结果处理1.地址https://github.com/googlesamples/easypermissions Android M对权限系统进行了改变 Android M之前所需权限只需要在AndroidManifest中申请即可。但更新Android M系统后,部分“Dangerous Permission”...
2018-06-22 11:58:23
672
原创 gpio pinctrl
1.pinctrl驱动SoC内部都包含pin控制器,通过pin控制器的寄存器,我们可以配置一个或者一组引脚的功能和特性 linux系统下采用pinctrl子系统管理所有的IO管脚# ls out/target/product/msm8998/obj/kernel/msm-4.4/drivers/pinctrl/qcom/ -l总用量 1668-rw-r--r-- 1 root r...
2018-06-13 10:45:49
764
原创 fts touchscreen
1.查找驱动触模屏驱动fts.c kernel/msm-4.4/drivers/input/touchscreen/st/fts.c ST FingerTips msm8998:/ # getevent add device 7: /dev/input/event4 name: “fts” X_AXIS_MAX: 1440 Y_AXIS_MAX: 2560 I2C接...
2018-06-12 10:17:35
1649
原创 s6e3ha3 amoled屏
1.确定系统所使用的dts串口打印:Machine: Qualcomm Technologies, Inc. APQ 8098 SKUK HDK 推测出所用的dts为apq8098-v2-qrd-skuk-hdk.dts 生成的是apq8098-v2-qrd-skuk-hdk.dtb 确定了所用的dts为kernel/msm-4.4/arch/arm/boot/dts/qcom/apq8...
2018-06-11 14:54:19
2694
2
原创 ubuntu18.04 Android 7.1.2 编译配置
1.jdk 8安装# apt install openjdk-8-jre-headless# apt install openjdk-8-jdk-headless测试:# java -versionopenjdk version "1.8.0_171"OpenJDK Runtime Environment (build 1.8.0_171-8u171-b11-0ubuntu0.18...
2018-05-29 16:12:02
7457
2
原创 Python3 基础(itcast学习笔记)
1.Python变量的类型用type(变量的名字)来查看变量的类型#!/usr/bin/python3 a = 10b = 10.0c = True# ./test.py <class 'int'> <class 'float'> <class 'bool'>2.格式化符号在程序中%这样的符号是
2018-05-14 11:59:45
2759
原创 Python3 基础
环境:ubuntu16.04 Python Python 3.5.21.基础语法1)注释 单选注释# 多选注释”“” 多行注释用三个单引号 ”’ 或者三个双引号 “”” 将注释括起来#!/usr/bin/python3if True: print("Hello,Python")else: print("False")#pr
2018-05-10 17:17:17
333
1
原创 Python环境搭建
Python:是一种面向对象的解释型计算机编程语言,由1989年荷兰人发明 Python是如何运行的.py Python test.py 将test.py编译成Python Byte Code(.pyc),然后由Python虚拟机PVM解释 Python源代码.py—>Python解释器—>Python字节码.pyc—>PVM(Python虚拟机) Pyton的应用领域:...
2018-05-10 11:44:20
445
原创 QT QDbus
通过Dbus 总线,客户端调用服务端的槽函数 服务端1.新建项目QdbusTestServer在.pro工程中增加QT += dbus2.新建类 Cal定义接口和函数add(),sub()定义接口名com.example.dbus.Interface Q_CLASSINFO(“D-Bus Interface”,”com.example.dbus.Interface”)...
2018-04-13 14:21:50
1297
原创 ubuntu 安装使用dbus
ubuntu12.04 安装dbus1.下载dubs下载https://dbus.freedesktop.org/releases/dbus/ dbus-1.8.0.tar.gz2.配置编译./configure –prefix=/home/xx/dbus/install/ (安装目录) make make install3.使用dbus-daemon是...
2018-04-11 15:12:57
15939
6
原创 QT5学习总结
1.添加资源文件选中项目,右键–>添加新文件–>QT–>Qt Resource File 填写资源名称名字:img 打开img.qrc,添加前缀 / 点击添加文件,前提是文件在项目工程的目录下 2. QWidget 设置背景色(Style Sheet) sys_setting_window = new QWidget(this->s_par...
2018-04-09 16:03:18
1287
原创 QT Creater的安装配置
环境:ubuntu12.041.下载1)在线下载 进入官方下载页面会自动下载 https://www.qt.io/download-thank-you qt-unified-linux-x64-3.0.4-online.run2)离线下载 http://download.qt.io/archive/qt/5.5/ qt-opensource-linux-x64-5.5.0-2...
2018-04-09 09:54:52
794
原创 RTL8188EUS Anaroid M Porting
硬件imx6q 系统:android M1.参考Quick Start Guide for Driver Compilation and Installation集成驱动到内核里1)把driver源码集成到drivers/net/wireless中 kernel_imx/drivers/net/wireless/rtl8188eus 2)编译内核生成8188eu.ko-...
2018-03-23 10:37:33
1462
原创 imx6 内核停止启动
参考:http://blog.youkuaiyun.com/kris_fei/article/details/50848099 imx6q android7 内核停止输出错误switch to ldo_bypass mode! Starting kernel …在:imx6q-sabre...
2018-03-22 15:28:06
849
原创 电阻屏较准
硬件:imx6 ads7846电阻屏 系统:android7.1 LCD显示屏的坐标原点为左上角(800,600),触摸屏的坐标原点为右下角(xmin,ymin)1.通过驱动打印原始的坐标值static void ads7846_report_state(struct ads7846 *ts) 获取坐标原点和最大值分别为(xmin,ymin)(xmax,ymax) u16 ym...
2018-03-17 14:26:17
811
Android 百度鹰眼 SDK 后台启动轨迹追踪采集
2018-01-22
kernel4.1.15 ti bq27541 电量计驱动
2017-10-24
android i2c-tools
2014-07-09
Android技术内幕.系统卷
2012-10-13
ldd3_examples
2011-09-06
Linux设备驱动程序第三版.pdf
2011-09-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人