作者:5life
& ~# S/ p* ?$ y+ Q5 K6 M 工作状态: 建立仿真环境
& ^& @, J0 } F% N* Y3 G
; \0 j ?* _; ?$ e: H' z
我们为什么要输出fsdb格式的波形文件的, 原因之一是fsdb文件比较小, 其二是该格式可以由Debussy读取,以便使用Debussy进行代码分析.
( o5 k# U; W6 v' Q 我们要输出fsdb的话, 要通过PLI 来调用Debussy的
系统函数.
; v4 T3 Y b. a) [- D2 I
关于PLI, 在此不再赘述: 请看帖子
; K8 J3 l6 n- g
PLI文档 :
http://bbs.dicder.com/viewthread.php?tid=60 . [) W2 F" s" {
首先, 我们建立一个工作目录
; e; s# m6 I6 W% z- Y8 V
$> mkdir work
* o0 k- W3 v4 `# k
$> cd work
, u; Y0 Z' ]% u! |/ v0 z! R5 |" V 然后新开一个teminal窗口, 找到Debussy的安装目录. 进入/share/PLI/, 在该目录下有很多版本的目录,选择一个属于你的NC版本的目录, 比如nc51, 然后选择你的操作系统, 如LINUX,(换而言之, 现在处于/share/PLI/nc51/LINUX) 之后你会发现:
2 U+ Q& D& |6 F3 a' S: C% o" }& K nc_loadpli1/ nc_shared/ pli.a veriuser.c
2 T3 t! W$ o0 I3 \" f
把这些目录及文件拷贝到 work目录下.
" N3 w; |! _! m, I 4 ^3 G2 ?3 B" s* c/ t
) `/ _. L" ?; k$ c, p- 免编译. X, W6 Z& G* A! [8 u$ w
; x1 ~, {% s9 W2 Z( H) e 如果你不需要添加其他的系统函数, 那么直接可以用nc_loadpli1 下debpli.so 文件. 使用方法:
8 m) O: h4 R( G* k' W, E6 e) \& ]" O; ~# q+ w% q
$> ncverilog +access+wrc +loadpli1= ./nc_loadpli1/debpli.so : debpli_boot rtl.files
8 \! Y" K3 A8 {5 c1 S 当然在testbench文件中要写上你所希望调用的debussy 提供的函数, 基本的如:
6 N% o: j- x* m' c3 [& j
$fsdbDumpfile("wave.fsdb");
8 [2 W- w7 l1 d- s. ^
$fsdbDumpvars(6, tb);
* U+ |- ?) ^2 M6 d+ w6 i! L9 S* ~# m; R4 N4 [, Q* W- c3 j
) {( j+ P9 G; g: R! ~5 W+ ]* }6 ^& S# z0 t
- 需编译8 b( K" N+ z1 V$ G3 Z1 P) Z! C) K& ?
* k$ \( B9 w J& z- K. } 如果你已经对veriuser.c进行了修改, 那么首先把veriuser.c 编译为veriuser.o文件.
, [. ~5 e: q9 P/ @5 v7 [
- L2 n% z( N: b* C |( Q cc -KPIC -c veriuser.c -I${CDS_INST_DIR}/tools/verilog/include
: ]3 \$ q5 z. c) ]4 {7 F
7 O1 r+ g" p9 [) X1 f
之后连接
! v5 @* i a; ` ld -G veriuser.o pli.a -o debussypli.so
3 m. i# `5 j6 X& q( g# ~
使用方法:
8 j. h' y( C. A ]
" `( l7 L/ N+ o' X: a
$> ncverilog +access+wrc +loadpli1= ./debussypli.so : debussy_bootstrap rtl.files
p) d0 _; l. m5 f: ~* \+ r
当然在testbench文件中要写上你所希望调用的debussy 提供的函数, 基本的如:
, J' j; t) R2 s* i7 w, Q
$fsdbDumpfile("wave.fsdb");
* T) r2 @' }/ @9 O1 p4 E3 i
$fsdbDumpvars(6, tb);