a little bit Spacemacs and SystemVerilog

 

今天学习了一点SV中的OOP概念(object的复制,构造函数new的参数传递,直接回收对象),以及一点点Spacemacs的知识(快捷键,打开vim模式下的line number显示)。

SV的一些知识点

  • SV里面的关注点主要是transaction和transactor,在UVM中就是transaction和components, UVM中将所有的transactor都当作components来进行处理
  • mailboxes是由一组FIFO构成的,可以用来stall a thread until a new value is added.
  • 有时候我们为了对已经创建好的object进行修改,但是又不想修改当前的object,这个时候我们可以创建一个object的副本(通过复制创建好的object)

注意:如果原先的object中有其他对象(object2)的handle, 那么复制的时候会将原先object中handle复制过来,这两个handle指向的是同一个对象(object2)。

  • 如果class中没有构造函数new(), 也是不影响在其他地方使用new()构建这个class的对象。
  • 在通过new()创建构造函数时,如果需要在里面传入参数时,里面的变量名不能与class中的变量名一致。可以通过new(input logic [3:0] addr_p=0)的形式传入默认值为0的addr_p参数。
  • 直接回收对象object,可以使用t = null的形式(t为handle名).
  • 在SV语言中Class中的一切都是属于public类型的。

Spacemacs知识点

安装和使用Emacs的Verilog-Mode

  • 通过快捷键M+x list-packages可以看到emacs仓库的中的所有package. (今天通过这个方式安装了最新的Verilog-mode包(可以直接通过/搜索Verilog找打)),现在安装的emacs默认里面都有verilog-mode包。
  • 通过M+a M+c 启动自动连线(在端口位置先写上/AUTOARG/),也可以通过命令搜索 spc spc verilog-来实行verilog-mode中的一些方法(创建header, task, function… 会减少很多敲击重复代码的时间)。

    在编辑器中显示行数

  • 临时显示:spc tna
  • 默认显示: 需要将下面的代码加入到 .spacemacs配置文件中。在dotspacemacs/init函数中找到dotspacemacs-line-numbers配置的位置,然后复制下列代码到相应位置。
dotspacemacs-line-numbers '(:visual t
                            :disabled-for-modes dired-mode
                                                doc-view-mode
                                                pdf-view-mode
                            :size-limit-kb 1000)

本文原创,错误之处在所难免!盼指出!