ee_king的个人空间 https://blog.eetop.cn/1494617 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

Connections to DUT Interfaces(从Connect/SystemVerilogTechniques开始)

已有 636 次阅读| 2018-9-26 08:51 |系统分类:芯片设计

        Connect/SystemVerilogTechniques

      Introduction and Recommendations

      SystemVerilog通常提供四种不同的通信方式或实例之间的连接:ports,指针,Verilog分层路径和共享变量。对于基于testbench的类来说,可能不使用ports。不建议使用分层路径。指针是常用的手段。共享变量可以在特定的区域中使用。

       Ports  

       Ports是诸如模块和接口实例这样的静态实例领域的成员之间的连接。因此,它们不能用于属于动态实例领域的类中。
       UVM提供ports的概念,例如uvm_tlm_put_port等。这些不是SystemVerilog ports,而是围绕指针的包装类。因此,UVM TLM port是一种基于指针的通信方案,类似于Verilog和VHDL工程师熟悉的ports。

       Handles

       类句柄指向类对象(实例)。它被称为句柄以区分指针。句柄被认为是安全指针,因为与其他语言(如C)中的指针相比,它使用了限制性规则。
       虚拟接口是代表接口实例的变量。它可以被认为是接口实例的句柄。

       Verilog Hierarchical Path

       SystemVerilog中的每个标识符都具有唯一的分层路径名。任何其他SystemVerilog object都可以通过此分层路径名引用任何已命名的SystemVerilog object。
       虽然这是强大的,因为它允许从任何地方到任何地方的通信,但通常不希望使用这种技术。在建模中,它是绝对的“禁忌”,因为连接隐含在分层引用中。在建模时,这种隐式连接不会被综合或者被创建。在验证中应该避免使用,因为在使用时可移植性和可重用性就被限制了。

       Shared Variables

       共享变量有时被称为全局变量,尽管一般来说它们并不是真正的全局变量。共享变量是在作用域中声明的变量,可以由其他作用域引用。在共享变量行为中,可以在这些其他作用域中读取和/或写入变量。测试平台中使用的两个最常见的共享变量示例是在package中声明的变量和class的静态属性声明。
       在packages中,可以声明变量,例如int或虚拟接口。这些变量可以通过完全解析的名称(package_name :: variable_name)或通过一个import在其他作用域(例如类或模块)中被引用(即读取和写入)。类的静态属性声明可以由完全解析的名称引用(class_name :: static_property_name)。通常可以提供类的静态method来访问静态property。
       建议共享变量仅用于初始化或status type通信,其中在写入和读取信息之间存在明确的关系。
      不建议将共享变量用于对象之间的数据传输,例如transactions。
      由于共享变量的性质,竞争条件是固有的,因此必须小心或将发生竞争。【这种类似全局变量的东西还是尽量少用,以免和自己的私有变量发生应用冲突】


点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 2

    粉丝
  • 0

    好友
  • 0

    获赞
  • 6

    评论
  • 访问数
关闭

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

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

GMT+8, 2024-4-20 14:47 , Processed in 0.014858 second(s), 11 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部