在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2123|回复: 9

[求助] 验证想通过命令行传递参数,该怎么做呢

[复制链接]
发表于 2022-5-21 16:49:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
目前想将所有的参数都写在一个class里面,然后用例仿真时使用一个cfg文件得到不同的参数,但是现在不知道这个class要怎么用起来,比如我现在在验证环境中,sequence、driver还有rm中都想使用这个class中定义的参数,那我该怎么做呢,可以在tc中对这个class进行实例化,那其他地方怎么引用这个class中的变量呢,实在有些困惑,希望有人能指教一下
 楼主| 发表于 2022-5-21 16:51:16 | 显示全部楼层
困惑的点在于这个class是不是每new一次,参数可能就会不同,那我是不是只能在一个地方new,怎么保证其他组件可以指向这个同一空间呢
发表于 2022-5-21 21:01:13 | 显示全部楼层
$value$plusargs
发表于 2022-5-21 21:02:01 | 显示全部楼层
本帖最后由 买履人 于 2022-5-21 21:05 编辑

可以将这个class做成单例模式,即只能在环境中new一次,可以搜索一下,这个方式在uvm中是很常见的。代码大概如下,自己再搜一下改改。想用这个class的地方只要A a=A::get();就行了



class A;

typedef A a_inst;

function A get();
     if(a_inst == null) begin
         a_inst = new();
         return a_inst;
     end
    else begin
         return a_inst;
    end
endfunction
function new();
endfunction
endclass


 楼主| 发表于 2022-5-21 21:27:48 | 显示全部楼层


买履人 发表于 2022-5-21 21:02
可以将这个class做成单例模式,即只能在环境中new一次,可以搜索一下,这个方式在uvm中是很常见的。代码大 ...


受教了,还真不知道有这个用法,非常感谢
发表于 2022-5-23 09:53:03 | 显示全部楼层
我的做法是做一个存储配置的类cfg,该类在test中例化,并且利用$value$plusargs将外部配置吃到。在build_phase阶段通过config_db传给要的组件。。
发表于 2022-5-23 11:36:37 | 显示全部楼层
只需要在tc中实例化一次,然后在你要用组件中声明一个句柄,在tc中用config_db把实例化的句柄传递到你要用的地方就好了
 楼主| 发表于 2022-5-24 10:06:43 | 显示全部楼层
本帖最后由 fuxiaolicaicai 于 2022-5-24 10:07 编辑

已经得到解决,把方法贴在这里,给有需要的人使用:
有两个方法传递命令参数,第一个就是像上面几位朋友说的可以使用config_db,但是这种方法应该只适用于uvm_component,如果想在uvm_object或者transaction中使用命令行参数应该行不通,再者这个方法需要大量添加get和set,个人认为较为麻烦。

再一个就是楼上朋友提出的UVM单例模式,我已经进行了实验,确实可行,比如现在新建一个transaction,在里面使用一个静态函数get:
image.png

在需要使用参数的地方使用get,比如my_driver:
image.png
在sequence中:
image.png

以上代码来自UVM实战,进行了一些修改实验,然后在makefile中进行如下设置即可:
image.png
cfg文件:
image.png





image.png
发表于 2022-6-30 09:53:19 | 显示全部楼层
UVM有个接口可以用来从命令行传递参数,uvm_cmdline_processer
发表于 2023-12-21 09:24:40 | 显示全部楼层
受教了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-27 20:43 , Processed in 0.036837 second(s), 10 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表