日常记录(53)program、phase、vim

program的使用原因

标准中24.2的overview中有提及,和module不同,主要原因是:

1. 提供tb的入口,

2. reactivate域中执行代码。

 

phase回顾

灰色为task phase,消耗仿真时间。结束过程分别为:extract、check、report、final。

 

 

vim操作

多文件查找替换:

Ex命令中的grep string *.sv(例如)

定位替换结果:

Ex命令中的:cn下一个,cp上一个,cw打开窗口,cl显示匹配结果

执行上次Ex命令:

普通模式下的:@:

之后可以使用:@@

多文件替换:

确定操作的文件:Ex命令的args *.sv(例如)

执行动作:Ex命令的argdo %s/s1/s2/gc (例如替换操作)

设置quickfix的窗口位置:

回退上一个F/f等的查找结果

普通模式下的分号为下一个结果,逗号为上一个结果

关闭其它标签

Ex命令的tabo。

此外还有tabc命令、tabn、gt、gT

 

map映射关系查看

imap插入模式的映射、

nmap普通模式的映射

 

 

 

 

 vimrc变更的配置

set nu
set nohls

imap <S-[> <Esc>
autocmd CursorMoved * silent! exe printf('match Underlined /\<%s\>/', expand('<cword>'))
autocmd CursorHold * silent! exe printf('match Underlined /\<%s\>/', expand('<cword>'))
set mouse=a

" :set background=light

autocmd vimenter * NERDTree
autocmd vimenter * wincmd w
autocmd tabenter * NERDTree
autocmd tabenter * wincmd w
autocmd vimenter * VerilogErrorFormat vcs 0
" set nowrap

set path+=/tools/uvm/uvm-1.1a/src/


set tags=./.tags;,.tags
set tags+=/tools/uvm/uvm-1.1a/src/tags

autocmd BufWritePost * call system("ctags -R")

map <C-j> :NERDTree %<CR>

let g:AutoPairs = {'(':')', '[':']', '{':'}','"':'"'}

set autowrite

" set quickfix in the bottom of window.
autocmd FileType qf wincmd J

 

非root模式下保存vim

:w ! sudo tee %

 

 

VCS中的solver_mode

用在解析约束上。默认为2,为1时增加预处理时间使得后续调用更快。

 

 

 

 

SV语法补漏

 1. SV的随机范围

\$urandom_range(p1, p2)

 

2.%p格式化打印队列

 

3. !==、==,!=

 对payload进行比较时候使用!==、==,而不使用!=

logic类型下,因为结果为x不会通过if的判断,导致bug出现。

下述代码中,使用!=则跳过if判断,认为二者相等。

        if(payload !== pkt2cmp_payload)
        begin
            $sformat(msg, "payload not matched! %p, %p", payload, pkt2cmp_payload);
            return 0;
        end

 

4.旗语:

semaphare

 

5. copy对象

obj1 = new obj2(obj2已经存在) 

 

6.覆盖率

covergroup、endgroup定义功能覆盖率,

其中的coverpoint指定采集点,cross指定交叉覆盖率

定义以后在new中实例化定义,使用sample进行采集。而系统的$get_coverage函数返回当前的覆盖率。

 

posted @ 2022-02-10 21:06  大浪淘沙、  阅读(85)  评论(0)    收藏  举报