Hey guys, i need help. test bench file don't working :(((((((
this is verilog module
module kursinis(clk, SB, O35, O4, CB, LED2ON, LED1, LED3, LED2BLINK,
state);
// SB-START_BUTTON, O3-OVER_3V, O4-OVER_4V, CB- CONTROL_BUTTON
input clk, SB, O35, O4, CB;
output LED2ON, LED1, LED3, LED2BLINK;
output [2:0]state;
//busenos DB-dead battery, LB- low battery, FB- full battery,
C1-calibrated1, C2-calibtrated2
parameter OFF= 3'b001, DB= 3'b010, LB= 3'b011, FB= 3'b100, C1=
3'b101, C2=3'b110;
//esamos busenos registras ir kitos busenos signalas
reg [2:0] state_reg, state_next;
reg LED2ON, LED1, LED3, LED2BLINK;
assign state = state_reg;
// busenu registro perrasymas
always @(posedge clk)
begin
state_reg <= state_next;
end
// kitos busenos skaiciavimas
always @(state_reg, clk, SB, O35, O4, CB)
begin
case(state_reg)
OFF : if (SB == 1'b1) begin
state_next <= DB;
LED2ON <= 1'b1;
end
else begin
state_next <= OFF;
end
DB : if (SB == 1'b0) begin
state_next <= OFF;
LED2ON <= 1'b0;
end else if (O35 == 1'b1) begin
state_next <= LB;
LED2ON <= 1'b0;
LED2BLINK <= 1'b1;
end
else begin
state_next <= DB;
end
LB : if (SB == 1'b0) begin
state_next <= OFF;
LED2BLINK <= 1'b0;
end else if (O4 == 1'b1) begin
state_next <= FB;
LED2BLINK <= 1'b0;
LED1 <= 1'b1;
end else if (O35 == 0'b1) begin
state_next <= DB;
LED2BLINK <= 1'b0;
LED2ON <= 1'b1;
end else if (CB == 1'b1) begin
state_next <= C1;
LED3 <= 1'b1;
end
else begin
state_next <=LB;
end
FB : if (SB == 1'b0) begin
state_next <= OFF;
LED1 <= 1'b0;
end else if (O4 == 1'b0) begin
state_next <= LB;
LED2BLINK <= 1'b1;
LED1 <= 1'b0;
end else if (CB == 1'b1) begin
state_next <= C2;
LED3 <= 1'b1;
end
else begin
state_next <=FB;
end
C1 : if (SB == 1'b0) begin
state_next <= OFF;
LED3 <= 1'b0;
LED2BLINK <= 1'b0;
end else if (CB == 1'b0) begin
state_next <= LB;
LED3 <= 1'b0;
end else if (O35 == 1'b0) begin
state_next <= DB;
LED3 <= 1'b0;
LED2ON <= 1'b1;
LED2BLINK <= 1'b0;
end
else begin
state_next <= C1;
end
C2 : if (SB == 1'b0) begin
state_next <= OFF;
LED3 <= 1'b0;
LED1 <= 1'b0;
end else if (CB == 1'b0) begin
state_next <= FB;
LED3 <= 1'b0;
end else if (O4 == 1'b0) begin
state_next <= C1;
LED1 <= 1'b0;
LED2BLINK <= 1'b1;
end
else begin
state_next <= C2;
end
endcase
end
endmodule
////////////////////////////////////////////////////////////////
and this is test bench file
module kursinis_tb;
reg clk, SB, O35, O4, CB;
output LED2ON, LED1, LED3, LED2BLINK;
output [2:0]state;
kursinis pirmas(
.clk (clk),
.SB (SB),
.O35 (O35),
.O4 (O4),
.CB (CB),
.LED2ON (LED2ON),
.LED1 (LED1),
.LED3 (LED3),
.LED2BLINK (LED2BLINK),
.state (state)
);
initial
begin
clk =0;
SB=0;
O35=0;
O4=0;
CB=0;
end
always
#50 clk = !clk;
initial
begin
#100 SB=1;
#100 O35=1;
#5000 $stop;
end
endmodule
Rytis wrote: > test bench file don't working :((((((( WHAT is not working? WHAT do you expect? And WHAT do you get instead?
/==================================================== 2 // This is FSM demo program using single always 3 // for both seq and combo logic 4 // Design Name : fsm_using_single_always 5 // File Name : fsm_using_single_always.v 6 //===================================================== 7 module fsm_using_single_always ( 8 clock , // clock 9 reset , // Active high, syn reset 10 req_0 , // Request 0 11 req_1 , // Request 1 12 gnt_0 , // Grant 0 13 gnt_1 14 ); 15 //=============Input Ports============================= 16 input clock,reset,req_0,req_1; 17 //=============Output Ports=========================== 18 output gnt_0,gnt_1; 19 //=============Input ports Data Type=================== 20 wire clock,reset,req_0,req_1; 21 //=============Output Ports Data Type================== 22 reg gnt_0,gnt_1; 23 //=============Internal Constants====================== 24 parameter SIZE = 3 ; 25 parameter IDLE = 3'b001,GNT0 = 3'b010,GNT1 = 3'b100 ; 26 //=============Internal Variables====================== 27 reg [SIZE-1:0] state ;// Seq part of the FSM 28 reg [SIZE-1:0] next_state ;// combo part of FSM 29 //==========Code startes Here========================== 30 always @ (posedge clock) 31 begin : FSM 32 if (reset == 1'b1) begin 33 state <= #1 IDLE; 34 gnt_0 <= 0; 35 gnt_1 <= 0; 36 end else 37 case(state) 38 IDLE : if (req_0 == 1'b1) begin 39 state <= #1 GNT0; 40 gnt_0 <= 1; 41 end else if (req_1 == 1'b1) begin 42 gnt_1 <= 1; 43 state <= #1 GNT1; 44 end else begin 45 state <= #1 IDLE; 46 end 47 GNT0 : if (req_0 == 1'b1) begin 48 state <= #1 GNT0; 49 end else begin 50 gnt_0 <= 0; 51 state <= #1 IDLE; 52 end 53 GNT1 : if (req_1 == 1'b1) begin 54 state <= #1 GNT1; 55 end else begin 56 gnt_1 <= 0; 57 state <= #1 IDLE; 58 end 59 default : state <= #1 IDLE; 60 endcase 61 end 62 63 endmodule // End of Module arbiter Get to know more visit the :- http://www.cetpainfotech.com/technology/system-verilog-Training
Please log in before posting. Registration is free and takes only a minute.
Existing account
Do you have a Google/GoogleMail account? No registration required!
Log in with Google account
Log in with Google account
No account? Register here.
