b = ~add(task1_a);
endtask
function [1:0]invert;//函数调用函数
input [1:0] a;
invert = ~add(a);
endfunction
//显示和文件操作
integer i;
initial
begin
a1 = 0;
for(i=0;i<100;i=i+1)
begin
if(a1 == 8'd50)
begin
$write("a1 is %d",a1);//显示
$write("\n\n\n\n\n\n");
$fwrite(f_id,"a1 is %d",a1);//写入文件
$fwrite(f_id,"\n\n\n\n\n\n");
end
else if(a1 == 8'd70)
begin
$display("a1 is %d\n\n",a1);//显示
$fdisplay(f_id,"a1 is %d\n\n",a1);//写入文件
end
else if (a1 == 8'd90)
begin
$fclose(f_id);
end
#2 a1 = a1 +1;
end
end
initial
begin
$monitor("test%d\n",a1);//变量变化就会显示
end
integer f_id;
initial
begin
f_id =$fopen("./test.txt");//打开一个文件
end
initial
begin
$strobe("tes1t%d\n",a1); //在时间步0结束的时候显示这一句
end
integer cool;
initial
begin
cool =4;//这是时间步0要执行的,
$strobe("strobe cool1 is %d at time%t\n",cool,$time);//这是时间步0要执行的,在时间步的最后显示
$display("cool1 is %d at time%t\n",cool,$time);//这是时间步0要执行的,
#4 cool =8;//这是时间步4要执行的,
$strobe("strobe2 cool1 is %d at time%t\n",cool,$time);//这是时间步4要执行的,
$display("cool2 is %d at time%t\n",cool,$time);//这是时间步4要执行的,
标签: testbench模型
testbench的一般模型
testbench的实现方法多样,而且还不断涌现出新方法,这些都是人们在为更好的验证设计做的努力。如VHDL,verilog,systemC,systemverilog均可以,但是真正的实际应用中绝对不是单独应用,而是将他们结合起来,使你的验证更方便,更全面。
由于系统验证的庞大,我们还是从最简单的,最熟悉的上手,就先单独用VHDL语言来写仿真语言,当然VHDL语言我们已经比较熟悉了,但是有个比较大的区别是,我们以前都是尽量学习能够综合的语言,但是在仿真中经常会用到一些行为级描述的语言,他们是不能被综合成逻辑的,但是却绝对可以让我们的验证更加高效方便,但是我们也不单独来讨论VHDL中哪些语言是能够综合,哪些语言是不能综合的,重点将会放在testbench的一般结构,编写testbench的一般思想,以及更多的是实际接触,以实际的例子与前面的可综合逻辑相结合达到完整的系统设计的上的!
testbench的几种思路:
一、只在testbench中实例化DUT(design undertest),激励输入是在testbench中临时产生的,只能用于简单逻辑。优点:简单,易操作。缺点:复用性差,效率低 模型如图1所示
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-36621-4.html
濒海战斗舰也就是反恐和特种作战用的
刺杀总统本来就是刑事