发新话题
打印

[原创] 用HDLScore做覆盖率分析

[原创] 用HDLScore做覆盖率分析

作者:     5life
. y' V$ E6 q5 ^. b5 V' Q" W工作状态:  建立仿真环境9 `- O$ b; j" r2 e- j
  @5 |0 @7 N' o5 O$ ~! [
  我们进行验证时, 除了做功能性仿真外, 还需要做覆盖率分析, 这样可以提高验证的全面性. 通常我们可以采用仿真工具自带的覆盖率分析工具. 这方面在这里就不再详加叙述, 可以参看相关的资料. 在论坛中也有VCS的覆盖率工具使用说明.! Y1 W1 ~" t3 I9 P$ N& r) C' v& H
   HDLScore是SUMMIT公司的分析代码覆盖率的工具. 理解和使用该工具对自身能力的提高以及工作的效率有很大帮助.5 I6 g3 h& b$ P0 d! @
   
6 @; t, J4 R  |' K: O5 y( l   HDLScore的工作步骤分为3个: instrument, 仿真(simulation)和报告(reporting):
7 X3 R" N1 J( D; k; n1 w  v   具体产生文件与过程如下图所示:1 Y5 G4 S$ z1 P& M( T
9 k/ S& j. a0 [/ p+ e
   1. instrument
$ A1 |6 ?6 y  A& @8 b( O# O. |# y     该步骤将编译整个设计, 选择覆盖率的类型, 提取FSM和产生在仿真时使用的instrumented 的代码. 该步骤的目的是为了产生嵌入HDLSCORE系统任务和函数的代码./ |+ S  [0 ]# D7 R3 c6 L
     shell下命令为:
- i/ h( M7 i2 v. r1 H       $> hdli -verilog hdli.cf
+ O( C4 b4 r- V$ @   其中, -verilog代表是verilog文件. 3 Y* y+ f! L# [, j0 Y4 j8 }* X. u
        hdli.cf 是命令文件, 其中有很多对hdli的设置1 v3 M# i6 ^/ {7 m
    典型为:
1 w. L+ l& P% R$ k3 _        compile -f design/run.f
( g5 ?$ P- o. J2 O" a$ }        set_coverable_operators -all' {* }( o1 V! P: Y' K( B
        set_coverable_statements -all
, j$ r4 |" H0 r# Z8 S5 J        select_coverage -instance -block -path -expr -nlevel *...
' r! U+ _* i" J# Q1 ^: O/ ]        extract_fsm -auto
, i% z  c! W. j5 D- n        select_fsm_coverage *. v; }5 G% @2 S6 `
        list_fsms
" O- f5 x: M# e: G- I  q! u' f! a        gen_instrumented_code
' c" L8 F/ _, Z) ?; _5 t& ]* c5 X    执行完命令后, 在当前目录下产生hdls_work目录. 0 G1 {! Y# H, {( Y6 e+ t
    其中有最重要的hdls.vin文件, 该文件是产生用于覆盖率分析的中间文件.
# S# b) d( S2 O    Log文件: hdli.log
/ A6 j. V: Q# s3 o( C
' S  {5 q% e1 |$ m9 s! k   2. 仿真(simulation) (遇到license问题)
: c' s6 b) U( Q4 ^0 ]      $> ncverilog design/test_bench1.v hdls_work/hdls.vin +loadpli1=hdlspli:hdlscore_bootstrap +hdls+configfile+./scripts/sim.cf +access+wrc
" n. u. k# W1 E3 v. d) E4 N2 X2 f$ e) l. T* X      sim.cf 是命令文件, 其中有很多对hdls的设置
$ V8 ]7 V6 b1 c' I( i9 y' H    典型为:. r" ]& v1 ^9 T: L  o
       load_design         hdls_work/hdls.dgn
  R2 {- ]' k( i1 {; {, `       load_coverage       hdls_work/hdls.cov- C7 P6 K! R' z0 k/ P9 ?
       save_coverage -code hdls_work/hdls.sim.cov% p  v3 z" `$ s  M
       save_coverage -fsm  hdls_work/hdls.fsm
( |* p; @% j5 p; H  注: license问题: 如果用hdlc那么可以仿真, 但是用命令行确不可以(why?) hdlc中命令为:
# U. p' @  g/ w% n" A# ^% W     ncverilog design/test_bench1.v ./hdls_work/hdls.vin +togl+logfile=vertoggle.log +togl+master=vertoggle.mst +togl+workdir=toggle_work +togl+limit=1 +loadpli1=/_TOOLS_/dist/summit-hdlscore-/5.3.3/i686-pc-linux2.4/Linux/pli/ncv1_21/hdlspli.so:hdlscore_bootstrap +hdls+config+./hdls_work/tclconfigfile +ncsimexe+ncsim +access+rwc +ncelabexe+ncelab$ u( J' v. B( ?7 n7 }+ o& ?
      
. I+ k, U% I) r2 f; m% f& G7 j   3. 报告(reporting)- m# C* k+ h- ^  f& b5 x
      该步骤分析仿真后的结果, 得出文本的报告. 命令为:- V6 q4 ?! s9 h2 k& j, M
      $> hdlr hdlr.cf4 s. w) c8 K3 G6 s7 ~$ n* ~
       hdlr.cf 是命令文件, 其中有很多对hdlr的设置  V  p  p. j/ A1 B
    典型为:' L/ D  q% H9 {& d
       load_design hdls.dgn% L$ y7 h- m% i# i4 z, Q! d
       load_coverage hdls.sim.cov2 P  f; d8 J- r, w8 X
       load_coverage -fsm hdls.fsm  {' o6 E. H5 k; v, I+ i+ L
       list_coverage -module *
0 V% l$ y  N- C+ L" \! L       list_coverage -instance *...+ g* o+ ]8 s- s
       list_coverage -fsm -module ** L0 J4 i+ ^) J+ M: z1 b' Z8 @( u4 z
       list_coverage -fsm -instance *...
2 `) ?7 k8 q9 ?+ k5 h       report_detail -module -bpesaq -both *
附件: 您所在的用户组无法下载或查看附件
With your idea, Carry out together.

TOP

谢谢楼主啊,请问可否发一下HDLscore的培训资料啊?

TOP

发新话题