UVM知识点摘记(Ch4)
Ch4 UVM中的TLM1.0通信TLM1.0一、现有通信的问题及验证平台内部的通信。
两个component直接如果需要通信的话,有许多方法可以实现。
方法一:全局变量、public变量。这类方法的弊端是单个模块内修改了变量通信就失败了。
方法二:第三方类参与。弊端是第三方类的派生类可能改变变量。
方法三:SV中的mailbox等通信机制。缺点是通信代码建立相对比较麻烦。
通信中还有阻塞、非阻塞的问题。通信是比较复杂的。UVM针对这种问题,使用TLM通信。在component之间建立通道,让信息只能在这个通道内流动,同时赋予阻塞、非阻塞的特性。
二、TLM
TLM(Transaction Level Model)事务级建模。所谓transaction level是相对DUT各个模块之间信号线级别的通信来说的。单来说,一个transaction就是把具有某一特定功能的一组信息封装在一起而成为的一个类。如my_transaction就是把一个MAC帧里的各个字段封装在了一起。
TLM常用术语:
1)put操作:通信的发起者A把一个transaction发送给B。在这个过程中,A称为“发起 ...
UVM知识点摘记(Ch3)
CH3 UVM基础
本章节各节之间没有关联,属于几个知识点的罗列讲解。
3.1 uvm_component与uvm_objectuvm_component和uvm_object是UVM的两个类。如UVM类图所示,uvm_object是由uvm_object所派生出来的,也就是说uvm_object具有比uvm_component更多的特性,属于更详细的类。
比较形象的例子:
uvm_object是一个分子,用这个分子可以搭建成许许多多的东西, 如既可以搭建成动物, 还可以搭建成植物,更加可以搭建成没有任何意识的岩石、空气等。uvm_component就是由其搭建成的一种高级生命, 而sequence_item则是由其搭建成的血液,它流通在各个高级生命(uvm_component)之间,sequence则是众多sequence_item的组合,config则是由其搭建成的用于规范高级生命( uvm_component)行为方式的准则。
需要说明的是,此处
uvm_object指uvm_object本身、及其所派生出来的部分类(UVM类树左侧分支,uvm_transacti ...
UVM知识点摘记(Ch2)
UVM知识点摘记(Ch2)
摘记一些UVM知识点,或者自己的理解。备忘,用于查阅。
如:config_db的用法,phase机制的顺序。
系统章节的笔记另开,会有重复。
Ch2 一个简单的UVM验证平台2.2 只有driver的验证平台2.2.1 最简单的验证平台1、UVM是一个库,在这个库中,几乎所有东西都是使用类(class)来实现的。
2、使用UVM的第一条原则是:验证平台中所有的组件应该派生自UVM中的类。
3、所有派生自uvm_driver的类的new函数有两个参数, 一个是string类型的name, 一个是uvm_component类型的parent。
name是这个类的名字,parent在例化时指定,一般是UVM树父节点的名字,通常在父节点中例化,所有parent为this。
在写构造函数时,只写name(在例化时一般指定为drv了),parent设置为null。
4、uvm_info宏,与Verilog中display语句功能类似。验证平台中尽量使用uvm_info取代display。
1`uvm_info("my_driver", &q ...
UVMDemo学习笔记(一个简单的UVM验证平台)
UVMDemo学习笔记
UVM实战:一个简单的UVM验证平台
[TOC]
跑通Demo使用2.5.2的例子作为文件。需要对应自己的环境进行修改,修改如下。
1、setup.vcs修改
对应修改到bash shell下,参照~/.bashrc修改即可,很简单。
对应修改VCS_HOME等自己实际的环境变量
bash和csh都是shell脚本语言。
Linux终端的核心组件是Shell,它是一个解释器,负责解析用户输入的命令并将其发送给操作系统执行。Linux中有多种Shell可用,其中最常见的是Bash(Bourne Again Shell),它是许多Linux发行版的默认Shell。其他常见的Shell包括csh。
bash 的 shell 默认用户下面的配置文件是:.bashrc, 用户登陆之后,默认执行该配置文件内容,让环境变量生效;csh 的 shell 默认用户下面的配置文件是:.cshrc, 用户登陆之后,默认执行该配置文件内容。很多脚本文件在第一行都需要指定所使用的shell,如:#!/bin/bash
为什么有的terminal使用bash,而有的终 ...
Windows下Gvim安装与配置-续
Windows下Gvim安装配置指南1 Gvim安装1)第三方软件安装
使用腾讯电脑管家下载,只需搜索,点击安装即可,操作简单。
2)官网安装
在vim官网下载,可选各个操作系统的版本。vim官网:Link
下载安装包,按照常规安装步骤安装。
Gvim安装完成后初始打开是下图这样的,下面会按照==a-b-c==步骤进行配置。
配置完成后是下图这样的,用来做开发还是很很高效的。
==最后再截图==
2 基础配置配置文件是Gvim安装目录下的_vimrc文件。一个个介绍,整体配置在此节末。
0)设置行号显示、颜色风格、语法支持
1234set nu!colorscheme desertsyntax enablesyntax on
设置前后对比如下图。
1)设置字体题号
1set guifont=coutier_new:h10
set就是配置的语法,字体字号就是通用的。修改前后对比如下图所示。coutier_new是一个等宽字体。
2)设置Tab缩进
12set expandtab &qu ...
DV虚拟机配置
DV虚拟机配置
主要是配置,没什么知识内容,都是步骤。虚拟机来自芯王国。VMWare安装在此不赘述。
Step1:下载解压从芯王国公众号获取,内容在百度网盘上。下载完成后是4部分压缩包,直接解压zip后缀文件就行,会自动解压其他分包。解压后占46.6G磁盘空间。
Step2:打开虚拟机点击“打开虚拟机”
选中解压路径下的IC_EDA.vmx
点击“开启此虚拟机”。
重要步骤! 重要步骤! 重要步骤!
==这里弹出窗口,一定要选:“我已移动虚拟机”,不然会影响到license激活。亲测!==
开机成功如图,密码为2022,自行修改成习惯的。感谢:cheese:
建议原始的虚拟机设置一个还原点,后期出了问题可以直接恢复。
Step3:资源位置EDA软件都安装在home目录下,查看:
其中:
ICer:用户个人文件夹,子目录ic_prjs是一些例程
ic_libs:工艺库,暂时学习工作不涉及
mentor: Mentor系列工具,questasim10.7c(带UVM)
Riscv_Tools:32位Riscv工具链,暂时学习工作 ...
SV学习-数据类型
SV-数据类型
VCS常用操作
VCS常用操作
主要参考:
1、VCS User Guide 2020
2、知乎专栏
1 VCS简介VCS全称为 verilog compiled simulator ,是编译型Verilog模拟器,它完全支持OVI标准的Verilog HDL语言、PLI和SDF。 VCS具有目前行业中最高的模拟性能,其出色的内存管理能力足以支持千万门级的ASIC设计,而其模拟精度也完全满足深亚微米ASIC Sign-Off的要求。
vcs用于编译Verilog/SystemVerilog、生成仿真波形、覆盖率等。
仿真波形有VCD+和fsdb( Fast Signal DataBase )两种,其中fsdb需要结合Verdi产生及使用。
VCS_MX为mixed hdl仿真器,支持vhdl+verilog+sv的混合仿真。vcs则是纯verilog的。当然,目前vcs也是有sv支持的。它们在feature上唯一的区别在于对vhdl的支持。 当然,如果没有vhdl的设计或者验证还是VCS好些,速度略好。
2 VCS FlowVCS有两种flow,两步式(Two-step Flow )和三 ...
Linux常用操作
Linux常用操作
仅为针对自己工作中常用命令进行总结记录。
包括常用命令及知识
定制指令 .bashrc是home目录下的一个shell文件,用于储存用户的个性化设置。在bash每次启动时都会加载.bashrc文件中的内容,并根据内容定制当前bash的配置和环境。
在 shell启动文件~/.bashrc中添加一些定制指令:
123456alias gv="gvim"alias g="gvim -p"alias la="ls -a"alias lla="ll -a"alias ..="cd ../"alias gt="/usr/bin/gnome-terminal --tab&"
也可在~/.bashrc设置环境变量,如:
123456789export VERDI_HOME=/home/synopsys/verdi/Verdi_O-2018.09-SP2export SCL_HOME=/home/synopsys/scl/2018.06export ...
Gvim常用操作
Gvim常用操作[TOC]
1 前言这篇笔记是vim使用记录。以前实习时用了半年多,从生疏到熟悉也花了一些时间,主要还是用到什么不会的就去百度一下。相关操作用的多了就还是很熟悉的。此外,长期使用后体会到gvim编辑器coding的效率是极高的。回到学校后在自己的windows上也安装了gvim,也在开发中使用。现在长时间不操作现在有些遗忘。
现在工作,决定整理出一个gvim常用操作的文档,可以在自己遗忘快速查阅,也可以共享于他人学习。
此篇笔记不涉及gvim及其插件的安装,默认已安装。
2 认识vimvi/vim是Linux平台下常用的文本编辑器。
不同于Windows平台下的文本编辑器。如下图所示,vim分为三个工作模式:
1 命令模式
这是进入vim默认的模式。在该模式下可以直接输入命令对文本进行笔记。
如:按下键盘yy,则复制了光标所在行。再按下键盘p,则将寄存器里的文本粘贴到光标的下一行。
2 输入模型
输入模式下,就是通过键盘进行文本编辑。
进入输入模式有三种方法:键入i、a、o。区别在于,键入i进入输入模式时,光标在选中字符前。键入a进入输入模式时,光标在选中字符 ...