自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(80)
  • 资源 (2)
  • 收藏
  • 关注

转载 【路科V0】systemVerilog基础1——数据类型

数据类型Verilog语言两种基本的数据类型:变量类型(variables)【reg,integer和time等变量类型可以用来存储组合逻辑或者时序逻辑的值。】线网类型(nets)【例如wire,wor,wand和其它线网类型用来连接硬件模块,以及提供特殊的线网驱动解决方案。】这两种类型都是四值逻辑,即可表示0、1、X和Z值。线网类型(nets)线网用于建模硬件设计中的连接线路,而线网的值由线网驱动器所决定。(驱动器可以是门或模块的实例,或者连续赋值的输出。)在这个路科课程中,线网类型用的

2022-05-19 11:25:57 581

转载 Lower power design & UPF 学习

目录Lower power design & UPFC1 – Lower-power design strategies1. Dynamic and Static Power2. 降低功耗的方法3. 标准UPFC2 – Library RequirementsC3 – Power Intent Specification1. UPF中的通配符2. 电源意图概念3. Synopsys 多电压域流程Supply SetsGolden UPF FlowC4 – U

2022-05-19 11:22:55 1388

转载 [转][SoC][DV]关于加快验证收敛的一些方法

关于加快验证收敛的一些方法一、自动生成uvm验证环境uvm_gen二、自动生成agent(UVC/VIP)agent_gen三、模块化设计Clock以及reset的产生clock_agent四、后台磁盘管理并且定期清理logreset_agent五、仿真信息记入数据库(问题追溯)testnamechangelist(tag/label)seeddaterun timestatus六、自动建立fail case的testlist(Regression Fai

2022-04-25 22:55:41 418

转载 [转]怎样在systemverilog DPI中调用SV,C与C++(二)

有的时候需要交互struct,union数据类型,下面举个简单例子。在SV里定义这个一个结构体:typedef struct { int id; string name;} xaction; 同样的,在C里定义同样的结构体,结构体名可以不一致:typedef struct { int id; char* name; } c_xaction;下面把这个结构体传递给C,让C打印出来,SV中做好接口:import "DPI-C" functi

2022-04-25 20:25:03 1084

转载 [转载]SystemVerilog与C/C++语言的接口(SystemVerilog DPI C++)

SystemVerilog DPI C++SystemVerilog DPI (Direct Programming Interface) is an interface which can be used to interface SystemVerilog with foreign languages. These Foreign languages can be C, C++, SystemC as well as others.DPI allows the user to easily call

2022-04-25 20:01:40 451

转载 DPI-C SV与C语言数据类型映射

1、是什么??DPI(Direct Programming Interface),全称直接编程接口,是SV与其它语言(C/C++)交互的接口,基本上是唯一接口了。2、为什么??说完是什么,那么我们可以考虑一下了,为什么需要这个接口呢?或者说为什么SV/UVM需要与其它语言产生交互呢?其实就是SV和C之间的一种转换关系。这就涉及到了一些应用场景,我们可以说几个看看。(1)我们知道,在模块级乃至子系统级的验证,使用SV就完全够用了,而在更上面的层级,例如系统级,多采用大量的C代码组成。那么为了完成.

2022-03-10 15:05:55 4215

转载 如何通过DPI-C连接Verilog/SystemVerilog和C/C++

1. 在Verilog中调用C函数首先:准备好纯C/C++代码。比如:#include int helloFromCpp(int a) { // 0 is 0 // 1 is 1 // 2 is Z // 3 is X int a_int = a; cout << "(C++) a is " << a_int << endl; return 0; }其次:在verilog调用C函数module automatic test;

2022-03-10 14:58:06 1219

转载 SystemVerilog与C語言的接口(SystemVerilog DPI C++)

SystemVerilog DPI C++SystemVerilog DPI (Direct Programming Interface) is an interface which can be used to interface SystemVerilog with foreign languages. These Foreign languages can be C, C++, SystemC as well as others.DPI allows the user to easily call

2022-03-10 14:41:34 658

转载 Systemverilog、C、Verilog与SystemC之间的相互调用方法

这些不同变成语言之间的调用主要包括以下几种方式:1、verilog和c之间的相互调用;2、systemverilog和c之间的相互调用;3、systemverilog中调用systmc;4、通过CPU执行c代码,从而实现Verilog和c的交互第一种,verilog中调用c函数verilog通过PLI(Program Language Interface)调用c函数。这些用户定义的系统任务和函数的名称必须以美元符号""开头。大家用得比较多的PLI函数有" 开头。大家用得比较多的PLI函数有"开头

2022-03-10 14:35:04 3208

转载 数字电路优化设计:如何降低面积和功耗?如何优化电路时序

1、如何降低功耗****?****(1) 优化方向:组合逻辑+时序逻辑+存储(2) 组合逻辑:(a)通过算法优化的方式减少门电路(b)模块复用、资源共享(3) 时序逻辑:(a)尽量减少无用的register:算法优化、模块复用(b)非功能性的register不使用带复位reg:数据打拍(4) 存储:RAM(a)拆分RAM---------降低功耗(b)加大位宽降低访问频率-----------选用低主频高密度RAM—节约面积(c)多端口RAM替

2022-03-01 10:39:50 2119

转载 IC设计:verilog 定位手段

1、Verilog添加定位手段的重要性?Verilog定位手段能够达到以下效果:方便FPGA版本定位、方便样品测试定位、防止他人将无法定位的故障推脱到自己身上。2、添加定位手段的时间?代码中 verilog添加定位手段会增加逻辑资源和面积,所以原则上是越早越好,否则在项目后期布局布线等已经规划好的情况下,会对后端团队造成很大的困扰,导致项目延期。模块代码基本定型后,需要立即添加定位手段FPGA版本出来后,验证功能和性能时,将之前忽略的定位点添加上。3、常见的定位手段有哪些?3.1 重要信号可

2022-03-01 10:34:04 248

转载 IC设计基础001:寄存器读写,读清是如何实现的

1、Soc读写是如何实现的?读有效: mem_rd   读写地址:mem_rw_addr, 读取的数据mem_rd_dat, 读取数据有效:mem_rd_datvld, 写有效 mem_wr, 写数据mem_wr_dat2、读清是如何实现的?代码中data_err_dy实现了读清功能,data_err:1表示有效,存在错误数据,在mem总线读取之前,data_err_dy一直保持为1,mem总线读取后,将data_err_dy清零。module soc_mem_wr ( inpu

2022-03-01 10:32:33 1522

转载 同源时钟、同相位时钟、同时钟域时钟

同源时钟、同相位时钟、同时钟域**1、**什么是同相位时钟同相位时钟可以频率不同,但是时钟跳变沿是对齐的。如图所示,clk0为慢时钟,clk1为快时钟,clk0的时钟沿始终与clk1的时钟沿对齐,两个时钟相位相同。**2、**同源时钟同源时钟,通常由一个PLL或者DLL产生,相位不需要相同,只要求相位固定。**3、**同时钟域时钟同时钟域的时钟既是同源时钟,还要求相位相同并且频率相同,通常是同一个PLL产生的频率相同相位相同的时钟,PLL能够保证两个时钟在不同的情况下(如温度不同)的偏差在精度

2022-03-01 10:22:04 1287

转载 跨时钟设计000-----整体介绍

**1、**单bit信号1) 电平信号:采用两级寄存器同步,7nm工艺常用三级同步寄存器同步2/3级同步器采用定制的寄存器模块,寄存器之间的延时很低,有效降低了亚稳态传播概率。2) 脉冲信号:单周期脉冲信号采用脉冲同步器,首先确保源时钟的单周期脉冲能被目的时钟采道,目的时钟进行采样后经过组合逻辑产生目的时钟域的单脉冲。缺点:两次脉冲间隔必须大于同步所需时间,否则会有脉冲无法采样。a. 快时钟采样慢时钟:时钟频率相差近较大则不用扩展,快时钟采用后经过组合逻辑产生.

