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

SV及UVM高级话题篇之二:SystemVerilog开源公共库(下)

上一篇 / 下一篇  2018-06-29 18:50:22 / 个人分类:验证系统思想

SV开源库之二:cluelib

cluelib也是一个开源库,它来自于ClueLogic公司。而它的开发者也在其介绍cluelib的论文中谈到,SV缺少的底层函数之所以目前开源地较少,归结于几个现实因素:

  • 大多数的verifier缺少时间去开发一个完整的底层库。

  • 开发一个稳定的库需要花足够多的时间去测试。

  • 去定义一致的、可配置的函数和类并不是一件轻松的事情。

  • 另外,verifier对于一些只能重复去做的事情还暂时可以忍受,也就是说,重复在顶层函数实现上的代码他们还可以承受。

  • 最后,我们也已经谈到,由于技术和法律的限制,一些可靠的库依然无法对外公布和分享。


而cluelib也是目前开源的相对有生命力的(仍然在更新)的库。路桑在这本书中摘录的是有品质保证的库,如果将来这些库已经停止了更新,那么路桑也会在后续本书新的版本中将这一节进行更新,为读者推荐其它有品质的开源库。cluelib在开发时,也遵循了类似于svlib开发时的规则,比如尽量保持独立不依赖于其它SV库、可在多个仿真器和平台上移植、好的命名规则、参考已有的Python/Java的底层函数等。

cluelib也是由两部分方式实现的,一部分是完全由SV实现,另外一部分则由DPI-C++实现。cluelib中的类可以分为:

  • 文本处理类(text processing)

  • 容器类(container)

  • 策略类(strategy)

  • 验证相关类(verification specific)

  • 领域相关类(domain specific)


上图中的这些类在最新的cluelib中有的类已经过期(不存在),同时也有新的类出现。读者如果对这个库感兴趣,可以通过这个链接下载:

#github.com/cluelogic/cluelib

而关于cluelib库的最新类的文档可以通过在线的方式查看:

#cluelogic.com/tools/cluelib/api/framed_html/index.html


文本处理类

cluelib新定义了一个虚类virtual class text,text类中定义了与字符串处理有关的函数,并且全部声明为静态函数。这么做的好处是方便用户在外部直接调用静态函数,例如text::index(),同时这一点也符合SV用户对字符串操作的习惯。text类支持的函数按照返回值可以分为下面几种:


容器类

开发者借鉴了C++、Python的与容器类有关的类和方法,新定义了一些有用的类。考虑到文章篇幅的关系,我们这里给出一个类的大致划分:

  • pair

  • tuple

  • tree_node

  • route_node

  • aggregate

    • packed_array

    • unpacked_array

    • dynamic_array

    • queue

    • data_stream

    • bit_stream

  • collection

    • set

    • deque

    • tree

    • route


pair和tuple可以存放数据,并且提供一些比较和克隆的功能。

pair#(int,string) p;

p = new( 123, "a pair of int and string" );

$display( "%d", p.first ); // first element

$display( "%s", p.second ); // second element



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 。

日历

« 2018-12-11  
      1
2345678
9101112131415
16171819202122
23242526272829
3031     

数据统计

  • 访问量: 197474
  • 日志数: 268
  • 建立时间: 2016-06-25
  • 更新时间: 2018-12-09

RSS订阅

Open Toolbar