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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3834|回复: 3

[求助] 如何用systemverilog为有CPU读写寄存器的模块创建验证平台

[复制链接]
发表于 2013-9-10 18:52:01 | 显示全部楼层 |阅读模式
300资产

如何用systemverilog为有CPU读写寄存器的模块创建验证平台

我现在一个周边模块timer, 其中有4个寄存器,分别为:

1,
TCNT timer的计数寄存器,用来保存timer counter

2,
TMODtimer的模式寄存器,用来配置 timer的工作模式

1
计数模式

2
外部event 计数模式

3
定时器模式

3,
TCR:可以设置timer的工作频率。以及用TCR.Tstart位来启动这个timer模块工作

这些寄存器可以用CPU的总线进行配置

CPU的总线:

      Clk            :时钟

      Cpu_rw     :  当为1时为read 周期,当为0时为write周期

      Cpu_addr[15:0] :16位地址总线

   Cpu_datawr[7:0] : 8CPU写数据总线

      Timr_datard[7:0] : 8CPU读数据总线

   Psel                      :周边模块的片选信号,当选选中timer的寄存器时有效,

   Penable  
周边模块的读写使能信号。 0:不能读写周边模块。 1:可以读写周边模块

   

现在我想用systermverilog来搭建这个模块的验证平台:

验证平台的基本想法是这样的:

1,我要定义transaction类。里面包含timer寄存器的地址变量,

存储寄存器的值的变量。

Addr_tcnt, data_tcnt

Addr_tmod ,data_tmod

Addr_tcr,   data_tcr

2然后定义generator 类。


里面包含了如何 randomize来产生上面transaction类里面定义的变量的值,也就是个寄存器的地址和对应的值。然后通过 mailbox传递给driver类。

3,
然后定义driver类来给DUT加驱动和进行DUT的配置,interface的话假设已经定义好了。

Driver类里面一定要包含通过CPU读写周边模块寄存器的task().

那我这个driver类的task定义为:

Cpu_write()

Cpu_read();

问题来了我的CPU_write()cpu_read()应该怎么写。

我现在的想法是:

Cpu_write(inputlogic[15:0] addr,  input logic[15:0]data)

Addr:写的地址, data:写的
数据

但是现在我应该如何操作才能对
前面的的3个寄存器按顺序进行配置呢?

应为一般的MCU里面的周边模块要动作,都是先配置寄存器然后启动模块工作。

那我现在要先配置寄存器

1,
TCNT 初始化counter的初期值。

2,

TMOD配置工作模式,

3,
TCR的分频bit,选定分频

4,
TCRtsart bit timer模块动作。

我这个按循序要求的配置如何在 driver类里实现。

我看过systemverilog for verification里面最后的关于多单元通道的UART收发的例子,他采用的是在driver类里面直接写一个cpu_cfg()

task,然后进行配置,这有个很大的缺陷是,cpu_cfg()里面不能接受testbench上个层次(generator产生的数据)


现在假设可以我们扩展一下让他可以接受generator产生的数据通过mailbox,还有个一问题是如何让他按我上面的要求step1~step4的循序进行按步配置。


是在driver类里面添加额外的东西,还是在transaction里面添加额外的东西。让testbench正常的工作。不知道大家明白了我的意思和我的问题了没有。


我真的很郁闷啊。这个问题困扰了我很长时间。

发表于 2013-9-10 21:05:17 | 显示全部楼层
sequence.....
 楼主| 发表于 2013-9-18 07:20:35 | 显示全部楼层
顶呀。。。。。。。。。。。。
发表于 2015-5-31 22:48:49 | 显示全部楼层
后复杂,不明白。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-12-1 05:27 , Processed in 0.021237 second(s), 7 queries , Gzip On, Redis On.

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