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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

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

[求助] uvm的reference model类里怎么模拟verilog的assign连续赋值呢?

[复制链接]
发表于 2023-11-15 22:09:57 | 显示全部楼层 |阅读模式

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

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

x
          哪位大佬知道要怎么模拟呢?想了个办法,就是把连续赋值左边的变量申明为等于右边的N个变量,右边的变量先在左边变量的前面进行申明,然后在具体的逻辑task中进行变量值的处理变化,但是似乎有点问题,查了一些资料,说是把连续赋值放在方法function里,感觉不是很实际,因为右边通常是一堆变量,有点搞不明白要怎么弄,求助大佬指点一二。下面是我查的资料,感觉不是很实际。


class MyClass;  // 类的属性  bit [2:0] variable1;  bit [2:0] variable2;  // 类的方法,模拟连续赋值  function void continuous_assign();    variable2 = variable1 + 1;  endfunctionendclass
MyClass my_obj;// 在某个地方调用连续赋值方法my_obj.continuous_assign();
问题是我调这个方法的地方h会因为变量太多,有的变量还不在一起进行值的改变,所以觉的不实际。


我的连续赋值其中之一的原句是:assign cmd_last_bit =(itf_fsm_curr==ITF_ST_CMD && bit_cnt[2:0]==3'd7)


 楼主| 发表于 2023-11-16 14:35:24 | 显示全部楼层
搞好了,还没人回复啊,我去
发表于 2023-11-16 18:23:16 | 显示全部楼层
怎么搞的
 楼主| 发表于 2023-11-17 14:40:33 | 显示全部楼层
就是上面那么搞的
发表于 2023-12-4 11:09:32 | 显示全部楼层
用task实现;所有信号用inout就行;
 楼主| 发表于 2023-12-5 09:57:17 | 显示全部楼层
有些信号没有inout
发表于 2023-12-5 10:39:00 | 显示全部楼层


芯游天下 发表于 2023-12-5 09:57
有些信号没有inout


task的端口声明为inout;然后在一个地方调用这个task就行
 楼主| 发表于 2023-12-12 16:03:56 | 显示全部楼层


炒鸡屈服者 发表于 2023-12-5 10:39
task的端口声明为inout;然后在一个地方调用这个task就行




下载.png
因为代码很长,这只是其中一点代码,最终效果有bug,所以最终没有使用uvm去翻译整个verilog的reference model,所以不知道这样是否可以,因此问问大佬,麻烦不吝赐教,感谢!!!
发表于 2023-12-13 18:19:16 | 显示全部楼层
直接点;直接在interface中assign
 楼主| 发表于 2023-12-15 12:48:47 | 显示全部楼层


炒鸡屈服者 发表于 2023-12-13 18:19
直接点;直接在interface中assign


interface中的assign,有没有考虑过其他的赋值变量怎么给传值呢,还是在 uvm的reference里直接搞比较合适,之前说我的代码有点问题,并不是说这个连续赋值出了问题,是其他地方出了点问题,后来verilog直接写了文件,所以就没弄了。就单纯技术角度来说我觉的连续赋值可以直接在uvm的reference里搞。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2024-11-16 05:34 , Processed in 0.022570 second(s), 7 queries , Gzip On, Redis On.

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