mirror of
https://github.com/openhwgroup/cvw
synced 2025-02-11 06:05:49 +00:00
ZK simplification
This commit is contained in:
parent
955c131bd9
commit
d0dd30822e
@ -115,32 +115,20 @@ module bitmanipalu import cvw::*; #(parameter cvw_t P) (
|
|||||||
|
|
||||||
// ZKND Unit
|
// ZKND Unit
|
||||||
if (P.ZKND_SUPPORTED) begin: zknd
|
if (P.ZKND_SUPPORTED) begin: zknd
|
||||||
if (P.XLEN == 32) begin
|
if (P.XLEN == 32) zknd32 #(P.XLEN) ZKND32(.A(ABMU), .B(BBMU), .Funct7, .ZKNDSelect(ZBBSelect[2:0]), .ZKNDResult);
|
||||||
zknd32 #(P.XLEN) ZKND32(.A(ABMU), .B(BBMU), .Funct7, .ZKNDSelect(ZBBSelect[2:0]), .ZKNDResult);
|
else zknd64 #(P.XLEN) ZKND64(.A(ABMU), .B(BBMU), .Funct7, .RNUM(Rs2E[3:0]), .ZKNDSelect(ZBBSelect[2:0]), .ZKNDResult);
|
||||||
end
|
|
||||||
else begin
|
|
||||||
zknd64 #(P.XLEN) ZKND64(.A(ABMU), .B(BBMU), .Funct7, .RNUM(Rs2E[3:0]), .ZKNDSelect(ZBBSelect[2:0]), .ZKNDResult);
|
|
||||||
end
|
|
||||||
end else assign ZKNDResult = 0;
|
end else assign ZKNDResult = 0;
|
||||||
|
|
||||||
// ZKNE Unit
|
// ZKNE Unit
|
||||||
if (P.ZKNE_SUPPORTED) begin: zkne
|
if (P.ZKNE_SUPPORTED) begin: zkne
|
||||||
if (P.XLEN == 32) begin
|
if (P.XLEN == 32) zkne32 #(P.XLEN) ZKNE32(.A(ABMU), .B(BBMU), .Funct7, .ZKNESelect(ZBBSelect[2:0]), .ZKNEResult);
|
||||||
zkne32 #(P.XLEN) ZKNE32(.A(ABMU), .B(BBMU), .Funct7, .ZKNESelect(ZBBSelect[2:0]), .ZKNEResult);
|
else zkne64 #(P.XLEN) ZKNE64(.A(ABMU), .B(BBMU), .Funct7, .RNUM(Rs2E[3:0]), .ZKNESelect(ZBBSelect[2:0]), .ZKNEResult);
|
||||||
end
|
|
||||||
else begin
|
|
||||||
zkne64 #(P.XLEN) ZKNE64(.A(ABMU), .B(BBMU), .Funct7, .RNUM(Rs2E[3:0]), .ZKNESelect(ZBBSelect[2:0]), .ZKNEResult);
|
|
||||||
end
|
|
||||||
end else assign ZKNEResult = 0;
|
end else assign ZKNEResult = 0;
|
||||||
|
|
||||||
// ZKNH Unit
|
// ZKNH Unit
|
||||||
if (P.ZKNH_SUPPORTED) begin: zknh
|
if (P.ZKNH_SUPPORTED) begin: zknh
|
||||||
if (P.XLEN == 32) begin
|
if (P.XLEN == 32) zknh32 ZKNH32(.A(ABMU), .B(BBMU), .ZKNHSelect(ZBBSelect), .ZKNHResult(ZKNHResult));
|
||||||
zknh32 ZKNH32(.A(ABMU), .B(BBMU), .ZKNHSelect(ZBBSelect), .ZKNHResult(ZKNHResult));
|
else zknh64 ZKNH64(.A(ABMU), .B(BBMU), .ZKNHSelect(ZBBSelect), .ZKNHResult(ZKNHResult));
|
||||||
end
|
|
||||||
else begin
|
|
||||||
zknh64 ZKNH64(.A(ABMU), .B(BBMU), .ZKNHSelect(ZBBSelect), .ZKNHResult(ZKNHResult));
|
|
||||||
end
|
|
||||||
end else assign ZKNHResult = 0;
|
end else assign ZKNHResult = 0;
|
||||||
|
|
||||||
// Result Select Mux
|
// Result Select Mux
|
||||||
|
@ -37,11 +37,11 @@ module packer #(parameter WIDTH=32) (
|
|||||||
|
|
||||||
logic [WIDTH-1:0] Pack, PackH, PackW;
|
logic [WIDTH-1:0] Pack, PackH, PackW;
|
||||||
|
|
||||||
assign lowhalf = A[WIDTH/2-1:0];
|
assign lowhalf = A[WIDTH/2-1:0];
|
||||||
assign highhalf = B[WIDTH/2-1:0];
|
assign highhalf = B[WIDTH/2-1:0];
|
||||||
assign lowhalfh = A[7:0];
|
assign lowhalfh = A[7:0];
|
||||||
assign highhalfh = B[7:0];
|
assign highhalfh = B[7:0];
|
||||||
assign lowhalfw = A[15:0];
|
assign lowhalfw = A[15:0];
|
||||||
assign highhalfw = B[15:0];
|
assign highhalfw = B[15:0];
|
||||||
|
|
||||||
assign Pack = {highhalf, lowhalf};
|
assign Pack = {highhalf, lowhalf};
|
||||||
|
@ -32,20 +32,17 @@ module zbkx #(parameter WIDTH=32) (
|
|||||||
);
|
);
|
||||||
|
|
||||||
logic [WIDTH-1:0] xpermlookup;
|
logic [WIDTH-1:0] xpermlookup;
|
||||||
integer i;
|
int i;
|
||||||
|
|
||||||
always_comb begin
|
always_comb
|
||||||
if (ZBKXSelect[0] == 1'b0) begin
|
if (ZBKXSelect[0])
|
||||||
for(i=0; i<WIDTH; i=i+8) begin: xperm8
|
|
||||||
xpermlookup = A >> {B[i+:8], 3'b0};
|
|
||||||
ZBKXResult[i+:8] = xpermlookup[7:0];
|
|
||||||
end
|
|
||||||
end
|
|
||||||
else begin
|
|
||||||
for(i=0; i<WIDTH; i=i+4) begin: xperm4
|
for(i=0; i<WIDTH; i=i+4) begin: xperm4
|
||||||
xpermlookup = A >> {B[i+:4], 2'b0};
|
xpermlookup = A >> {B[i+:4], 2'b0};
|
||||||
ZBKXResult[i+:4] = xpermlookup[3:0];
|
ZBKXResult[i+:4] = xpermlookup[3:0];
|
||||||
end
|
end
|
||||||
end
|
else
|
||||||
end
|
for(i=0; i<WIDTH; i=i+8) begin: xperm8
|
||||||
|
xpermlookup = A >> {B[i+:8], 3'b0};
|
||||||
|
ZBKXResult[i+:8] = xpermlookup[7:0];
|
||||||
|
end
|
||||||
endmodule
|
endmodule
|
||||||
|
Loading…
Reference in New Issue
Block a user