testbench总结
上一篇 / 下一篇 2012-02-03 09:15:19 / 个人分类:脚本
Verilog和Ncverilog命令使用库文件或库目录
ex). ncverilog -f run.f -v lib/lib.v -y lib2 +libext+.v //一般编译文件在run.f中, 库文件在lib.v中,lib2目录中的.v文件系统自动搜索使用库文件或库目录,只编译需要的模块而不必全部编译.2). 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", 否则没有读写权限
在记录信号或者波形时需要指出被记录信号的路径,如:tb.module.u1.clk.
3)
ncverilog编译的顺序
ncverilog file1 file2 ....有时候这些文件存在依存关系,如在file2中要用到在file1中定义的变量,这时候就要注意其编译的顺序是
从后到前,就先编译file1然后才是file2.
4
信号的强制赋值force
首先, force语句只能在过程语句中出现,即要在initial 或者 always 中间. 去除force 用 release 语句.initial begin force sig1 = 1'b1; ... ; release sig1; end
force可以对wire赋值,这时整个net都被赋值; 也可以对reg赋值.
5
加载测试向量时,避免在时钟的上下沿变化
为了模拟真实器件的行为,加载测试向量时,避免在时钟的上下沿变化,而是在时钟的上升沿延时一个时间单位后,加载的测试向量发生变化。如:assign #5 c=a^b
……
@(posedge clk) #(0.1*`cycle) A=1;
6
testbench的波形输出
module top;...
initial
begin
$dumpfile("./top.vcd"); //存储波形的文件名和路径,一般是.vcd格式.
$dumpvars(1,top); //存储top这一层的所有信号数据
$dumpvars(2,top.u1); //存储top.u1之下两层的所有数据信号(包含top.u1这一层)
$dumpvars(3,top.u2); //存储top.u2之下三层的所有数据信号(包含top.u2这一层)
$dumpvars(0,top.u3); //存储top.u3之下所有层的所有数据信号
end
endmodule
7
产生随机数,seed是种子
$random(seed);ex: din <= $random(20);
8
仿真时间
//仿真时间,为unsigned型的64位数据$time
ex:
...
time condition_happen_time;
...
condition_happen_time = $time;
...
$monitor($time,"data utput = %d", dout);
9
参数
|
parameter para1 = 10, |
延迟模型
|
specify |
文件I/O
|
1.打开文件 |
仿真控制
|
$finish(parameter); //parameter = 0,1,2 |
读入SDF文件
|
// |
一些书写Testbench的技巧
|
1.如果激励中有一些重复的项目,可以考虑将这些语句编写成一个task,这样会给书写和仿真带来很大方便。例如,一个存储器的testbench的激励可以包含write,read等task。 |
》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
testbench
在顶层调用设计内部层次信号,无需将信号从端口引出,可以使用verilog的层次化调用
wire [7:0] data = test_top.dut.data ;
相关阅读:
- tcl dictionary (testset, 2010-11-24)
- file access (testset, 2010-11-24)
- file usage in verification (testset, 2010-12-02)
- output the file using tcl (testset, 2010-12-06)
- 只显示当前目录下包含路径的文件列表 (kunzj, 2011-11-20)
- 查找指定目录下指定类型的文件 (njithjw, 2011-12-21)
- 删除指定目录下指定类型的文件 (njithjw, 2011-12-21)
- cadence 环境设置 (heshufeng, 2012-2-01)