Ncverilog 的一些经验
2012-12-08
标签:

1.Verilog和Ncverilog命令使用库文件或库目录

ex). ncverilog -f run.f -v lib/lib.v -y lib2 +libext+.v//一般编译文件在run.f中, 库文件在lib.v中,lib2目录中的.v文件系统自动搜索

使用库文件或库目录,只编译需要的模块而不必全部编译

2.Verilog Testbench信号记录的系统任务:

1). SHM数据库可以记录在设计仿真过程中信号的变化. 它只在probes有效的时间内记录你set probe on的信号的变化.

ex). $shm_open("waves.shm");//打开波形数据库

$shm_probe(top, "AS"); // set probe on "top",

第二个参数:A --signals of the specificscrope

S -- Ports of the specified scope and below, excluding library cells

C -- Ports of the specified scope and below, including library cells

AS -- Signals of the specified scope and below, excluding library cells

AC -- Signals of the specified scope and below, including library cells

还有一个 M ,表示当前scope的memories, 可以跟上面的结合使用, "AM" "AMS" "AMC"

什么都不加表示当前scope的ports;

$shm_close//关闭数据库

2). VCD数据库也可以记录在设计仿真过程中信号的变化. 它只记录你选择的信号的变化.

ex). $dumpfile("filename");//打开数据库

$dumpvars(1, top.u1);//scope = top.u1, depth = 1

第一个参数表示深度, 为0时记录所有深度; 第二个参数表示scope,省略时表当前的scope.

$dumpvars; //depth = all scope = all

$dumpvars(0); //depth = all scope = current

$dumpvars(1, top.u1); //depth = 1 scope = top.u1

$dumpoff//暂停记录数据改变,信号变化不写入库文件中

$dumpon//重新恢复记录

3). Debussy fsdb数据库也可以记录信号的变化,它的优势是可以跟debussy结合,方便调试.

如果要在ncverilog仿真时,记录信号, 首先要设置debussy:

a. setenv LD_LIBRARY_PATH :$LD_LIBRARY_PATH

(path for debpli.so file (/share/PLI/nc_xl//nc_loadpli1))

b. while invoking ncverilog use the +ncloadpli1 option.

ncverilog -f run.f +debug +ncloadpli1=debpli:deb_PLIPtr

fsdb数据库文件的记录方法,是使用$fsdbDumpfile和$fsdbDumpvars系统函数,使用方法参见VCD

注意: 在用ncverilog的时候,为了正确地记录波形,要使用参数: "+access+rw", 否则没有读写权限

3. ncverilog编译的顺序:ncverilog file1 file2 ....

有时候这些文件存在依存关系,如在file2中要用到在file1中定义的变量,这时候就要注意其编译的顺序是从后到前,就先编译file2然后才是file2.

4. 信号的强制赋值force

首先, force语句只能在过程语句中出现,即要在initial 或者 always 中间. 去除force 用 release 语句.

initial beginforce sig1 = 1'b1; ... ; release sig1; end

force可以对wire赋值,这时整个net都被赋值; 也可以对reg赋值.

可能会用到的工具/仪表
相关文章
推荐文章
热门文章
章节目录
本站简介 | 意见建议 | 免责声明 | 版权声明 | 联系我们
CopyRight@2024-2039 嵌入式资源网
蜀ICP备2021025729号