**只是寫了兩種情況,乙個好的驗證testbeach**必須包含所有情況,可以重複但一定不能漏掉情況。
`timescale 1ns/1ps;
module drink_status_moore_tb();
localparam charge_width = 6;
localparam reset_init_h =10;
localparam reset_init_l =20;
localparam freq =50; //單位mhz
localparam zhouqi =1000/50;
wire oney;
wire twoy;
wire fivey;
reg clk;
reg rst_n;
wire out;
wire [charge_width-1:0] charge;
reg [15:0] charge_out_array[1023:0];
reg [15:0] charge_gld_array[1023:0];
reg [15:0] output_cnt;
reg [15:0] input_cnt;
reg [2:0] money_int;
reg [2:0] send_finish;
reg [15:0] error_num;
integer i;
assign oney = money[0];
assign twoy = money[1];
assign fivey = money[2];
//initial begin : rst_n_qq
rst_n = 1'b1;
#reset_init_h;
rst_n = 1'b0;
#reset_init_l;
rst_n = 1'b1;
end// initial begin : clk_qq
clk = 1'b0;
forever #(zhouqi/2) clk = ~clk;
end
//task模組 :相當於函式的作用 與function意思大致
task money_in(
input [2:0] oney_time,
input [2:0] twoy_time,
input [2:0] fivey_time
);repeat(oney_time) begin
@(posedge clk);
money_int = 3'b001;
endrepeat(twoy_time) begin
@(posedge clk);
money_int = 3'b010;
endrepeat(fivey_time) begin
@(posedge clk);
money_int = 3'b100;
end@(posedge clk);
money_int = 3'b000;
input_cnt = input_cnt + 1'b1; //給變數賦值,不在此處,但一定要賦值
endtask
//建立激勵訊號
initial begin
send_finish = 1'b0;
money_int = 3'b000;
input_cnt = 16'h0000;
#reset_init_h+reset_init_l;
@(posedge clk);
money_in(0,0,2);
charge_out_array[input_cnt-1] = 6'd20;
money_in(1,1,1);
charge_out_array[input_cnt-1] = 6'd00;
send_finish = 1'b1;
#1000;
$finish();
endinitial begin : output_real_clk
money_int = 3'b000;
#reset_init_h+reset_init_l;
@(posedge clk);
repeat(3) begin
@(posedge clk);
end#1;
if((out == 1'b0) &&(charge == 5'd20)) begin
$display("successful");
endelse begin
$display("error,out=%d,charge=%d",out,charge);
end@(posedge clk);
repeat(5) begin
@(posedge clk);
end#1;
if((out == 1'b0) &&(charge == 5'd0)) begin
$display("successful");
endelse begin
$display("error,out=%d,charge=%d",out,charge);
endalways@(posedge out,negedge rst_n) begin
if(rst_n == 1'b0) begin
output_cnt <= 1'b0;
endelse begin
output_cnt <= output_cnt + 1'b1;
charge_gld_array[output_cnt-1] <= charge;
endend
initial begin
error_num =16'h0000;
@(posedge send_finish);
@(posedge clk);
@(posedge clk);
@(posedge clk);
if(output_cnt == input_cnt) begin
$display("successful");
endelse begin
error_num = error_num + 1'b1;
$display("error,output_cnt=%d,input_cnt=%d",output_cnt,input_cnt);
endfor(i=0; iif(charge_gld_array[i]==charge_out_array[i]) begin
$display("successful");
endelse begin $display("error,times=%d,charge_gld_array=%d,charge_out_array=%d",i+1,charge_gld_array,charge_out_array);
error_num = error_num + 1'b1;
endinitial begin
if(error_num == 16'h0000)
$display("pass");
endelse begin
$display("error");
endend
//埠名與tb上層名沒有例化
endmodule
測試自動售貨機
在面試軟體測試職位時,被問到怎樣測試自動售貨機,但是就亂答了一下,沒什麼條理。回來網搜了一下也沒有什麼很好的答案,本來測試這種可能就是每個人有不同看法。回頭問了一下做測試的朋友,給了幾點建議 從功能點和流程等方面測試,以及對於異常的處理情況。1 首先可能先要測試一下,外觀設計的是否合理,是否符合大眾...
自動售貨機 (30 分)
如圖所示的簡易自動售貨機,物品架1 2上共有10樣商品,按順序進行編號分別為1 10,標有 與名稱,乙個編號對應乙個可操作按鈕,供選擇商品使用。如果物架上的商品被使用者買走,儲物櫃中會自動取出商品送到物架上,保證物品架上一定會有商品。使用者可以一次投入較多錢幣,並可以選擇多樣商品,售貨機可以一次性將...
自動售貨機軟體工程課設 軟體工程 自動售貨機
自動售貨機分析 軟體工程 資訊學院 08級 通訊工程二班 羅運俊 200800120134 作業題 物件導向分析實踐 下面是自動售貨機系統的需求陳述,試建立它的物件模型 動態模型和功能模型 自動售貨機系統是一種無人售貨系統。售貨時,顧客把硬幣投入機器的投幣口中,機器檢查硬幣的大小 重量 厚度及邊緣型...