10 2021 档案

[CU]factory机制6-factory机制重载的原理
摘要:1.factory机制的重载功能 (1)在实例化时,UVM会通过factory机制在内部的一张表格中查看是否有相关的重载记录. 当查到有重载记录时,会使用新的类型代替旧的类型. (2)通常会在env或者具体的case中使用override功能; 1 class case_x extends base 阅读全文

posted @ 2021-10-31 17:07 知北游。。 阅读(268) 评论(0) 推荐(0) 编辑

[CU]factory机制5-factory机制创建实例的原理
摘要:资料来源: (1)公众号-芯片学堂; 注1:与[CU]factory机制3-factory机制创建实例(create_object/component_by_type/name) - __见贤思齐 - 博客园 (cnblogs.com)内容略有重叠,但侧重点不同; 1.factory机制相关宏 [C 阅读全文

posted @ 2021-10-31 16:30 知北游。。 阅读(165) 评论(0) 推荐(0) 编辑

[CU]factory机制4-factory机制重载的前提,方式,复杂重载,常用重载(factory机制重载)
摘要:1. factory机制重载的前提 (1) 无论是重载的类(extended class)还是被重载的类(base class),都要在定义时注册到factory机制中. (2) 被重载的类(base class)在实例化时,需要使用factory机制式的实例化方式,而不是传统的new方式. (3) 阅读全文

posted @ 2021-10-31 16:16 知北游。。 阅读(292) 评论(0) 推荐(0) 编辑

[CU]factory机制2-factory机制之用于类注册的宏(factory机制-注册)
摘要:1. 用于factory注册的宏 注:宏实现类的注册; 1.1. `uvm_object_utils 1 `define uvm_object_utils(T) \ 2 `uvm_object_utils_begin(T) \ 3 `uvm_object_utils_end 1 `define uv 阅读全文

posted @ 2021-10-31 15:31 知北游。。 阅读(167) 评论(0) 推荐(0) 编辑

[CU]factory机制1-factory机制的功能,本质,使用与调试,原理的反思
摘要:1.factory机制的功能 (1) factory机制的典型功能是创建类的实例和重载. 2.factory机制的本质 (1) factory的本质:重载new函数; (2) uvm_object/uvm_component的派生类在采用factory机制实例化时,会通过factory机制在内部表格 阅读全文

posted @ 2021-10-31 15:23 知北游。。 阅读(337) 评论(0) 推荐(0) 编辑

[CU]factory机制3-factory机制创建实例(create_object/component_by_type/name)
摘要:1.factory机制创建实例的简单分析 1 class uvm_default_factory extends uvm_factory; 2 3 // Group: Registering Types 4 5 // Function: register 6 // 7 // Registers th 阅读全文

posted @ 2021-10-31 15:21 知北游。。 阅读(1053) 评论(0) 推荐(0) 编辑

【RUNOOB】Ruby简介,使用技巧,语法以及数据类型
摘要:参考资料 (1) https://www.runoob.com/ 1.ruby简介 (1) ruby是开源的面向对象程序设计的服务器段脚本语言; (2) ruby可运行于多种平台,如Windows, mac os和unix的各种版本; (3) 简单示例 1 #!/usr/bin/ruby -w 2 阅读全文

posted @ 2021-10-29 20:23 知北游。。 阅读(339) 评论(0) 推荐(0) 编辑

2.7构建-seq之overrides
摘要:示例(源于uvm cookbook): 阅读全文

posted @ 2021-10-24 17:38 知北游。。 阅读(64) 评论(0) 推荐(0) 编辑

6.4seqr&driver-seqr的lock与grab操作
摘要:注:该部分内容可参考uvm cookbook进行补充; 1.seqr的lock与grab操作 (1) lock: sequence向sequencer发送一个请求,这个请求与其他sequence发送transaction的请求一同被放入sequencer的仲裁队列中.当前面的所有请求处理完毕, se 阅读全文

posted @ 2021-10-18 16:09 知北游。。 阅读(669) 评论(0) 推荐(0) 编辑

6.3seqr&driver-seqr的仲裁(sequence的仲裁问题)
摘要:1.seqr的仲裁 (1) 当有多个sequence同时在一个sequencer上启动时,所有的sequence都参与仲裁,根据算法决定哪个sequence发送transaction.仲裁算法由sequencer决定. (2) sequencer在仲裁时,会查看sequence的is_relevan 阅读全文

posted @ 2021-10-18 15:08 知北游。。 阅读(409) 评论(0) 推荐(0) 编辑

1.4简介-seq从发生到完成的完整序列图
摘要:(1) 无论flat_sequence, hierarchical sequence,最终流向sequencer的都是sequence_item. sequence_item通过start_item尝试从sequencer获取可以通过的权限. (2) sequencer在将权限交给某一个底层sequ 阅读全文

posted @ 2021-10-18 12:41 知北游。。 阅读(112) 评论(0) 推荐(0) 编辑

6.8seqr&driver-sqr与driver的通信(get_next_item,put,item_done等)
摘要:注1:上图有些问题,其中uvm_sequencer内的uvm_seq_item_pull_port应该改为uvm_seq_item_pull_imp; 1.sequencer与driver通信基础 (1) 一个sequence在向sequencer发送transaction前,会先向sequence 阅读全文

posted @ 2021-10-17 17:40 知北游。。 阅读(2313) 评论(0) 推荐(0) 编辑

6.2sqr&driver-normal seqr和vsqr的作用与使用
摘要:1.normal seqr的作用 (1) 将激励通过TLM port传递给driver; (2) 从driver侧获取RSP对象(driver.seq_item_port.put_response->seqr.put_response->seq.put_response/seq.response_h 阅读全文

posted @ 2021-10-17 17:13 知北游。。 阅读(220) 评论(0) 推荐(0) 编辑

6.1sqr&driver-sqr简介及其基类
摘要:1.sqr简介 2.sqr基类 2.1 uvm_sequencer_base (1) start_phase_sequence (2) wait_for_item_done (3) stop_sequences 2.2 uvm_sequencer_param_base #(REQ,RSP) 2.3 阅读全文

posted @ 2021-10-17 16:33 知北游。。 阅读(546) 评论(0) 推荐(0) 编辑

6.7seqr&driver-sqr.stop_sequences() & seq.kill();
摘要:补充:下图源于uvm cookbook; 1.sqr.stop_sequences的影响 注:调用sequencer.stop_sequences后,由该sqr启动的sequence的body task虽然没有执行完,但依然会退出该sequence的body task??? 确实会这样!!! 2.s 阅读全文

posted @ 2021-10-17 15:43 知北游。。 阅读(1313) 评论(0) 推荐(1) 编辑

6.6seqr&driver-p_sequencer
摘要:1.为什么需要p_sequencer? (1) 假设启动sequence(类型为my_sequence)所对应sequencer的类型为my_sequencer. 如果在sequence内想要得到my_sequencer中某些变量的值,不能直接使用m_sequencer. 因为m_sequencer 阅读全文

posted @ 2021-10-17 15:18 知北游。。 阅读(573) 评论(0) 推荐(0) 编辑

[CU]6.5seqr&driver-m_sequencer
摘要:1.m_sequencer (1) 所有的sequence都有一个m_sequencer句柄. 1 virtual class uvm_sequence #(type REQ=uvm_sequence_item, type RSP=REQ) extends uvm_sequence_base; 2 阅读全文

posted @ 2021-10-17 15:09 知北游。。 阅读(314) 评论(2) 推荐(1) 编辑

5.4vseq&vsqr-vsqr的实现与特点
摘要:1.vsqr的实现与示例 (1) virtual sequencer派生于uvm_sequencer. 通常情况下, virtual sequencer包含子sequencer的指针; (2) virtual sequencer不和任何driver联系,并且本身不处理data item; 2.vsq 阅读全文

posted @ 2021-10-17 12:09 知北游。。 阅读(376) 评论(0) 推荐(0) 编辑

5.3vseq&vsqr-vseq的构建与启动
摘要:1.vseq的构建 1.1 vseq_base (1) 由于所有的virtual sequence都需要访问定义于virtual sequencer中的sub-sequencer句柄. 所以virtual sequence需要使用`uvm_declare_p_sequencer宏. (2) 由于每一 阅读全文

posted @ 2021-10-17 12:08 知北游。。 阅读(809) 评论(0) 推荐(0) 编辑

5.2vseq&vsqr-vseq&vsqr的作用
摘要:注:api_seq,work seq的详细解释可以查看uvm cookbook; 1. 什么情况下使用virtual sequencer? (1) 只有一个驱动agent,不存在激励协调的需求,不需要virtual sequencer; (2) 存在多个驱动agent,但多个激励之间没有协调关系, 阅读全文

posted @ 2021-10-17 12:06 知北游。。 阅读(473) 评论(0) 推荐(1) 编辑

5.1vseq&vsqr-vseq与normal seq的区别
摘要:1.normal seq (1) 每一个sequence都应该派生自uvm_sequence,并且在定义时指定要产生的transaction类型,此处为my_transaction(不一定非要指定transaction,但如果不指定在定义body task或drive时,需要做额外的cast操作,详 阅读全文

posted @ 2021-10-17 11:43 知北游。。 阅读(312) 评论(0) 推荐(0) 编辑

4.5使用rsp-response_handler与put_response(不使用get_response)
摘要:1.为什么需要response_handler? (1) get_response与put_response一一对应.当在sequence中启动get_response时,进程会阻塞,一直到sequence的response_queue里放入新的记录. (2) 如果driver能马上将respons 阅读全文

posted @ 2021-10-17 11:34 知北游。。 阅读(422) 评论(0) 推荐(0) 编辑

4.4使用rsp-多个response之put_response & get_reponse/item_done
摘要:1.多个response之put_response & get_response (1) 通常,一个transaction对应一个response,但是UVM也支持一个transaction对应多个response的情况. 这种情况下,sequence中需要多次调用get_response,而在dr 阅读全文

posted @ 2021-10-17 11:10 知北游。。 阅读(309) 评论(0) 推荐(0) 编辑

4.3使用rsp-单个response之另类response
摘要:1.单个response之另类response (1) 无论put/get_response或者item_done或者response_handler,都是新建了一个transaction,并将其返回给sequence. (2) 但是,seq内的uvm_do语句执行完毕后,其第一个参数并不是一个空指 阅读全文

posted @ 2021-10-17 11:01 知北游。。 阅读(126) 评论(0) 推荐(0) 编辑

4.1使用rsp-seq & response & response相关部分uvm源码
摘要:1.seq对response的使用 (1)sequence机制中不仅提供了sequence->sequencer->driver的数据传输,还可以根据driver对transaction的反应来决定接下来要发送的transaction. (2) response机制的原理是driver将rsp推送到 阅读全文

posted @ 2021-10-17 10:21 知北游。。 阅读(871) 评论(0) 推荐(0) 编辑

4.2使用rsp-单个response之get_reponse & put_response/item_done
摘要:1.单个response之get_response & put_response (1) 由于可能存在多个sequence在同一个sequencer上启动的情况,通过调用set_id_info设置了rsp的id等信息, sequencer才知道将response返回给哪个sequence; (2)  阅读全文

posted @ 2021-10-17 10:04 知北游。。 阅读(641) 评论(0) 推荐(0) 编辑

1.3简介-uvm1_1与uvm1_2不同之uvm_sequence_base
摘要:1.uvm-1.2取消在sequence内控制objection; (1) 在uvm-1.1中可以通过在seq内raise_objection与drop_objection控制tb的运行; (2)在uvm-1.2中取消了这种写法,改用set_automatic_phase_objection(1); 阅读全文

posted @ 2021-10-16 17:37 知北游。。 阅读(885) 评论(0) 推荐(0) 编辑

3.1启动-seq启动之start task及start task源码(手动启动seq)
摘要:1.采用start task启动seq(实例化seq+randomize seq+seq.start(seqr)) (1) sequence如何向sequencer发送transaction? 定义sequence后,只需要在某个component(如my_sequencer, my_env)的ma 阅读全文

posted @ 2021-10-16 16:59 知北游。。 阅读(578) 评论(0) 推荐(0) 编辑

2.6构建-seq body task之不使用宏,使用start_item与finish_item
摘要:注1:可以了解下create_item函数; 1.使用start_item与finish_item (1) start_item与finish_item的参数必须是transaction的指针; 注1:通过调用start_item()方法等待获得sequencer的授权许可(sequencer.wa 阅读全文

posted @ 2021-10-16 16:37 知北游。。 阅读(1732) 评论(0) 推荐(0) 编辑

2.5构建-seq body task之采用uvm_create&uvm_send宏(内部封装了trans or seq例化/start_item/finish_item/seq.start操作)
摘要:1.采用uvm_create & uvm_send宏 注1:`uvm_create与`uvm_send宏的第一个参数都可以是sequencer的指针,也可以是transaction的指针; (1)uvm_create/uvm_create_on调用uvm_sequence_base的create_i 阅读全文

posted @ 2021-10-16 16:28 知北游。。 阅读(5028) 评论(1) 推荐(1) 编辑

2.3构建-seq中使用rand型变量
摘要:资料来源 (1) UVM实战-张强; (2) (8条消息) [SV] 内嵌约束中local::的用法_lbt_dvshare的博客-CSDN博客_sv中local 1.seq内rand型变量 (1)在sequence内可以使用随机变量,用以约束它产生的transaction; (2)在sequenc 阅读全文

posted @ 2021-10-16 15:29 知北游。。 阅读(397) 评论(0) 推荐(0) 编辑

2.2构建-seq构建之类的派生(指定参数与否)
摘要:注:可以推广到sequencer和driver,即是否为sequencer即driver指定transaction类型; 1.指明sequence产生的transaction类型 (1) 如果sequence中产生的transaction不是此种transaction,将会报错(见示例). (2)  阅读全文

posted @ 2021-10-16 15:24 知北游。。 阅读(68) 评论(0) 推荐(0) 编辑

1.2简介-seq的分类(flat_sequence, hierarchical seq, layering seq, virtual seq)
摘要:注1: 每一个sequence都应该派生自uvm_sequence, 在定义时可以指定或不指定要产生的transaction的类型,通常会指定; 注2: 每一个sequence都有一个body任务,当一个sequence启动后,会自动执行body中的代码. 1.扁平类(flat sequence) 阅读全文

posted @ 2021-10-16 15:08 知北游。。 阅读(630) 评论(0) 推荐(0) 编辑

reg model使用篇-register seq(包含uvm内建register sequences)
摘要:资料来源: (1) 《uvm cookbook》 1. register seq 1.1 register check seq (1) reset test:根据get_reset方法获取reset值,并调用register.read方法获取read value,比较reset值和read valu 阅读全文

posted @ 2021-10-15 17:27 知北游。。 阅读(881) 评论(0) 推荐(0) 编辑

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示