欢迎来到天天文库
浏览记录
ID:62477748
大小:50.26 KB
页数:13页
时间:2021-05-08
《《UVM实战(卷1)》学习笔记.docx》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、vrrtualt=uvn_fnorLtor&2、1版)来看这个笔记。[/第3章UVM基础3.1uvm_component和uvm_object常用的类名字:这个图是从作者张强的《uvm1.1应用指南及源代码分析》里截得,不如书上3.1.1里的图好。uvm_sequencer也是代码里必须有的,所以我加了uvm_sequenceruvm_void是一个空的虚类。在src/base/uvm_misc.svh中定义:红框的是我们搭testbench的时候用的比较多的基类。常用的uvm_object派生类:1——"sequencer给driver的transaction要派生自uvm_sequence_item,不要派生自uvm3、_transaction所有的sequenee要派生自uvm_sequenee或者uvm_sequenee的派生类,可以理解为sequenee是sequence_item的组合(集合)。driver向sequencer索要item,sequencer检查是否有sequenee要发送item,当发现有item待发送时,就把这个item发给driver.•p«.■-'.™'II常用的uvm_component派生类:所有的driver要派生自uvm_driver.driver用来把sequence_item中的信息驱动到DUT端口上,从transaction-level向sig4、nal-level的转换。uvm_driver需要参数(REQRSP,比uvm_component增加了几个成员。重要的是seq_item_port禾口req/rsp.(src/comps/uvm_driver.svh)monitor/scoreboard派生自uvm_monitor禾口uvm_scoreboard,但是uvm_monitor禾口uvm_scoreboard并没有在uvm_component基础上做扩展。src/comps/uvm_monitor.svh-来源网络,仅供个人学习参考vrrtualt=uvn_fnorLtor&5、n=n+//Fiinctior*jn^ixi////CrftrH.es;and1ntt.IAl17«sirwstancftofthiscIarsijringthencrnal//CDnsT.mctorarEiiiftflntsfor<(hfln_coinponent>:^rkannft^IsthenanAofTJhe//Inst.ancft,and~parFsnl,~IsXhehandleTmthehierarchicalparentpIFany.functiari-leuitsLriri^narie.uvm.Camporentparent;sup^r.rit'uuirid6、iie.partriL';eridFunctionconstgtaticstringtype_nsr*ievirtuslPJi-i匚七丨口门at^irgp^_nameretjirntij匚e_nairieendFuiri亡t二oncndclaEZsequencer要派生自uvm_sequencer.sequencer做了很多扩展,但是如果我们自己写的sequencer里没有增加-成员的话,可以直接写如下代码:typedefuvm_sequencer#(传递的sequence_item类名)sequencer类名;因为sequencer在agent中例化,’所以一般写在—ag7、ent类文件里。reference_model派生自uvm_component.agent要派生自uvm_agent.uvm_agent里多了一个is_active的成员。一般根据这个active来决定是否实例化driver和sequencer.is_active变量的数值需要在env的build_phase里设置完成(可以直接设置,也可以用uvm_config_db#(int)::set)。env要派生自uvm_env.uvm_env没有对uvm_component扩展。src/comps/uvm_env.svh
2、1版)来看这个笔记。[/第3章UVM基础3.1uvm_component和uvm_object常用的类名字:这个图是从作者张强的《uvm1.1应用指南及源代码分析》里截得,不如书上3.1.1里的图好。uvm_sequencer也是代码里必须有的,所以我加了uvm_sequenceruvm_void是一个空的虚类。在src/base/uvm_misc.svh中定义:红框的是我们搭testbench的时候用的比较多的基类。常用的uvm_object派生类:1——"sequencer给driver的transaction要派生自uvm_sequence_item,不要派生自uvm
3、_transaction所有的sequenee要派生自uvm_sequenee或者uvm_sequenee的派生类,可以理解为sequenee是sequence_item的组合(集合)。driver向sequencer索要item,sequencer检查是否有sequenee要发送item,当发现有item待发送时,就把这个item发给driver.•p«.■-'.™'II常用的uvm_component派生类:所有的driver要派生自uvm_driver.driver用来把sequence_item中的信息驱动到DUT端口上,从transaction-level向sig
4、nal-level的转换。uvm_driver需要参数(REQRSP,比uvm_component增加了几个成员。重要的是seq_item_port禾口req/rsp.(src/comps/uvm_driver.svh)monitor/scoreboard派生自uvm_monitor禾口uvm_scoreboard,但是uvm_monitor禾口uvm_scoreboard并没有在uvm_component基础上做扩展。src/comps/uvm_monitor.svh-来源网络,仅供个人学习参考vrrtualt=uvn_fnorLtor&5、n=n+//Fiinctior*jn^ixi////CrftrH.es;and1ntt.IAl17«sirwstancftofthiscIarsijringthencrnal//CDnsT.mctorarEiiiftflntsfor<(hfln_coinponent>:^rkannft^IsthenanAofTJhe//Inst.ancft,and~parFsnl,~IsXhehandleTmthehierarchicalparentpIFany.functiari-leuitsLriri^narie.uvm.Camporentparent;sup^r.rit'uuirid6、iie.partriL';eridFunctionconstgtaticstringtype_nsr*ievirtuslPJi-i匚七丨口门at^irgp^_nameretjirntij匚e_nairieendFuiri亡t二oncndclaEZsequencer要派生自uvm_sequencer.sequencer做了很多扩展,但是如果我们自己写的sequencer里没有增加-成员的话,可以直接写如下代码:typedefuvm_sequencer#(传递的sequence_item类名)sequencer类名;因为sequencer在agent中例化,’所以一般写在—ag7、ent类文件里。reference_model派生自uvm_component.agent要派生自uvm_agent.uvm_agent里多了一个is_active的成员。一般根据这个active来决定是否实例化driver和sequencer.is_active变量的数值需要在env的build_phase里设置完成(可以直接设置,也可以用uvm_config_db#(int)::set)。env要派生自uvm_env.uvm_env没有对uvm_component扩展。src/comps/uvm_env.svh
5、n=n+//Fiinctior*jn^ixi////CrftrH.es;and1ntt.IAl17«sirwstancftofthiscIarsijringthencrnal//CDnsT.mctorarEiiiftflntsfor<(hfln_coinponent>:^rkannft^IsthenanAofTJhe//Inst.ancft,and~parFsnl,~IsXhehandleTmthehierarchicalparentpIFany.functiari-leuitsLriri^narie.uvm.Camporentparent;sup^r.rit'uuirid
6、iie.partriL';eridFunctionconstgtaticstringtype_nsr*ievirtuslPJi-i匚七丨口门at^irgp^_nameretjirntij匚e_nairieendFuiri亡t二oncndclaEZsequencer要派生自uvm_sequencer.sequencer做了很多扩展,但是如果我们自己写的sequencer里没有增加-成员的话,可以直接写如下代码:typedefuvm_sequencer#(传递的sequence_item类名)sequencer类名;因为sequencer在agent中例化,’所以一般写在—ag
7、ent类文件里。reference_model派生自uvm_component.agent要派生自uvm_agent.uvm_agent里多了一个is_active的成员。一般根据这个active来决定是否实例化driver和sequencer.is_active变量的数值需要在env的build_phase里设置完成(可以直接设置,也可以用uvm_config_db#(int)::set)。env要派生自uvm_env.uvm_env没有对uvm_component扩展。src/comps/uvm_env.svh
此文档下载收益归作者所有