2022-03-01 10:17:37 113

转载 UVM的基本教程

文章目录一、基本介绍二、在实践中学习1.接口interface2.待测设计DUT3.传输数据包transaction4.序列sequence5.序列器sequencer6.驱动器driver7.监视器monitor8.代理agent9.记分板scoreboard10.仿真环境env11.测试用例test12.顶层top13.参考模型reference mode和直接编程接口(DPI)14.简单的makefile代码附件一、基本介绍通用验证方法学UVM(Un

2022-02-23 21:31:29 4223

转载 vivado2020.1 vitis基础使用

vivado2020.1的SDK是不是找不到了?对的,他已经摇身一变,集成进入了vitis,那么他如何使用?以及常见的问题?我们汇总一下:1.你的工程中一定要包含最小系统中所需的microblaze+uart,其他的IP酌情添加,然后到处xsa文件:然后就一路next直到finish.2.手动找到vitis的快捷方式进入vitis(vivado中已经没有launch选项了,只能手动登录):等待进度条跑完,我们就进入了vitis的主界面。接下来我就不会配那么多文字了,按照图片一页一页操

2022-02-21 20:35:44 5736

转载 如何阅读大型设计代码

最近刚刚接到一个有关CAN总线控制器的程序,领导只是说先看,但没说看完之后要干嘛,猜测可能是后面需要调试板卡对接通信。由于之前没有了解过CAN总线,因此这又是一次从零开始的摸索。之前自己写过的程序虽然也不比这个程序的规模小,但是困难主要存在于以下几点:CAN总线的概念不了解(理论知识)不清楚该CAN总线控制器模块的功能和通信对象这是别人写的程序(编写习惯、命名习惯等),阅读起来有难度一、了解概念对于第一点,通常阅读相关理论介绍的博客,配合知网上面相关硕博士论文的引言加前两章理论背景介绍就可

2022-02-20 16:27:39 210

转载 对于编程的感受

求学多年,想当初在刚上大学时候学习C语言感到头脑爆炸,而后对于编程始终存在一种潜意识的恐惧心理,导致在学习的时候,也一直存在一种“自己不是这块料”的挫败感。后来跟着老师和师兄做项目,也是在不得已的情况下,开始了硬着头皮的编程之路。一开始和之前一样,找了一本语法书开始“书呆子”式地学习,总是觉得语言学得差不多了才敢开始上手干活。而后的半年,在开始了实际上手编程之后,尽管进展缓慢,逐渐养成了一种思维习惯,那就是以目标为导向的学习方式。就是说,我为什么要学习某一个东西?是为了完成某一个目标。那就是说,我只要学

2022-02-20 16:25:50 370

转载 [转]git-报错总结-fatal: ‘origin‘ does not appear to be a git repository

1、在push时候报错,‘origin’ does not appear to be a git repository…但是我的库是有的,检查分支也能检查到分支,就是push时候报错。可能两种原因,没有关联(添加关联),或者添加错误(重新关联)$ git push -u origin masterfatal: 'origin' does not appear to be a git repositoryfatal: Could not read from remote repository.是因

2022-02-17 15:19:00 6206

转载 [转](五)在 GitHub 上创建文件

创建文件下面,让我们在本地新建一个文件,最后上传到刚刚创建的仓库中。现在的你在 Linux 中创建文件,应该很轻车熟路了吧:mkdir Democd Demogedit README.mdcopy然后在打开的文件中输入 #Demo,保存文件后关闭 gedit 。用 cat 命令查看一下文件内容:创建文件 OK 了,但现在,Demo 目录还只是一个普通的目录,我们如何用 Git 来控制这个目录?你只需在 Demo 目录中,输入 git init 即可。git init这是 Gi

2022-02-17 14:31:05 873

转载 [转](四)在 GitHub 上创建仓库

终于我们到了最激动人心的时刻了,在 GitHub 上创建第一个仓库下面,我们通过一次上传 Github 的完整操作,实践学习 Git 的常用功能。首先,申请一个 Github 账户打开 GitHub,你可以在主页的 banner 上快速注册,或者点击右上角的 Sign up 注册。下一步,我们选择创建一个免费账户。下一步,回答两个问题,也可以在最下面选择跳过:最后,去注册邮箱中接收验证邮件,验证后,自动用新注册账户登录,进入 Github 主页。第二步,我们来新建一个代码仓库仓库(

2022-02-17 11:13:32 2840

转载 [转](三)Git的安装

Git 是一个版本控制系统,可以理解为一个工具,使用之前必须得先下载安装,所以第一步必须要安装。现在已经有windows版本的Git——Git for windows。在windows操作系统也能轻松用上Git。Windows:Git For WindowsMac系统安装:git-osx-installerLinux:在终端输入命令行安装Debian系列:apt-get install gitFedora上:yum install git-core环境中装了 Git,打开 终端 ,输入 gi

2022-02-17 11:05:45 200

转载 [转](二)Git 与 GitHub 的历史

Linux 之父 林纳斯(Linus) 在 1991 年创建了开源的 Linux 系统,随着 Linux 代码量越来越大,合并志愿者提交的代码已经无法依靠人工完成,所以 林纳斯 选择了商业的管理软件 BitKeeper ,来管理 Linux 的代码版本。在 2005 年,BitKeeper 公司发现,有 Linux 社区的人试图破解 BitKeeper 软件,他们决定收回 Linux 社区的免费使用权。林纳斯 对此事调解数周无果,决定自己搞一个。他花了十天时间用 C 语言写好了一个开源的版本控制系统,就是

2022-02-17 11:04:29 3106

转载 (一)Git和Github介绍

你来了,快坐下,今天我们来讲讲编程界的两大神器: Git 和 Github。Git 和 Github 都是程序员每天都要用到的东西 —— 前者是目前最先进的 版本控制工具,拥有最多的用户,且管理着地球上最庞大的代码仓库;而后者是全球最大 同性交友 代码托管平台、开源社区。如果你之前没接触过「版本控制」的概念,看到这里一定是一脸 xx 的,别急,看了这篇文章你一定能明白:什么是版本控制简单复述一下文章中的例子:大四毕业生 小张 在写 毕业论文,他经常删删改改,有时还会后悔“昨天那个思路那么好,我怎么

2022-02-17 10:04:41 1215

转载 C语言中符号表示什么意思?

C语言中>>=,<<=,&=,^=,|=分别表示什么意思?举例说明1、C语言中的 >>= 意思为:右移后赋值代码示例为:x = 8;x >>= 3;右移后结果为:00000000 00000000 00000000 000000012、C语言中的 <<= 意思为:左移后赋值代码示例为:x = 8;x <<= 3;左移后赋值结果为:00000000 00000000 00000000 010000003、C

2022-02-15 19:28:32 5024

转载 [转]浅谈可移植激励规范(PSS)复用策略

译者按 :当今硬件设计变得愈加复杂,如何创建出足够的测试来保证设计的正确性是每个硬件工程师需要面对的问题。Accellera的可移植激励测试规范(PSS、又称便携激励标准)[1]旨在希望能够提供一个独立的测试来源,从而实现跨层级的验证复用,即无论是IP级别、子系统、还是SoC级都使用同样的测试来源,他们也希望提供一系列功能来解决不同级别对于验证测试的不同要求,从而达到真正意义上的复用。然而,即使是像Java和C++这样拥有强大的面向对象特性的编程语言,都不能直接保证我们能得到高质量的可复用的代码,PSS本.

2022-01-05 15:31:14 629

转载 [转]Systemverilog中的iff事件控制

使用systemverilog已经有一段时间了,主要是其中的部分新特性能够简化代码的编写,比如interface、支持多维端口等。为了进一步深入学习systemverilog,最近抽空更广泛的学习了一些systemverilog的内容。本文记录一下Systemverilog中的事件控制和sequence控制相关内容的学习情况。Systemverilog在@事件控制中添加了iff修饰词,只有当iff后的条件为真时,@事件才会触发。注意,iff可以在always和always_ff下使用,但是不能在alway

2021-12-29 19:41:15 779

转载 [转]寄存器模型概览

一、寄存器模型概览寄存器是模块之间互相交谈的窗口,一方面可以通过读出寄存器的状态,获取硬件当前的状况,另外一方面也可以通过配置寄存器,使得寄存器工作在一定的模式下。在验证的过程中,寄存器的验证也排在了验证清单的前列,只为只有首先保证寄存器的功能正确,才会使得硬件与硬件之间的交谈是“语义一致”的。如果寄存器配置结果与寄存器配置内容不同,那么硬件无法工作在想要的模式下,同时寄存器也可能无法正确反映硬件的状态。硬件中的各个功能模块可以由处理器来配置功能以及访问状态,而与处理器的对话即是通过寄存器的读写来实现

2021-12-21 21:10:56 504

转载 [转]序列组件的互动

一、序列组件的互动sequence对象会产生目标数量的sequence item对象。借助于SV的随机化和sequence item对随机化的支持,使得产生的每个sequence item对象中的数据内容都不相同。产生的sequence item会经过sequencer再流向driver。driver陆续得到每一个sequence item,经过数据解析,将数据按照与DUT的物理接口协议写入到接口上,对DUT形成有效激励。当有必要时,driver在每解析并消化完一个sequence item后,

2021-12-19 20:33:25 97

转载 [转]Sequence的层次化

一、概述就水平复用而言,在MCDF各个子模块的验证环境中,它指的是如何利用已有资源,完成高效的激励场景创建。而就垂直复用来看,它指的是在MCDF子系统验证中,可以完成结构复用和激励场景复用两个方面。无论是水平复用还是垂直复用,激励场景的复用很大程度上取决于如何设计sequence,使得底层的sequence实现合理的粒度,帮助完成水平复用,进一步依托于底层激励场景,最终可以实现底层到高层的垂直复用。二、Hierarchical Sequence介绍在验证MCDF的寄存器模块时,将SV验证环境进化到了

2021-12-19 20:32:42 327

转载 [转]Sequencer和Sequence

一、sequence和item发送实例class bus_trans extends uvm_sequence_item; rand int data; `uvm_object_utils_begin(bus_trans) `uvm_field_int(data, UVM_ALL_ON) `uvm_object_utils_end ...endclassclass child_seq extends uvm_sequence; `uvm_object_utils(child_seq);

2021-12-19 20:31:57 336

转载 [转]Sequencer和Driver

一、概述driver同sequencer之间的TLM通信采取了get模式,即由driver发起请求,从sequencer一端获得item,再由sequencer将其传递至driver。作为driver,永远停不下来,只要它可以从sequencer获取item,它就一直工作。sequencer和item只应该在合适的时间点产生需要的数据,而至于怎么处理数据,则会由driver来实现。为了便于item传输,UVM专门定义了匹配的TLM端口供sequencer和driver使用:uvm_seq_item_p

2021-12-19 20:31:14 408

转载 [转]Sequence和Item

一、概述sequence指的是uvm_sequence类,而item指的是uvm_sequence_item类。对于激励生成和场景控制,是由sequence来编织的,而对于激励所需要的具体数据和控制要求,则是从item的成员数据得到的。二、Sequence Item介绍item是基于uvm_object类,这表明了它具备UVM核心基类所必要的数据操作方法,例如copy()、clone()、compare()、record()。item根据数据成员的类型,将划分为:控制类。例如总线协议上的读写

2021-12-19 20:30:25 612

转载 [转]同步通信元件

一、概述SV用来做线程同步的几种元件,它们分别是semaphore、event、mailbox。在UVM中,需要同步线程不再只局限于同一个对象中,还需要解决不同组件之间的线程同步问题。一旦线程同步要求发生在不同组件,这就要求组件之间可以通过某种方法来实现同步。考虑到UVM组件封闭性原则,最好不要通过层次索引的形式在组件中索引公共的event或者semaphore,UVM为了解决封闭性的问题,定义了如下的类来满足组件之间的同步要求:uvm_eventuvm_event_pooluvm_even

2021-12-19 10:42:19 95

转载 [转]同步通信元件

一、概述SV用来做线程同步的几种元件,它们分别是semaphore、event、mailbox。在UVM中,需要同步线程不再只局限于同一个对象中,还需要解决不同组件之间的线程同步问题。一旦线程同步要求发生在不同组件,这就要求组件之间可以通过某种方法来实现同步。考虑到UVM组件封闭性原则,最好不要通过层次索引的形式在组件中索引公共的event或者semaphore,UVM为了解决封闭性的问题,定义了如下的类来满足组件之间的同步要求:uvm_eventuvm_event_pooluvm_even

2021-12-19 10:41:40 224

转载 [转]TLM2通信

一、概述TLM是一种为了构建更高级抽象模型的传输方式。虽然SV语言本身没有原生的TLM传输方式,但是TLM在UVM很好地集成进来,并且在组件传输中得到了充分运用。伴随着SystemC模型的广泛引用,SystemC通信机制TLM2.0业发展起来,成为SystemC模型之间的核心传输方式。TLM协议本身并不依赖于某一种语言,而是可以跨语言来实现其传输标准。与TLM1.0相比,TLM2.0提供了更丰富更强大的传输特性,主要包括:双向的阻塞或者非阻塞接口、时间标记、统一的数据包。通过这些特性,TLM2.0

2021-12-19 10:41:01 347

转载 [转]通信管道

一、概述TLM通信的实现方式有一个共同的地方即都是端对端的,同时target一段需要实现传输方法,例如put()或者get()。对于monitor、coverage collector等组件在传输数据时,会存在一端到多端的传输。二、TLM_FIFO在一般TLM传输过程中,无论是initiator给target发起一个transaction,还是initiator从target获取一个transaction,transaction最终都会流向consumer中。consumer在没有分析transa

2021-12-18 20:18:34 140

转载 [转]多向通信

一、概述多向通信这种方式服务的仍然是两个组件之间的通信,而不是多个组件之间的通信,毕竟多个组件的通信r仍然可以由基础的两个组件的通信方式来构建。多向通信指的是,如果initiator与target之间的相同TLM端口数目超过一个时的处理解决办法。comp1有两个uvm_blocking_put_port,而comp2有两个uvm_blocking_put_imp端口。对于端口例化可以给不同名字,连接也可以通过不同名字来索引,但问题在于comp2中需要实现两个task put(itrans t),

2021-12-18 20:17:29 142

转载 [转]单向通信

一、概述单向通信指的是从initiator到target之间的数据流向是单一方向的,或者说initiator和target只能扮演producer和consumer中的一个角色。在UVM中,单一数据流向的TLM端口有很多类型:uvm_blocking_put_PORTuvm_nonblocking_put_PORTuvm_put_PORTuvm_blocking_get_PORTuvm_nonblocking_get_PORTuvm_get_PORTuvm_blocking_peek_P

2021-12-18 16:53:05 213

转载 [转]TLM通信

一、概述在芯片开发流程中,系统原型和芯片验证对项目的助推起到了关键作用。系统原型一般是通过硬件功能描述文档来模拟硬件行为,而行为要求不同于RTL模型。系统原型可以提供一个准确到硬件比特级别、按照地址段访问、不依赖于时钟周期的模型,该模型通常基于SystemC语言,而系统原型中各个模块通过TLM可以实现宽松时间范围内的数据包传输。芯片验证是在RTL模型初步建立之后,通过验证语言和方法学来构建验证平台。该平台的特点是验证环境整体基于面向对象开发,组件之间的通信基于TLM,而在driver与硬件接口之间需

2021-12-18 16:52:23 601

fifo_UVM.zip

数字IC验证初学入门者,UVM验证方法学,异步FIFO

2021-08-14

PIC18F45K20单片机数字钟工程原理图+C语言代码

PIC18F45K20单片机数字钟工程原理图+C语言代码,可以显示调整年月日时分秒的信息,以及有秒表功能。

2018-10-20

空空如也

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

TA关注的人

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