自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 SV学习笔记(十四)-覆盖率

验证没有量化,那么就意味着没有尽头伴随着复杂的SoC系统的验证难度系数成倍增加,无论是定向测试还是随机测试,我们在验证的过程中终究要回答两个问题是否所有设计的功能在验证计划中都已经验证?代码中的某些部分是否从未执行过?覆盖率就是用来帮助我们在仿真中回答以上问题的指标覆盖率已经被广泛采用,作为衡量验证过程中的重要数据一旦通过覆盖率来量化验证,我们可以在更复杂的情况下捕捉一些功能特性是否被覆盖当我们在测试X特性时,Y特性是否也在同一时刻被使能和测试。

2023-08-18 10:08:55 1570

原创 SV学习笔记(十三)-多态、类型转换

Verilog对整数和实数类型,或者不同位宽的向量之间进行转换。转换时指定目标类型,并在要转换的表达式前加上单引号。静态转换操作符不对转换值进行检查。

2023-08-18 10:06:53 202

原创 SV学习笔记(十二)-线程控制

当信箱容量写满时,后续再写入的动作会被挂起,直到信箱中数据被读取,使得信箱有空间以后才可以继续写入。信箱mailbox可以使得进程之间的信息得以交换,数据可以由一个进程写入信箱,再由另一个进程获取。可以结合num()与get()或者put(),防止信箱为空或者为满的时候阻塞。将信息写入信箱,信箱满了会阻塞:put(data),将data写到信箱中。信箱数据快照,能拿到信箱内的数据,但信箱内的数据不会减少:peek()从信箱中取出数据:get(data),从信箱中取出数据赋值给data。

2023-08-18 10:05:21 605 1

原创 SV学习笔记(十一)-随机约束

时,如果有参数,那么只会随机化参数变量,而其余变量无论之前是否被声明为rand/randc,都不会参与到随机化中。如果用户在使用时,指定了外部约束对同一个变量做二次约束,或者用户定义了子类中对同一个变量做了二次约束,那么。有时候在表达式中无法简单的表述约束,例如要计算合并数组中的’1‘,可以在约束块中调用函数来描述约束。没有约束的随机变量会包含许多无效和非法的值,这会使得有效激励的产生变得低效。软约束相互冲突时,根据就近原则,哪里调用随机,哪里的软约束有效。操作符,它们表示每个值的权重时相同的。

2023-08-18 10:03:05 1001 1

原创 SV学习笔记(十)-包的使用

为了可以在多个模块(硬件)或者类(软件)之间共享用户定义的类型,SV添加了包(package)包的概念参考与VHDL,用户自定义的类型如:类、方法、变量、枚举类等都可以在包中定义。

2023-08-17 16:00:33 377 1

原创 SV学习笔记(九)-类

以下这种方式表示p1和p12代表两个不同的对象,在创建p12时,将从p1拷贝其成员变量,这种拷贝方式称为浅拷贝(shallow copy)类在定义时,需要定义构建函数,如果未定义,则系统会自动帮助定义一个空的构建函数(没有形式参数,函数体亦为空)浅拷贝中,只拷贝了对象的值,如果对象某个变量变量另一个对象,那拷贝生成的对象那个变量也会指向相同的变量。父类的对象不能赋值给子类的句柄,编译会报错,因为可能会造成内存的非法访问。子类和父类有相同的变量时,各自类的方法会修改各自类中的变量。SV在类的定义时,只需要。

2023-08-17 15:57:54 235 1

原创 SV学习笔记(八)-数组

由于处理器在访问存储时的访问时随机散乱的,这意味在整个测试中,处理器也许只会访问几百个存储地址,而剩下大多数地址都将被初始化为0,浪费了仿真时的存储空间。SV引入了关联数组,可以用来存放散列的数据成员,这一点于其它脚本语言Perl或python类似,散列的索引类型除了。SV页保留了Verilog索引非组合型数组或者数组片段的能力,这种方式为数组及数组片段的拷贝带来了方便。组合型数组会进一步规范数据的存储方式,而不需要关心编译或者操作系统的区别,数据是连续存放的。with查找满足条件的数据成员更方便。

2023-08-17 15:55:41 1840 1

原创 SV学习笔记(七)-任务和函数

类似于C语言,函数(function)和任务(task)可以提高代码的复用性和整洁度目的都是在于将大型的过程块切分成更小的片段,而便于阅读和代码维护函数和任务的区别function不会消耗仿真时间,task可能会消耗仿真时间function无法(不建议)调用task,task可以调用function一个可以返回数据的function只能返回一个单一数值,而task或者void function不会返回数值。

2023-08-17 15:53:04 1409 1

原创 SV学习笔记(六)-验证环境结构

*测试平台(testbench)**是整个验证系统的总称它包括验证结构中的各个组件(component)组件之间的连接关系,测试平台的配置和控制从更系统的意义来讲,它还包括编译仿真的流程、结果分析报告和覆盖率检查等从狭义上讲,我们主要关注验证平台的结构和组件部分,他们可以产生设计所需的各种输入,也会在此基础上进行设计功能的检查。

2023-08-17 15:51:16 433 1

原创 SV学习笔记(五)-接口

接口对于设计复用非常有利接口减少了模块之间错误连接的可能性如果要添加新的信号,只需要在接口中声明,而不必在模块中声明由于接口将有关的信号都集合在一起,因此在使用这些信号时需要添加一个层次(接口实例名)接口往往会将有关的信号集合在一起,这意味着对于拥有多组不想管信号的设计而言,他可能需要有多个接口实例才能完成其它模块的连接。

2023-08-17 15:48:52 266 1

原创 SV学习笔记(四)-设计特性

