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

上一篇 / 下一篇  2018-09-26 08:51:07

        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。
      由于共享变量的性质,竞争条件是固有的,因此必须小心或将发生竞争。【这种类似全局变量的东西还是尽量少用,以免和自己的私有变量发生应用冲突】


TAG:

 

评分:0

我来说两句

显示全部

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

日历

« 2019-01-18  
  12345
6789101112
13141516171819
20212223242526
2728293031  

数据统计

  • 访问量: 19868
  • 日志数: 75
  • 建立时间: 2018-09-03
  • 更新时间: 2018-12-29

RSS订阅

Open Toolbar