找回密码
 注册
关于网站域名变更的通知
查看: 248|回复: 1
打印 上一主题 下一主题

构建svunit环境

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-8-13 13:18 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
引言
" W1 W- o* n3 I做IC验证时,除了采用SVA,DPI等验证手段,还可以采用svunit来实现module级别的验证。% t! `# z" v/ Z

" n  s+ |" E1 ?, \+ y1,什么是svunit?
8 O& Z. s  n+ d' m- I' D* y6 ESVUnit is a unit test framework for developers writing code in systemverilog. Verify systemverilog modules, classes and inteRFaces in isolation with SVUnit to eliminate bugs before they infest your design!
6 k$ _, l5 r5 k% _! P1 R3 S# j9 i& g3 T+ @+ [, M0 Q
2,svunit使用步骤
8 R( l- g8 Z) Z$ A- ~7 q" l" u1 N; b' K; e0 w+ b
2.1,下载最新svunit支持代码:v2.11
/ T/ R; x5 Y% o0 K: S/ m
0 D- b2 U) u% g8 |0 B! [2.2,解压:生成svunit-code目录
( N) x- O! U  l; R* M& h8 ]' c
; ^" H. c2 P; W4 K8 R0 DTar -xvf svunit-v2.11.tar.gz
3 z9 e. ]( ]0 e. o$ ]9 D5 u6 ^7 S- q) M
2.3,按照README.txt操作,熟悉一下基本的构建过程$ C* j/ s! z+ K( ~% V3 c

$ A' ~0 j# [+ Z2 {! L% `0 H3,下面我们以一个加法器的例子来说明svnuit的用法
* ~4 }+ S7 l7 c8 L( _; a: E6 M% T( @% E( l
3.1,编写DUT:add.sv
! E5 u6 j" K. _1 o
$ N8 }7 M3 t1 t% L. g
  • /*
  • * Rill for svunit test 2015-04-20
  • */
  • module add
  • (
  •         input clk,
  •         input rst_n,
  •         input enable,
  •         input [3:0] a,
  •         input [3:0] b,
  •         output [7:0] sum
  • );
  •         logic [7:0] sum_r;
  •         always_ff @(posedge clk)
  •                 if(~rst_n | ~enable)
  •                         sum_r <= 8'b0;
  •                 else if(enable)
  •                         sum_r <= a + b;
  •         assign sum = sum_r;
  • endmodule:add
  • " D( h/ Y4 @% O& o7 }  P2 C& M* [7 m
   ; I* _  B6 c$ X
3.2,生成包装代码并添加激励和检查代码6 G! i# |" Q& e- o! ~( \( F

4 M/ V0 s# ~. c( \1 F
& J. F7 [5 ?) R% ]5 l
3 n( L0 i) \- Z, {/ i
- J5 U, H3 o% P9 f0 @% e& j7 g5 Z
1 [2 U  F7 i: q; y/ ?" w" Z$ c6 I1 @8 f) k6 `
3.3,测试结果
* ?# ^( N. _/ P  E9 r" ^/ B: \; ?! D$ \% H# M
2 H% A* o+ a  V6 s
5 `9 N% {) B. w" j
  P- q) |7 S/ j4 s/ V, ]

% W( ]* f6 {8 U5 C% m4 Q8 X! V7 h5 k; z
注:svunit的脚本主要是用Perl写的,所以需要主机上有perl语言库,如果出现类似“/perl command not found”的提示,说明你的主机上没有安装perl支持库,或者perl版本太旧,或者安装perl后环境变量没有指定正确。# r7 K( h( Z# e; G5 M1 I
! O9 t( {7 y) F1 A: u
4,附录:svunit使用步骤( ~; X9 ?$ o# C0 c" }, w
# z- m* H6 F& v7 m' K. b
1> 解压:tar -xvf svunit-v2.11.tar.gz- L* X" [! ~! t! g6 k" w' q
$ c4 p. [& H4 \9 V
2> mkdir my_svunit_test; cdmy_svunit_test4 I4 v) P  _8 ~" ~' J
( ^& S! K+ p" ]. w4 B
3> touch add.sv并编辑
4 C& _1 x, M0 ~  I+ i& `  e+ u. a9 {, s; b' b1 d
4>复制Setup.bsh到my_svnuit_test,并修改SVUNIT_INSTALL路径,最后执行:source Setup.bsh
. O7 p! V3 H( F7 j
( O5 }* o; z( T8 e7 z5>生成封装文件:create_unit_test.pl add.sv( Q4 v: ?* q0 i6 `8 i* }
  v+ h5 K+ b0 ~& G' U
6>编辑封装文件:add_unit_test.sv( \# c0 T7 M, o% O  J! j+ l

! M! H8 N6 z  _* E- Q/ \! l7>生成Makefile:create_svuit.pl) H: F! x0 b% O0 ~$ W( u

( @4 y, L2 _: |3 b. \8>指定使用的仿真工具:修改Makefile+ K1 F" i' q0 u

* j6 P4 V2 L. \3 l3 ]( x* F9>运行:make
3 x( F) g0 E  J/ S
1 j( B$ I+ M: J8 M$ F. t5 T6 s: ~  Y& p9 m3 a* ]# f
5,小结; ?: `# J( j" G

9 C) o: L5 u3 @# f+ S  csvunit的好处在于提供了几个脚本,可以自动将待测module进行自动封装,省去了一些编码工作。个人感觉目前svunit的功能还比较弱。每个SVTEST块实际是一个fork/join_any块,所有SVTEST块顺序执行。
3 b) |* w9 u: j1 H: s
; o  b& |8 `( E3 Y( O! I$ l. I在实际的项目中可以通过三种方式使用svunit:3 a* G0 p  n6 c

/ B: m. Q7 G  b9 v; K! r$ X8 {# a   1>构建子模块测试流程,按照svunit提供的脚本,将主要子模块进行测试。模块的激励以及assert内容都需要自己加。. L/ k( O1 W9 E% a
2 q0 K4 \( _( X! `6 b
   2>参考svunit的思想,针对主要模块的某部分代码(比如从某个文件的第100行到第200行),利用force/deposit作为激励,利用assertion作为检测手段,构建block测试流程。+ B+ n- U; z2 A) E
/ E" R7 O( }6 K: a/ g& b
   3>将UVM和svunit结合使用。
* j8 O# Y* j; s6 t3 s" v6 }) G  P

该用户从未签到

2#
发表于 2020-8-13 14:05 | 只看该作者
构建svunit环境
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-7-1 03:30 , Processed in 0.078125 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表