3
0
Fork 0
mirror of https://github.com/YosysHQ/yosys synced 2025-11-04 05:19:11 +00:00
yosys/tests/proc/proc_mux_src.v
2025-11-02 12:42:04 +01:00

92 lines
1.3 KiB
Verilog

module nested(
input clk,
input [7:0] A,
input [7:0] B,
input [3:0] mode1,
input [3:0] mode2,
output reg [7:0] result1,
output reg [7:0] result2,
output reg [1:0] arith
);
localparam OP_A = 4'b0000;
localparam OP_BA = 4'b0001;
localparam OP_BB = 4'b0010;
localparam OP_C = 4'b0011;
always @(posedge clk)
begin
case (mode1)
OP_A: begin
result1 = A + B;
result2 = A - B;
arith = 2'b01;
end
OP_BA , OP_BB : begin
result1 = A * B;
result2 = A / B;
arith = 2'b00;
end
OP_C : begin
arith = 2'b10;
case (mode2)
OP_A: begin
result1 = ~B;
result2 = B;
end
OP_C: begin
result1 = A ^ B;
result2 = A == B;
end
default: begin
result1 = 1'b0;
// result2 omitted
end
endcase
end
default: begin
result1 = 8'b0;
result2 = 8'b0;
arith = 2'b11;
end
endcase
end
endmodule
module tiny(
input clk,
input ya,
input [7:0] in,
output reg [7:0] out,
);
always @(posedge clk)
begin
case (ya)
1'b1: begin
out = in;
end
endcase
end
endmodule
module tiny2(
input clk,
input [1:0] ya,
input [7:0] in,
output reg [7:0] out,
);
always @(posedge clk)
begin
case (ya)
2'b01: begin
out = in;
end
2'b10: begin
out = 1'b1;
end
default begin
out = 1'b0;
end
endcase
end
endmodule