自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 UVM实战CH2:10 验证平台加入reference model

验证平台加入reference modelreference model用于完成和DUT相同的功能,输出被scoreboard接受,用于和DUT的输出比较代码分析my_model 代码`ifndef MY_MODEL__SV`define MY_MODEL__SVclass my_model extends uvm_component; //声明两个接口,用以和monitor和scoreboard传输数据 uvm_blocking_get_port #(my_transac

2021-07-18 18:37:05 5705

原创 UVM实战CH2:09 把monitor和driver封装成agent

把monitor和driver封装成agentmonitordriver和monitor处理的是同一种协议。由于二者相似,UVM中将二者封装在一起,成为一个agent。不同的agent就代表了不同的协议my_agent代码`ifndef MY_AGENT__SV`define MY_AGENT__SVclass my_agent extends uvm_agent ;//所有的agent都要派生自uvm_agent类 my_driver drv; my_monito

2021-07-11 14:20:01 653

原创 UVM实战CH2:08 验证平台加入monitor

验证平台加入monitormonitor验证平台中实现监测DUT输入输出信号的组件是monitordriver把transaction数据变为dut端口信号,而monitor把dut端口信号变为transaction交给reference model 和scoreboard等组件monitor代码`ifndef MY_MONITOR__SV`define MY_MONITOR__SVclass my_monitor extends uvm_monitor;//所有的monitor类应该派

2021-07-11 11:37:21 2549

原创 UVM实战CH2:07 验证平台加入env

验证平台加入env加入env在验证平台中加入reference model、scoreboard等组件后需要考虑对它们进行实例化,在top_tb中使用run_test已经不合适,因为run_test只能创建一个实例。而显式地例化这些组件与run_test例化的对象不属于同一个层次结构。解决方案:引入一个容器类,在这个容器类中实例化化driver、monitor、reference model和scoreboard等,而使用run_test创建这个容器类的实例。这个容器类称为uvm_envmy_env

2021-07-10 23:45:36 385

原创 UVM实战CH2:06 验证平台加入transaction

加入transactiontransactiontxd <= rxd;tx_en <= rx_dv;之前driver中的操作都是信号级的。在reference model、monitor、scoreboard等验证平台组件之间,信息的传递是基于transaction的物理协议中的数据交换都是以帧或者包为单位的,transaction就是用于模拟这种实际情况通常在一帧或者一个包中要定义好各项参数,每个包的大小不一样transaction代码以以太网为例,每个包的大小至少是64

2021-07-10 22:58:45 829 3

原创 UVM实战CH2:05 验证平台加入virtual interface

验证平台加入virtual interface加入virtual interfacetop_tb.rxd <= 8'b0; top_tb.rx_dv <= 1'b0;@(posedge top_tb.clk);之前driver中等待时钟事件、给DUT中输入端口赋值都是使用绝对路径绝对路径的使用大大减弱了验证平台的可移植性避免在验证平台中使用绝对路径方法1:使用宏`define TOP top_tb使用场景有限避免绝对路径的另外一种方式是使用interface使

2021-07-10 22:03:06 759

原创 UVM实战CH2:04 验证平台加入objection机制

验证平台加入objection机制objection机制my_driver中的main_phase是一个完整的任务,上节输出了“main_phase is called”,但是“data is drived”并没有输出。main_phase执行过程中中止。UVM中通过objection机制来控制验证平台的关闭UVM会检查是否有objection被提起(raise_objection),如果有,那么等待这个objection被撤销(drop_objection)后停止仿真;如果没有,则马上结束当前

2021-07-09 22:53:52 270

原创 UVM实战CH2:03 验证平台加入factory机制

验证平台加入factory机制factory机制上节代码initial begin my_driver drv; drv = new("drv", null); drv.main_phase(null); $finish();endtb中my_driver的实例化及drv.main_phase的显式调用与uvm并没有关系factory机制:自动创建一个类的实例并调用其中的函数(function)和任务(task)代码分析my_driver`ifnde

2021-07-09 22:28:20 205

原创 UVM实战CH2:02 只有driver的简单验证平台

只有driver的简单验证平台代码分析DUTDUT功能:通过rxd接收数据,再通过txd发送出去;rx_dv是接收的数据有效指示,tx_en是发送的数据有效指示module dut(clk, rst_n, rxd, rx_dv, txd, tx_en);input clk;input rst_n;input[7:0] rxd;input rx_dv;output [7:0]

2021-07-08 23:49:47 391

原创 UVM实战CH2:01 验证平台的组成

验证平台的组成简单验证平台driver:给DUT施加各种激励scoreboard:根据DUT的输出来判断DUT的行为是否与预期相符合monitor:收集DUT的输出并把它们传递给scoreboardreference model:验证平台要模拟DUT行为给出预期结果典型UVM验证平台在UVM中,引入了agent和sequence的概念基于接口协议一致和验证平台复用性考虑...

2021-07-08 22:58:58 235

原创 00-uvm仿真环境建立

