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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
EETOP诚邀模拟IC相关培训讲师 创芯人才网--重磅上线啦!
查看: 2156|回复: 1

[求助] 怎么用systemverilog语言写一段检测cpu中断是否上报的代码

[复制链接]
发表于 2018-8-5 19:28:19 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 一只小白 于 2018-8-5 19:36 编辑

假设有170个端口,其中从32到88的irq_src[]的值没有赋0(类似于 assign irq_src[35]=psi_irq;),其他的赋值为0(比如 assign irq_src[100]=1'b0;)现在要检测CPU中断是否上报,主要检测32到88,方法是用force和release语句,把32到88用位拼接符force成一个随机数data,再mask一下,把没有上报的打印出来。
老师给的代码框架如下,我的问题是:1. data随机数怎么产生一个170位的数(感觉太大了)? 2.mask在这里的作用是什么?mask每一位都是1,还是32到88位是1,其余为是0? 3.‘uvm_error 里应该打印什么?(要有参数的形式)

static reg [169:0] data;
          reg [169:0] mask=1;
for (int i=0;i<20;i++)begin
     data={//这里老师让用$urandom_range函数产生一个随机数data ,但是我不会用这个产生170位的数};
     #20ns force{
           //这里是32到88端口的路径
           ................
    } =data;
   if (irq_src[]=data[]&mask[])
      ‘uvm_info(         );
   else
      'uvm_error(  //打印什么    );
      #10ns release{
          //这里是32到88端口的路径
     }
  end
 楼主| 发表于 2018-8-5 19:29:45 | 显示全部楼层
刚入这一行,还是个学生,可能有些表述还不清楚,见谅
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-12-24 02:53 , Processed in 0.017965 second(s), 8 queries , Gzip On, Redis On.

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