Skip to content

Commit 9d5a136

Browse files
Updated run scripts and dataset
1 parent 8558c29 commit 9d5a136

File tree

5 files changed

+2425
-0
lines changed

5 files changed

+2425
-0
lines changed

data_svagen/design2sva/fsm.sv

Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
2+
`define WIDTH 32
3+
module fsm(
4+
clk,
5+
reset_,
6+
in_A,
7+
in_B,
8+
fsm_out
9+
);
10+
parameter WIDTH = `WIDTH;
11+
parameter FSM_WIDTH = 3;
12+
13+
parameter S0 = 3'b000;
14+
parameter S1 = 3'b001;
15+
parameter S2 = 3'b010;
16+
parameter S3 = 3'b011;
17+
parameter S4 = 3'b100;
18+
parameter S5 = 3'b101;
19+
parameter S6 = 3'b110;
20+
parameter S7 = 3'b111;
21+
22+
input clk;
23+
input reset_;
24+
input [WIDTH-1:0] in_A;
25+
input [WIDTH-1:0] in_B;
26+
output reg [FSM_WIDTH-1:0] fsm_out;
27+
reg [FSM_WIDTH-1:0] state, next_state;
28+
always_ff @(posedge clk or negedge reset_) begin
29+
if (!reset_) begin
30+
state <= S0;
31+
end else begin
32+
state <= next_state;
33+
end
34+
end
35+
always_comb begin
36+
case(state)
37+
S0: begin
38+
if (~^((in_A || in_B))) begin
39+
next_state = S1;
40+
end
41+
else if (((in_A ^ in_B) != 'd1)) begin
42+
next_state = S2;
43+
end
44+
else if (((in_A != 'd1) != 'd0)) begin
45+
next_state = S6;
46+
end
47+
else begin
48+
next_state = S7;
49+
end
50+
end
51+
S1: begin
52+
if ((in_A && (in_B || in_A))) begin
53+
next_state = S2;
54+
end
55+
else if ((in_B ^ &(in_A))) begin
56+
next_state = S7;
57+
end
58+
else begin
59+
next_state = S5;
60+
end
61+
end
62+
S2: begin
63+
next_state = S0;
64+
end
65+
S3: begin
66+
if (((in_B || in_A) && in_B)) begin
67+
next_state = S0;
68+
end
69+
else if (((in_A || in_B) == 'd0)) begin
70+
next_state = S5;
71+
end
72+
else begin
73+
next_state = S7;
74+
end
75+
end
76+
S4: begin
77+
if ((in_A && (in_B ^ in_A))) begin
78+
next_state = S3;
79+
end
80+
else if (((in_B <= 'd0) && (in_A != 'd1))) begin
81+
next_state = S6;
82+
end
83+
else if (((in_B <= 'd0) ^ in_A)) begin
84+
next_state = S7;
85+
end
86+
else begin
87+
next_state = S2;
88+
end
89+
end
90+
S5: begin
91+
next_state = S4;
92+
end
93+
S6: begin
94+
if (((in_B == in_A) != 'd1)) begin
95+
next_state = S1;
96+
end
97+
else if ((in_A && in_B)) begin
98+
next_state = S5;
99+
end
100+
else begin
101+
next_state = S2;
102+
end
103+
end
104+
S7: begin
105+
if ((in_A != 'd0)) begin
106+
next_state = S2;
107+
end
108+
else begin
109+
next_state = S0;
110+
end
111+
end
112+
endcase
113+
end
114+
endmodule

data_svagen/design2sva/fsm.sva

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
2+
`define WIDTH 32
3+
module fsm_tb(
4+
clk,
5+
reset_,
6+
in_A,
7+
in_B,
8+
fsm_out
9+
);
10+
parameter WIDTH = `WIDTH;
11+
parameter FSM_WIDTH = 3;
12+
13+
parameter S0 = 3'b000;
14+
parameter S1 = 3'b001;
15+
parameter S2 = 3'b010;
16+
parameter S3 = 3'b011;
17+
parameter S4 = 3'b100;
18+
parameter S5 = 3'b101;
19+
parameter S6 = 3'b110;
20+
parameter S7 = 3'b111;
21+
22+
input clk;
23+
input reset_;
24+
input [WIDTH-1:0] in_A;
25+
input [WIDTH-1:0] in_B;
26+
input reg [FSM_WIDTH-1:0] fsm_out;
27+
wire tb_reset;
28+
assign tb_reset = (reset_ == 1'b0);
29+
30+
endmodule
31+
bind fsm fsm_tb #(
32+
.WIDTH(WIDTH)
33+
) fsm_tb_inst (.*);
34+

0 commit comments

Comments
 (0)