最近在学习张强的《uvm实战》,想要仿真一下书中的代码,建立仿真环境。平台:windows软件:Questasim 10.6c代码来源于《UVM实战》(卷一)以一个简单的仅有driver的UVM平台为例建立仿真环境参考资料:UVM学习-仿真环境的搭建modelsim 10.4 UVM 仿真流程这里为了节约时间选择了windows平台,但实际工作中使用的是vcs和NCsim,后续需要在Linux平台上实践这些。具体步骤新建一个文件夹,这里为uvm_test。文件夹里准备好3个文件

2021-07-05 23:52:20 965 1

原创 Python编程从入门到实践:CH9 类

创建和使用类创建和使用类创建类的示例class Dog(): """一次模拟小狗的简单尝试""" def __init__(self, name, age): """初始化属性name和age""" self.name = name self.age = age def sit(self): """模拟小狗被命令时蹲下""" print(self.name.title() + " is now sitting.") def roll_over(self): """模

2021-07-04 11:23:20 78

原创 Python编程从入门到实践:CH8函数

定义函数使用关键字def来定义一个函数指出函数名括号内指出函数需要的信息定义以冒号结尾冒号后的缩进行构成了函数体函数中可使用""“文档字符串”""来描述函数功能def greet_user(): """显示简单的问候语""" print("Hello!")greet_user()向函数传递信息def greet_user(username): """显示简单的问候语""" print("Hello, " + username.title() + "!

2021-07-04 09:14:56 162

原创 Python编程从入门到实践:CH7 用户输入和while循环

函数input()函数input()让程序暂停运行,等待用户输入一些文本。获取用户输入后,Python将其存储在一个变量中message = input("Tell me something, and I will repeat it back to you: ")使用int()来获取数值输入函数input() 将用户输入解读为字符串函数int()将数字的字符串表示转换为数值表示height = input("How tall are you, in inches? ")height

2021-07-03 22:49:28 83

原创 Python编程从入门到实践:CH6字典

Python字典定义字典是一系列键—值对使用键来访问与之相关联的值。与键相关联的值可以是数字、字符串、列表乃至字典键和值之间用冒号分隔,而键—值对之间用逗号分隔alien_0 = {'color': 'green', 'points': 5}使用字典访问字典中的值依次指定字典名和放在方括号内的键 alien_0 = {'color': 'green'}print(alien_0['color'])添加键-值对字典是一种动态结构添加键—值对,可依次指定字典名、用方括号

2021-07-03 22:09:13 91

原创 Python编程从入门到实践:CH5 IF语句

条件测试if语句的核心是值为True或False的表达式如果条件测试的值为True,Python就执行紧跟在if语句后面的代码;如果为FalsePython就忽略这些代码检查是否相等= 号为赋值使用, == 号为比较是否相等检查是否相等时区分大小写如果不考虑大小写,使用lower()检查是否不相等结合使用惊叹号和等号(!=)比较数字检查多个条件使用and检查多个条件使用or检查多个条件检查特定值是否包含在列表中使用关键字 in检查特定值是否不包含在列表中使用关键字

2021-07-01 22:31:32 95

原创 Python编程从入门到实践:CH4操作列表

遍历列表遍历列表的所有元素,对每个元素执行相同的操作使用for循环magicians = ['alice', 'david', 'carolina']for magician in magicians: print(magician)在for循环中,可对每个元素执行任何操作 print(magician.title() + ", that was a great trick!")在for循环后面,没有缩进的代码都只执行一次,而不会重复执行缩进错误Python根据缩进来判断

2021-07-01 22:08:10 82

原创 Python编程从入门到实践:CH3列表简介

1.列表定义列表由一系列按特定顺序排列的元素组成用方括号([])来表示列表,并用逗号来分隔其中的元素bicycles = [‘trek’, ‘cannondale’, ‘redline’, ‘specialized’]print(bicycles)访问列表元素访问列表元素,可指出列表的名称,再指出元素的索引,并将其放在方括号内bicycles = [‘trek’, ‘cannondale’, ‘redline’, ‘specialized’]print(bicycles[0])

2021-06-25 23:21:09 109

原创 Python编程从入门到实践:CH2 变量和简单数据类型

3个概念:数据类型、变量、使用变量1.print函数print(******) 看到print字,就会将括号种的内容打印,不会管括号种的内容是什么2.变量变量:每个变量都存储了一个值,在程序中可随时修改变量命名使用规则:只能包含字母、数字和下划线,且以字母或下划线打头不能包含空格,但可使用下划线来分隔其中的单词不能将Python关键字和函数名用作变量名使用变量名时常见错误:变量名拼写错误message = “Hello Python Crash Course reader

2021-06-25 22:51:08 98

原创 Python编程从入门到实践:CH1

书籍:Python编程 从入门到实践时间:2021.06.25chapter1:软件:pycharm python3.0 windows1.终端窗口解释器-print(***)语句print(“Hello world!”)2.环境3种环境linux windows macos3.python环境与文本编译器

2021-06-25 22:16:14 56

空空如也

空空如也

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

TA关注的人

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