编写高效的测试设计(testbenches)---10
本帖最后由 fpgaw 于 2011-8-17 13:40 编辑有用的语言结构
Verilog
有用的Verilog语言结构,如 $monitor, $display,
及$time,在前面的verilog测试示例中论述过,这一节说明另外的可以在测试设计中使用的verilog语句结构。
force/release
force/release语句可以用来跨越进程对一个寄存器或一个电路网络的赋值。这结结构一般用于强制特定的设计的行为。一旦一个强制值释放,这个信号保持它的状态直到新的值被进程赋值。以下是force/release语句的用法。
module testbench;
..
initial begin
reset = 1;
force DataOut = 101;
#25 reset = 0;
#25 release DataOut;
..
..
end
endmodule
assign/deassign
assign/deassign语句与force/release相类似,但是assign/deassign只用于设计中的寄存器。他们一般用于设置输入值。就象一个force语句,assign语句超越进程语句的赋值。以下是一个assign/deassign语句的用法。
module testbench;
..
..
initial begin
reset = 1;
DataOut = 101;
#25 reset = 0;
release DataOut;
..
..
end
initial begin
#20 assign reset = 1;// this assign statement overrides the earlier
statement #25 reset = 0;
#50 release reset;
endmodule
timescales
timescale指示被用于为测试指定单位时间步。它也影响仿真器的精确度。表示符号为:‘timescale
reference_time/precision
Reference_time是一个用于测量的单位时间。Precision决定延时应该达到的精度,为仿真设置单位步距。以下是‘
timescale的使用方法。
‘timescale 1 ns / 1 ps
// this sets the reference time to 1 ns and precision to 1 ps.
module testbench;
..
..
initial begin
#5 reset = 1; // 5 unit time steps correspond to 5 * 1ns = 5ns in
simulation time
#10 reset = 0;
..
end
initial begin
$display (“%d , Reset = %b”, $time, reset); // this display
// statement will get executed
// on every simulator step, ie, 1 ps.
end
endmodule
如果仿真使用时延值,仿真就必须运行在一个比最小时延还好的精确度以内(为了归一化时延)。例如,如果9ps延时在仿真库中使用,相应仿真的精确度就必须是在1ps到9ps之间可调的范围。
只读储器初始化文件
verilog提供$readmemb和 $readmemh命令来读取ascii文件来初始化存储器的内容。这个命令可以在仿真中用来初始化Xilinx
BlockRAM 或者SelectRAM器件。符号表达如下:
$readmemb (“<design.mif>”, design_instance);
MIF是由crorgenerator 生成的存储器初始化文件(Memory Initialization File)。使用者指定MIF的内容。
VHDL
除了前文曾经叙述过的vhdl命令以外(assert,wait,report),以下的结构也对vhdl测试台文件的创建有所帮助。
meminitfile
vhdl提供一个meminitfile记录用来输入存储模块的内容。以下是它的符号说明:
FILE meminitfile: TEXT IS IN “<design.mif>”;
MIF是由crorgenerator 生成的存储器初始化文件(Memory Initialization File)。使用者指定MIF的内容。 为什么只有3,4,10?????????? 关于VHDL 太少了!!!1可惜 是啊,很希望看到些讨论VHDL的 只读储器初始化文件
verilog提供$readmemb和 $readmemh命令来读取ascii文件来初始化存储器的内容。这个命令可以在仿真中用来初始化Xilinx
BlockRAM 或者SelectRAM器件。符号表达如下:
$readmemb (“<design.mif>”, design_instance);
MIF是由crorgenerator 生成的存储器初始化文件(Memory Initialization File)。使用者指定MIF的内容。
VHDL
除了前文曾经叙述过的vhdl命令以外(assert,wait,report),以下的结构也对vhdl测试台文件的创建有所帮助。
meminitfile
vhdl提供一个meminitfile记录用来输入存储模块的内容。以下是它的符号说明:
FILE meminitfile: TEXT IS IN “<design.mif>”;
MIF是由crorgenerator 生成的存储器初始化文件(Memory Initialization File)。使用者指定MIF的内容。
页:
[1]