日常记录(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函数返回当前的覆盖率。
Le vent se lève! . . . il faut tenter de vivre!
Le vent se lève! . . . il faut tenter de vivre!

浙公网安备 33010602011771号