IC验证小经验技巧总结

1、如何历枚举成员?

当你想判断某个值是否是某枚举的成员时,可以遍历枚举成员与其作比较。遍历枚举类型可以用.first和.next函数来实现。再SV书本第47页,例2.50。

2、关联数组在V中的always块中被赋值为什么会vcs编译不通过?

因为想要定义一个无限大的mem,所以使用了关联数组,并且在always块中对其进行了赋值。但是vcs编译不通过,为什么呢?其实这种情况就是非阻塞赋值连接了一个动态的类型,但是这种不可以的,因为电路只能连接死的bit位宽,所以vcs编译不通过。如果换成assgin赋值,照样是编译不通过,原因是一样的。

那么在V中是否可以做到定义一个无限大的mem?从综合的角度来看是不可以的,因为rtl是要综合为固定的硬件的,也就是说综合后的硬件是固定的,所以是做不到无限大的。

3、打开各类文件

evince打开pdf文件。soffice 打开word等文档。

4、在UVM中使用宏定义传递参数,避免重复代码

例如`UVM_TESTCASE

`define UVM_TESTCASE(testname, seqname) \

class testname extends uvm_test; \

    `uvm_compent_utils(testname) \

    …… \

    uvm_config_db……(……,seqname::type_id::grt()); \

endclass : testname \

之后需要定义一个名为tc_write,调用wrtie_seq的类,就可以直接如下:

`UVM_ TESTCASE(tc_write, write_seq);

这样不同的testcase可以直接调用这个宏完成testcase class的定义。

5、如何显示全路径?

使用命令pwd。

6、断言中出现(c==1,a=b)是什么意思?

这个一般是在断言文件中使用局部变量的时候会出现的用法,意思为前者为真的时候,将b的值赋给a(a是局部变量)。可见SVA书籍P77页。

7、vim开启鼠标点击定位光标

在vim编辑器内使用如下命令:【:set mouse=a】开启鼠标点击定位光标。

8、shell脚本中fi是什么意思?

shell中的fi单独没意思,和if语句搭配是if的结尾。

if [ $oldboy -eq 1 ];then
echo "good"

else

echo bad
fi             ##这里的fi就是if结尾,在shell中不用不行,但py语言就不用。

9、`undef

指令`undef将取消先前定义的文本宏的定义

10、$value$plusargs()怎么用?

相当于想传什么值就传什么值啊!你可以在外面给值!当然这个函数不一定给值,还可以给字符串!传字符串时,我们可以在sequence的重载等处,用处非常广哦~$value$plusargs(“line = %d”, line) //传line这个参数,并且输出的格式是%d(十进制)。

11、$readmemb(“filename”, mem)读出的全是X态,是为什么?

是因为文件打不开,说到底是文件的路径不对,这里可以使用绝对路径。

12、如何比较两个文件内容?

使用“diff”。例如比较文件1和文件2的内容是否一致,使用 diff 文件1 文件2  即可。

13、SV的输出格式:例如%m

%d 以及 %D 以十进制格式输出

%b 以及 %B 以二进制格式输出

%o 以及 %O 以八进制格式输出

%h 以及 %H 以十六进制格式输出

%e 以及 %E 以指数表示方式输出实数(real型)

%f 以及 %F 以十进制数表示方式输出实数(real型)

%g 以及 %G 以十进制数或者以指数表示方式输出实数

%s 以及 %S 以字符串格式输出

%c 以及 %C 以ASCII码格式输出

%m 以及 %M 输出层次名

%v 以及 %V 输出线网类型变量的强度

%t 以及 %T 以当前时间格式输出

14、solve…before约束

看以下的例子:

 solve a before data约束的存在,随机变量a会先被赋予随机值,a为1或0的概率为1/2,接下来再为data随机变量赋随机值,其概率取决于a的值。

注:randc类型变量不被允许使用solve…before约束。

15、数组定位方法之find_index with

find_index with ()找出符合条件的索引。

find with ()找出符合条件的元素。

例如

int d[]=’{1,2,3,4,5,6}, tq[$];

tq = d. find with (item > 3); //{4,5,6}

tq = d. find_index with (item > 3); //{3,4,5}

更多数组定位方法见SV书本P35。

(2022.10.10-至今)

16、如何在同一窗口打开多个终端并实现快捷键切换?

1.用正常的方式打开一个终端。

2.使用组合键 ctrl+shift+t , 这时就在同一个窗口中打开了另一个终端,当然再按一次ctrl+shift+t,会再生成一个,需要多少了大家可以自行决定

3.按组合键Alt+1,就会切换到第一个终端,按Alt+2,就会切换到第2个终端,Alt+n,对应的就会切换到第n个终端。

17、如何让vim查找的时候不区分大小写?

在vim中输入:set ignorecase。

将这句命令加入.vimrc文件中,再source ~/.vimrc 后,重新打开的文件,就可以不区分大小写查找。

19、Kill端口和生成端口

记录一下,免得不记得时候到处找:

先登录SSH:ssh tansy@10.10.10.10

Kill指定端口:vncserver -kill :端口号

生成指定端口:vncserver :88 -geometry 1900x900

20、如何比对不同波形文件中的同一信号?

用verdi打开波形,选中信号,report输出信号为一个txt文件。比对txt文件即可。

21、同步操作两个波形文件

Verdi使用方法(2)— 高效对比两个波形_Willliam_william的博客-CSDN博客

22、python脚本知识:len函数和import xlrd

(1)len函数:可以用来判断某某是否为空。

作用:返回字符串、列表、字典、元组等长度。

语法:len(str)。

参数:str(要计算的字符串、列表、字典、元组等)。

返回值:字符串、列表、字典、元组等元素的长度。

(2)import xlrd:引入Excel库的xlrd,用来读取Excel数据

(3)注释:一种是用#符号注释(单行),一种是用"""符号注释(多行)。

23、iff

Systemverilog在@事件控制中添加了iff修饰词,只有当iff后的条件为真时,@事件才会触发。注意,iff可以在always和always_ff下使用,但是不能在always_comb、always_latch中使用。

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值