仿真和综合可能会将case语句做不同的翻译,Verilog中定义case语句在执行时按照优先级,而综合编译器则会优化case语句中多余的逻辑,可能会出现编译后case逻辑于想要实现不符的情况。为了保持仿真与综合的一致性,SV提供了unique和priorty的声明,结合case,casex和casez来进一步实现case对应的硬件电路。unique case可以并行执行(即分支没有先后顺序,谁满足运行谁),并且case选项必须完备。unique case不能又重叠的选项,即多个满足条件的选项。

2023-08-17 15:41:08 669 1

原创 SV学习笔记(三)-SV数据类型

SystemVerilog是IEEE 1364-2005 Verilog标准的拓展此拓展包含了用来实现可综合设计的设计语言特性,也包含了用来对大型设计做验证的验证语言特性SystemVerilog是用来建立一种新的硬件描述和验证语言SV旨在通过一种统一的语言来帮组工程师对大型复杂硬件系统进行建模,并且对其功能进行验证通过用户自定义类型,将通过更少的代码来表示更多的功能用户自定义类型使得代码自身的可读性更好通过typedef来创建用户自定义类型。

2023-08-17 15:37:32 694 1

原创 SV学习笔记(二)-芯片验证概述

证明设计功能正确,符合设计功能描述的流程确认产品功能、服务或系统是否符合规则、要求、规范和强制条件,通常是还没有面向客户的内部过程,看有没有“把事情做对”验证要占据前端设计70%左右的工作量对DUT(design under test)创建测试序列观察DUT的输入输出对DUT的输出数据与预期数据进行对比报告检查结果重大缺陷造成额外的成本损失时越靠后越巨大缺陷率增长曲线的曲率有事逐渐减小的快而全地提供缺陷率增长是理想目标。

2023-08-17 15:21:02 292 1

原创 SV学习笔记(一)-验证技术

目前SoC尺寸增加,市场比例增加的情况下,越来越多的IC设计公司都将Emulation/FPGA原型开发引入了验证流程中。最近的10年中,IC/ASIC市场经历了巨大的痛苦,已解决日益增加的验证复杂性,而这主要是采用SOC级设计所带来的。SoC尺寸增大的同时,也让原有的仿真方案速度降低,而对于一些复杂场景,性能测试,软件开发的要求无法满足。相比于20年前的定向激励和测试通过率,目前SOC的动态验证技术讲依赖更多的途径来量化验证进度。functional coverage:功能覆盖率。

2023-08-17 15:10:06 292 1

原创 docker06:容器卷技术

一、docker理念回顾 docker将应用和环境打包成一个镜像 项目中我们希望数据能够持久化,即哪怕删除了容器数据也不受影响,这里就需要容器与容器间,容器与宿主机间有一个数据共享的技术。docker容器内部产生的数据能够同步至宿主机永久保存,这个就是卷技术,即是将本地目录挂载到容器内部,容器删除后不影响数据,容器运行时能直接使用已有数据。二、挂载 方法一:启动时挂载 docker run -v 宿主机目录:容器内目录 ...

2021-08-08 17:26:46 174

原创 docker05:commit镜像

一、commit命令 docker commit 提交容器成为一个全新的副本 docker commit -m=“提交的描述信息” -a=“作者信息” 容器id 新镜像名:tag 实战练习 1、运行一个tomcat容器2.此时访问tomcat,显示无基本文件信息3.新开终端进入容器:docker exec -it 679e7e9da15b /bin/bash,复制webapps.dist目录下文件至we...

2021-08-08 15:25:22 327

原创 docker04:容器的基本命令

一、容器基本命令 docker run 参数容器名新容器并启动 参数说明: --name=name 给容器起个名字,用来区分容器 -d 后台启动 -it 交互方式启动容器...

2021-08-08 14:29:20 131

原创 docker03:镜像的基本命令

一、帮助命令 docker version 查看docker版本 docker info 查看docker系统信息,包括镜像和容器的数量 docker --help 帮助命令 docker帮助文档地址:https://docs.docker.com/engine/reference/commandline/cli/二、镜像命令 docker images 查看...

2021-08-08 00:04:42 117

原创 docker02:run流程和docker原理

一、docker run流程二、docker运行原理 Docker是怎么工作的: Docker是一个Client-Server结构的系统,Docker的守护进程运行在宿主机上,通过socket从客户端访问 DockerServer接收到DockerClient的指令,就会执行这个命令。三、docker与虚拟机的区别 docker比虚拟机快的原因: 1、do...

2021-08-07 23:15:23 187

原创 Docker01:安装Docker

一、环境准备 1、需要会一点linux基础 2、系统CentOS7 查看环境:uname -r二、安装 1、卸载旧版本以及相关依赖项yum remove docker \ docker-client \ docker-client-latest \ docker-common \ ...

2021-08-07 22:56:25 95

原创 MySQL01:初识MySQL

一、什么是数据库 数据库(DataBase,简称DB) 概念:长期存放在计算机内,有组织,可共享的大量数据的集合,是一个数据的”仓库“作用:保存并能安全管理数据(如:增删改查等),减少数据冗余... 数据库总览: 关系型数据库(SQL): MySQL,Oracle,SQL Server, SQLite, DB2,....... 关系型数据库通过外键关...

2021-08-07 18:02:29 331

原创 git命令汇总

一、为什么使用git 版本控制分为三种:本地版本控制、集中版本控制、分布式版本控制 svn属于集中版本控制共计 git属于分布式版本控制工具,是目前最好的版本控制工具一、git安装 安装包下载:https://git-scm.com/downloads 安装成功后,会自动配置环境变量,任何目录右键都可看到git Git Bash:Linux风格命令行,使用最多 Git CM...

2021-08-07 17:32:13 118

空空如也

空空如也

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

TA关注的人

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