路科验证(Rocker IC)专注于验证系统思想和前沿工程资讯,拥有一支活跃的技术原创团队,著有《芯片验证漫游指南》一书,致力为高校微电子相关专业学生与IC从业人员提供技术食粮。 您可以在手机移动端同步关注微信订阅号“路科验证”或是登录网页www.rockeric.com了解澳门皇冠APP资讯。如果您需要联系我们,请发送邮件至 bin.rocker.liu@intel.com 。

把大象装进冰箱要几步?不清楚,但是学会SV验证可能还需4步!

上一篇 / 下一篇  2018-01-28 14:08:55 / 个人分类:验证前沿资讯

在上一期的Lab2中,我们拓展了测试平台并从一个输入端向一个输出端发送了数据包。今天的Lab3的学习目标是:

1.构造一个从路由器输出端进行取样的监视器(Monitor)。

2.构造一个可以验证路由器输出的比较器(Checker)。

3.运行Driver和Monitor程序,检验Checker能否正确比数。 


测试平台结构如下:


任务一:创建顶层测试环境Top-Level Test Environment

1.编辑已存在的test.sv文件。

2.pkt2cmp_payload[$]序列添加一个全局声明(global-declaration),位宽为8bitlogic[7:0])。这个序列将会被用来存储来自于DUT的取样数据。

3.为了能够进行自我核对,修改程序使recv()send()可以并行进行,并在其后添加一个自我核对程序check()


任务二发展一个监视器Monitor

1.声明一个recv()命令。

2.recv()体中调用get_payload()来获取有效负载。(在目前这是这是recv()程序中的唯一内容,在后面的实验中我们会在添加一些内容。)

3.声明get_payload()任务。

4.get_payload()中,删除掉pkt2cmp_payload[$]的内容。(删掉来自之前数据包的可能剩余物是十分有必要的)

5.继续在get_payload()之中,等待输出端frame信号的下降沿。

6.通过在路由器的输出端口取样来继续完善get_payload():

  a)保持循环直到frame信号被检测到。

  b)在循环中,至少8个时钟周期内聚合起一个字节(8bit)的数据。接着将每一个8位数据存储到pkt2cmp_payload[$]序列中去。

 7.如果payload没有连成一个byte,就打印错误信息并终止仿真。


任务三发展比较器Checker

这一步是为了发展一个核对器从而去检查路由器的输出。

1.创建一个compare()函数,它可以返回一个bit的值并且可以进行数据比较。

2.compare()中,比较payload[$]序列(用来参考的数据)和pkt2cmp_payload[$]序列取样的数据)中存储的数据来验证接收到的payload是否正确。

  a)如果payload[$]序列和pkt2cmp_payload[$]序列的长度不匹配的话,设置描述该错误的语句,并返回0值结束该子程序。

b)如果在payload[$]序列和pkt2cmp_payload[$]序列的数据不匹配,设置描述该错误的语句,并返回0值和结束该子程序。(你可以用“==”来直接比较两个序列)

c)如果在payload[$]序列和pkt2cmp_payload[$]序列中的数据是完全一致的,设置描述比较成功的语句,并返回1值和结束该子程序。

3.创建check()任务。

4.在check()体中,声明一个string(字符串)变量和一个计数器。

5.在check())体内,调用compare函数来核对接收到的数据。

a)如果一个错误被发现了,则打印错误信息并终止仿真。

b)如果核对是成功的,则打印一个信息来表明比较成功和查到的数据包的数量。

6.保存并关闭test.v文件。


任务四:编译和仿真(略)


任务五:测试所有端口

1.修改你的测试程序来随机产生sa(源地址)和da(目标地址)。

2.将你的Testbench拓展到可以发送2000个数据包。

3.使用make脚本去编译和仿真你的程序。

4.确定仿真依然可以完全成功。(代码见附件中的完整程序)



至此,Lab3已经完成啦。点击左下角的阅读原文,即可查看这次Lab所用到的全部代码。下周四Lab4的内容是:

1.将数据包信息封装进入Packet类.

2.利用随机化(randomization)在packet类中随机产生源地址,目标地址和payload

3.创建两个packet对象(object),一个数据包用来在DUT输入端输入,另一个数据包用来和DUT输出的数据相参照。

4.compare()嵌入packet类,用来验证DUT工作的正确性。



TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

路科验证

路科验证

路科验证(Rocker IC)专注于验证系统思想和前沿工程资讯,拥有一支活跃的技术原创团队,为高校微电子相关专业学生与IC从业人员提供技术食粮。 您可以在手机移动端同步关注微信订阅号“路科验证”。如果您需要联系我们,请发送邮件至 rocker.ic@vip.163.com 或者 bin.rocker.liu@intel.com 。

日历

« 2018-05-26  
  12345
6789101112
13141516171819
20212223242526
2728293031  

数据统计

  • 访问量: 101978
  • 日志数: 185
  • 建立时间: 2016-06-25
  • 更新时间: 2018-05-20

RSS订阅

Open Toolbar
博聚网