mirror of
https://github.com/MPSU/APS.git
synced 2025-09-15 09:10:10 +00:00
1374 lines
27 KiB
Systemverilog
1374 lines
27 KiB
Systemverilog
/* -----------------------------------------------------------------------------
|
|
* Project Name : Architectures of Processor Systems (APS) lab work
|
|
* Organization : National Research University of Electronic Technology (MIET)
|
|
* Department : Institute of Microdevices and Control Systems
|
|
* Author(s) : Daniil Strelkov
|
|
* Email(s) : 8190948@edu.miet.ru
|
|
|
|
See https://github.com/MPSU/APS/blob/master/LICENSE file for licensing details.
|
|
* ------------------------------------------------------------------------------
|
|
*/
|
|
module lab_02_tb_alu();
|
|
|
|
import alu_opcodes_pkg::*;
|
|
|
|
parameter TEST_VALUES = 1000;
|
|
|
|
logic clk = 0;
|
|
always #5ns clk = ~clk;
|
|
|
|
logic [4:0] operator_i;
|
|
logic [31:0] operand_a_i;
|
|
logic [31:0] operand_b_i;
|
|
|
|
wire [31:0] result_dut;
|
|
wire comparison_result_dut;
|
|
|
|
wire [31:0] result_ref;
|
|
wire comparison_result_ref;
|
|
|
|
|
|
alu DUT
|
|
(
|
|
.alu_op_i (operator_i ),
|
|
.a_i (operand_a_i),
|
|
.b_i (operand_b_i),
|
|
|
|
.result_o (result_dut ),
|
|
.flag_o (comparison_result_dut)
|
|
);
|
|
|
|
alu_ref REF
|
|
(
|
|
.alu_op_i (operator_i ),
|
|
.a_i (operand_a_i),
|
|
.b_i (operand_b_i),
|
|
|
|
.result_o (result_ref ),
|
|
.flag_o (comparison_result_ref)
|
|
);
|
|
|
|
integer i, err_cnt = 0;
|
|
reg [8*9:1] operator_type;
|
|
|
|
initial
|
|
begin
|
|
$display("Test has been started");
|
|
//X_test();
|
|
result_test();
|
|
flag_test();
|
|
sign_test();
|
|
shift_test();
|
|
random_test();
|
|
direct_test();
|
|
$display("\nTest has been finished\nNumber of errors: %d\n", err_cnt);
|
|
$finish();
|
|
#5;
|
|
$display("You're trying to run simulation that has finished. Aborting simulation.");
|
|
$fatal();
|
|
end
|
|
|
|
task X_test();
|
|
repeat(TEST_VALUES)
|
|
begin
|
|
case($urandom_range(6))
|
|
0: operator_i = 5'bx;
|
|
default: operator_i = $urandom();
|
|
endcase
|
|
case($urandom_range(6))
|
|
0: operand_a_i = 5'bx;
|
|
default: operand_a_i = $urandom();
|
|
endcase
|
|
case($urandom_range(6))
|
|
0: operand_b_i = 5'bx;
|
|
default: operand_b_i = $urandom();
|
|
endcase
|
|
@(posedge clk);
|
|
end
|
|
endtask
|
|
|
|
task result_test();
|
|
repeat(TEST_VALUES)
|
|
begin
|
|
operator_i = $urandom_range(4'b1111);
|
|
operand_a_i = $urandom();
|
|
operand_b_i = $urandom();
|
|
@(posedge clk);
|
|
end
|
|
endtask
|
|
|
|
task flag_test();
|
|
repeat(TEST_VALUES)
|
|
begin
|
|
operator_i = {2'b11, $urandom_range(3'b111)};
|
|
operand_a_i = $urandom();
|
|
operand_b_i = $urandom();
|
|
@(posedge clk);
|
|
end
|
|
endtask
|
|
|
|
task sign_test();
|
|
repeat(TEST_VALUES)
|
|
begin
|
|
std::randomize(operator_i) with {operator_i inside {ALU_LTS ,ALU_GES, ALU_SLTS, ALU_SRA};};
|
|
operand_a_i = $urandom();
|
|
operand_b_i = $urandom();
|
|
@(posedge clk);
|
|
end
|
|
endtask
|
|
|
|
task shift_test();
|
|
repeat(TEST_VALUES)
|
|
begin
|
|
std::randomize(operator_i) with {operator_i inside {ALU_SRL,ALU_SLL,ALU_SRA};};
|
|
operand_a_i = $urandom();
|
|
operand_b_i = $urandom();
|
|
@(posedge clk);
|
|
end
|
|
endtask
|
|
|
|
task random_test();
|
|
repeat(TEST_VALUES)
|
|
begin
|
|
operator_i = $urandom();
|
|
operand_a_i = $urandom();
|
|
operand_b_i = $urandom();
|
|
@(posedge clk);
|
|
end
|
|
endtask
|
|
|
|
task direct_test();
|
|
|
|
logic [4:0] flag_opcodes_1[6] = {ALU_SLTS, ALU_SLTU, ALU_LTS, ALU_GES, ALU_LTU, ALU_GEU};
|
|
logic [4:0] flag_opcodes_2[3] = {ALU_SLL, ALU_SRL, ALU_SRA};
|
|
logic [4:0] flag_opcodes_3[2] = {ALU_ADD, ALU_SUB};
|
|
logic [4:0] flag_opcodes_4[5] = {ALU_XOR, ALU_OR, ALU_AND, ALU_EQ, ALU_NE};
|
|
|
|
repeat(100)
|
|
begin
|
|
std::randomize(operand_a_i, operand_b_i) with {operand_a_i==operand_b_i;};
|
|
foreach(flag_opcodes_1[i]) begin
|
|
operator_i = flag_opcodes_1[i];
|
|
@(posedge clk);
|
|
end
|
|
end
|
|
|
|
repeat(100)
|
|
begin
|
|
std::randomize(operand_a_i, operand_b_i) with {operand_a_i>operand_b_i;};
|
|
foreach(flag_opcodes_1[i]) begin
|
|
operator_i = flag_opcodes_1[i];
|
|
@(posedge clk);
|
|
end
|
|
end
|
|
|
|
repeat(100)
|
|
begin
|
|
std::randomize(operand_a_i, operand_b_i) with {operand_a_i<operand_b_i;};
|
|
foreach(flag_opcodes_1[i]) begin
|
|
operator_i = flag_opcodes_1[i];
|
|
@(posedge clk);
|
|
end
|
|
end
|
|
|
|
repeat(100)
|
|
begin
|
|
operand_a_i = $urandom();
|
|
std::randomize(operand_b_i) with {operand_b_i<32;};
|
|
foreach(flag_opcodes_2[i]) begin
|
|
operator_i = flag_opcodes_2[i];
|
|
@(posedge clk);
|
|
end
|
|
end
|
|
|
|
repeat(100)
|
|
begin
|
|
operand_a_i = $urandom();
|
|
operand_b_i = $urandom() & 5'b00000;
|
|
foreach(flag_opcodes_2[i]) begin
|
|
operator_i = flag_opcodes_2[i];
|
|
@(posedge clk);
|
|
end
|
|
end
|
|
|
|
repeat(100)
|
|
begin
|
|
std::randomize(operand_a_i) with {operand_a_i > {31{1'b1}};};
|
|
std::randomize(operand_b_i) with {operand_b_i > {31{1'b1}};};
|
|
foreach(flag_opcodes_3[i]) begin
|
|
operator_i = flag_opcodes_3[i];
|
|
@(posedge clk);
|
|
end
|
|
end
|
|
|
|
repeat(100)
|
|
begin
|
|
operand_a_i = $urandom();
|
|
operand_b_i = $urandom();
|
|
foreach(flag_opcodes_4[i]) begin
|
|
operator_i = flag_opcodes_4[i];
|
|
@(posedge clk);
|
|
end
|
|
end
|
|
endtask
|
|
|
|
always @(*) begin
|
|
case(operator_i)
|
|
ALU_ADD : operator_type = "ALU_ADD ";
|
|
ALU_SUB : operator_type = "ALU_SUB ";
|
|
ALU_XOR : operator_type = "ALU_XOR ";
|
|
ALU_OR : operator_type = "ALU_OR ";
|
|
ALU_AND : operator_type = "ALU_AND ";
|
|
ALU_SRA : operator_type = "ALU_SRA ";
|
|
ALU_SRL : operator_type = "ALU_SRL ";
|
|
ALU_SLL : operator_type = "ALU_SLL ";
|
|
ALU_LTS : operator_type = "ALU_LTS ";
|
|
ALU_LTU : operator_type = "ALU_LTU ";
|
|
ALU_GES : operator_type = "ALU_GES ";
|
|
ALU_GEU : operator_type = "ALU_GEU ";
|
|
ALU_EQ : operator_type = "ALU_EQ ";
|
|
ALU_NE : operator_type = "ALU_NE ";
|
|
ALU_SLTS : operator_type = "ALU_SLTS ";
|
|
ALU_SLTU : operator_type = "ALU_SLTU ";
|
|
default : operator_type = "NOP ";
|
|
endcase
|
|
end
|
|
|
|
alu_check: assert property (
|
|
@(negedge clk)
|
|
(result_ref === result_dut) and (comparison_result_dut === comparison_result_ref)
|
|
)
|
|
else begin
|
|
err_cnt++;
|
|
$error("\nOperator : %s\noperands : a_i = 0x%08h, b_i = 0x%08h\nyour result : result = 0x%08h, flag = %b\nreference : result = 0x%08h, flag = %b",
|
|
operator_type, operand_a_i, operand_b_i, result_dut, comparison_result_dut, result_ref, comparison_result_ref);
|
|
if(err_cnt == 10) begin
|
|
$display("\nTest has been stopped after 10 errors");
|
|
$stop();
|
|
end
|
|
end
|
|
|
|
endmodule
|
|
|
|
|
|
module alu_ref (
|
|
input logic [ 4:0] alu_op_i,
|
|
input logic [31:0] a_i,
|
|
input logic [31:0] b_i,
|
|
output logic [31:0] result_o,
|
|
output logic flag_o
|
|
);
|
|
|
|
localparam ALUOP_W = 5;
|
|
localparam OP_W = 32;
|
|
localparam SHIFT_W = $clog2(OP_W);
|
|
localparam STAGE_LEN = OP_W+1;
|
|
localparam HASH_LEN = 1000;
|
|
localparam START_CODING = 10366;
|
|
localparam START_MUX = START_CODING+100;
|
|
|
|
genvar i, j, k;
|
|
|
|
logic [OP_W-1:0] skjfbsbgisg [0:STAGE_LEN-1];
|
|
logic [STAGE_LEN-1:0] flxvnlkamla;
|
|
|
|
logic [OP_W*2-1:0] jdiuqfjkvc;
|
|
logic [OP_W-1:0] fgdhdsvr;
|
|
|
|
logic [16*4*HASH_LEN-1:0] fdhgdfbdgh;
|
|
|
|
logic [OP_W-1:0] vufdjj;
|
|
logic srtdv;
|
|
logic [OP_W-1:0] ndsvsd;
|
|
logic hkfvbd;
|
|
|
|
logic [OP_W-1:0] dgdvdfb;
|
|
logic [OP_W-1:0] hjfhdhyj;
|
|
logic [OP_W-1:0] dfbfjfnf;
|
|
logic [OP_W-1:0] tjthntnt;
|
|
logic [OP_W-1:0] ertertert;
|
|
logic [OP_W-1:0] jmgmgnb;
|
|
logic [OP_W-1:0] mghngfg;
|
|
logic [OP_W-1:0] sddsvsdd;
|
|
logic [OP_W-1:0] cvbcvc;
|
|
logic [OP_W-1:0] tyjtyn;
|
|
logic [OP_W-1:0] dfbdgt;
|
|
logic [OP_W-1:0] ergmd;
|
|
logic [OP_W-1:0] bdfvtym;
|
|
logic [OP_W-1:0] dfrjsdb;
|
|
logic [OP_W-1:0] hfndnfgd;
|
|
logic [OP_W-1:0] cvbvrht;
|
|
logic [OP_W-1:0] gmndfvs;
|
|
|
|
assign dgdvdfb = 'hf6f6bbbb;
|
|
assign hjfhdhyj = 'h6253a375;
|
|
assign dfbfjfnf = 'h8d2816e0;
|
|
assign tjthntnt = 'h30c73f9a;
|
|
assign ertertert = 'h28012f16;
|
|
assign jmgmgnb = 'h7a95b3f9;
|
|
assign mghngfg = 'hee30ab37;
|
|
assign sddsvsdd = 'hee30ab37;
|
|
assign cvbcvc = 'hbca437d8;
|
|
assign tyjtyn = 'h53df827d;
|
|
assign dfbdgt = 'ha4622754;
|
|
assign ergmd = 'hee3054f0;
|
|
assign bdfvtym = 'h62535cb2;
|
|
assign dfrjsdb = 'h2801d111;
|
|
assign hfndnfgd = 'h30c7c08d;
|
|
assign cvbvrht = 'ha462d8d3;
|
|
assign gmndfvs = 'hf6f6446c;
|
|
|
|
assign fdhgdfbdgh = {
|
|
36'h3E41C6E20,
|
|
36'h11B9B36BC,
|
|
28'hCE94EDC,
|
|
24'h77E32D,
|
|
32'h3BB6F3AD,
|
|
36'h85FD4BC65,
|
|
20'hB3D9A,
|
|
48'hBE20A0E086D2,
|
|
36'h26ED9CDF4,
|
|
8'h40,
|
|
24'h0B4072,
|
|
44'h12621D1BFA0,
|
|
40'h9292D9C0E5,
|
|
36'h5902A9C3F,
|
|
28'h6F46EDC,
|
|
56'h63F791F9F1D1ED,
|
|
48'h6226D04FA727,
|
|
32'h9C3B92E3,
|
|
16'hEC45,
|
|
16'hF449,
|
|
56'h5F224CF30D83F5,
|
|
24'h9DA507,
|
|
44'h8174EF0041D,
|
|
56'hB557B32F802A44,
|
|
56'h15E9586A463E96,
|
|
60'h7847AA0786A6B1D,
|
|
56'h489E2B535C4538,
|
|
32'hEB5509D7,
|
|
28'hA96D029,
|
|
52'h849A9581041BA,
|
|
20'h181C6,
|
|
36'hB77CF15DA,
|
|
20'h1B10E,
|
|
36'h8A76254FA,
|
|
28'h9315088,
|
|
4'h9,
|
|
48'h16EE10CE91F2,
|
|
20'h2CB47,
|
|
20'h8A699,
|
|
8'h9A,
|
|
24'h82316F,
|
|
40'h9DE20624F9,
|
|
24'hF9E1DE,
|
|
12'hC81,
|
|
56'h0DB23F174F455B,
|
|
32'h1957CE66,
|
|
32'hC38DEE2B,
|
|
4'hF,
|
|
4'h0,
|
|
44'h56CE783D0E2,
|
|
56'hB261BCA0F00746,
|
|
8'h5A,
|
|
44'h83B6C5AEDF9,
|
|
40'h1BD8F862B4,
|
|
36'hD3D04A466,
|
|
12'h3BB,
|
|
4'h0,
|
|
56'hCC3C36541EADF5,
|
|
4'hA,
|
|
28'hF8D4D49,
|
|
28'h92CC18D,
|
|
48'h70348675C0AD,
|
|
56'hD97D10E10D8197,
|
|
4'h5,
|
|
20'hF48F5,
|
|
8'h06,
|
|
56'hC1143F3F3303AF,
|
|
56'hAF5F315EAE57A6,
|
|
28'hD1E5649,
|
|
4'h9,
|
|
8'h49,
|
|
48'hD1F766BD868B,
|
|
32'h181B8229,
|
|
16'h0717,
|
|
32'h8D29D699,
|
|
8'hB4,
|
|
48'hAF7850575F0C,
|
|
52'hD49B3518569D7,
|
|
44'h58010FECB4B,
|
|
8'hAA,
|
|
60'h7C757AB2B104631,
|
|
28'h0A0E5F3,
|
|
60'hEAF00B81398A69E,
|
|
28'h1181CD4,
|
|
56'hE13C80FA3DF770,
|
|
36'hFDC738FD9,
|
|
60'h994E0C5E2822DB6,
|
|
16'hCB8F,
|
|
12'h21E,
|
|
52'hD843F1E0B6631,
|
|
12'h958,
|
|
32'hBCEB9ECC,
|
|
4'hA,
|
|
56'hDD4124FD5405EA,
|
|
4'hC,
|
|
4'h6,
|
|
8'hB7,
|
|
44'h611BDAA2E2D,
|
|
4'h8,
|
|
48'h8E9EFAF044D5,
|
|
20'hC086A,
|
|
8'hB1,
|
|
4'hF,
|
|
48'hBD6994252CAB,
|
|
28'h9630B33,
|
|
36'h588D1A522,
|
|
52'hA5AC97DB595AC,
|
|
12'h8D7,
|
|
44'h7AF48225646,
|
|
48'h7FD3F6A14944,
|
|
4'h1,
|
|
32'hDEB3C0A0,
|
|
60'hD6F539789CDA6D5,
|
|
56'h049B878D5A0CEA,
|
|
60'h1CC65E10DFE1459,
|
|
8'h7B,
|
|
24'hC62339,
|
|
16'h0629,
|
|
16'h42DC,
|
|
4'hE,
|
|
4'h4,
|
|
32'h30B27628,
|
|
12'hC57,
|
|
56'h7E2B26C69E6A8D,
|
|
20'h72A72,
|
|
24'hC8EF00,
|
|
40'hCBFAF0DA94,
|
|
44'h061D258C8BA,
|
|
28'h389AEAA,
|
|
8'h41,
|
|
56'hF331BF02A98521,
|
|
48'h5DA3EDDE901E,
|
|
36'h4A47DF994,
|
|
4'hF,
|
|
32'h2881D05C,
|
|
8'h42,
|
|
48'h49063F3513DD,
|
|
4'h8,
|
|
40'hF18EDA5CF5,
|
|
20'h940EF,
|
|
48'h2E66BE06F74A,
|
|
16'h6FCA,
|
|
48'h5AB9D53AE721,
|
|
16'h8F48,
|
|
8'hF8,
|
|
60'h47F24EFE966C7CB,
|
|
16'hCE7D,
|
|
44'hE38743E2847,
|
|
24'h02D46D,
|
|
4'hB,
|
|
56'hDCC747CF2F9CF3,
|
|
4'h9,
|
|
16'h1EDB,
|
|
4'h5,
|
|
8'h8F,
|
|
8'h58,
|
|
56'hD99B11A0CE5A95,
|
|
40'hEC5E7D7339,
|
|
28'hAE626F6,
|
|
4'h3,
|
|
8'hD4,
|
|
28'h6628821,
|
|
56'hF31A99E66A5F47,
|
|
24'h1BDB2A,
|
|
36'h8200410E7,
|
|
8'hFD,
|
|
16'hE089,
|
|
48'h204F8F809B1F,
|
|
36'hD4483BA93,
|
|
4'hE,
|
|
24'h174230,
|
|
48'hF3D3241C38A0,
|
|
36'h114570ADA,
|
|
12'hBD9,
|
|
4'h4,
|
|
36'h2CE6A729F,
|
|
36'hC0C0F0D7A,
|
|
60'h4AA3B90ABB4CC5A,
|
|
52'hEC478788E8388,
|
|
52'hEE1213E9570CE,
|
|
8'hB2,
|
|
36'hE71136493,
|
|
32'hD58CB9A8,
|
|
60'h75AC3A0E955C2FD,
|
|
4'h2,
|
|
20'h37590,
|
|
16'hC7FA,
|
|
8'hBF,
|
|
40'h41991D26EC,
|
|
12'hBDA,
|
|
28'h1E55962,
|
|
60'h80FA229FB1F1A77,
|
|
4'hE,
|
|
16'hFD62,
|
|
24'hFCEC51,
|
|
16'h7DFA,
|
|
28'h5A0D095,
|
|
28'hB4EF0E3,
|
|
24'hA5ABB8,
|
|
36'h0B86E2117,
|
|
28'hB4D9D92,
|
|
56'h1DFBE3941D04D7,
|
|
40'hF54058D7AD,
|
|
24'h24E364,
|
|
36'hCE94D0121,
|
|
60'h24028166F96F46F,
|
|
20'h75EC3,
|
|
12'h342,
|
|
44'h83AF0FC5D1F,
|
|
16'h568E,
|
|
20'h8E16C,
|
|
44'h9FD58B9D9DA,
|
|
28'h118C75D,
|
|
48'h58A8F1804318,
|
|
12'h0F0,
|
|
4'hB,
|
|
20'h373D0,
|
|
60'hD283007D7874281,
|
|
32'hFA5A8CD2,
|
|
48'h0CC25C2A5907,
|
|
4'h8,
|
|
12'hBAD,
|
|
16'h10B4,
|
|
4'h1,
|
|
48'h8FA365200285,
|
|
8'h2A,
|
|
28'h71770B7,
|
|
4'h7,
|
|
20'h9411D,
|
|
12'h2D3,
|
|
48'h6E47DC016D7A,
|
|
60'h6CBCF6C67956753,
|
|
8'hBE,
|
|
56'h7FC9873962591F,
|
|
28'hDEF169D,
|
|
40'h6CC3401324,
|
|
4'h3,
|
|
52'hCBB5B9DD52F5E,
|
|
16'hF771,
|
|
8'hFA,
|
|
32'hEE35A02B,
|
|
8'hCF,
|
|
4'hE,
|
|
48'hDA5F2AEB5586,
|
|
36'hAB791E841,
|
|
40'h0C5FE90683,
|
|
56'h750CB7BB4D61C7,
|
|
4'h1,
|
|
44'hCBCD9884B30,
|
|
40'hF6C9792E07,
|
|
52'hB27DD79FD0FFB,
|
|
16'hEB7B,
|
|
20'h92AEC,
|
|
20'hF23FF,
|
|
8'h35,
|
|
56'h365FA3DD80AA76,
|
|
8'h56,
|
|
16'h5127,
|
|
8'h36,
|
|
32'h6C35B935,
|
|
56'h7B61BFA30B2C2F,
|
|
32'hDBA37CB7,
|
|
48'hF3C3AF0F75F2,
|
|
4'hC,
|
|
8'hE1,
|
|
4'h5,
|
|
52'hA7E12FBE29A70,
|
|
40'hF6BE206F78,
|
|
36'h62342AD57,
|
|
52'h9C94ED9906F6D,
|
|
8'h90,
|
|
40'hD24C961B05,
|
|
24'h3B7DE2,
|
|
60'h8F53A0BAAE87434,
|
|
20'h04A47,
|
|
48'hE3393E66CAE9,
|
|
4'hE,
|
|
32'hD5423515,
|
|
16'h313A,
|
|
16'h7D06,
|
|
16'h8774,
|
|
4'hA,
|
|
8'h1F,
|
|
16'hB381,
|
|
52'h5621EB52E35F7,
|
|
40'hD0FE3D352B,
|
|
52'h189932A5F537F,
|
|
60'h83AC2D6D4CB6E0A,
|
|
28'h16FD492,
|
|
40'h6A435388E9,
|
|
60'h961A79498159FA3,
|
|
56'hC3AD07FD3DBE9C,
|
|
28'hB33AD29,
|
|
60'h010A94FC8B05AB6,
|
|
40'h3F47ABA652,
|
|
4'h1,
|
|
28'h8A47A17,
|
|
8'hC8,
|
|
40'h431235B3DE,
|
|
8'hE3,
|
|
20'h0E5E8,
|
|
52'h005C69E3D1C5A,
|
|
52'hF8F5E338E91E6,
|
|
24'h4F0712,
|
|
4'hE,
|
|
20'h8D61A,
|
|
20'h43F2F,
|
|
28'h372D52F,
|
|
52'h0368D061683DD,
|
|
24'h96E906,
|
|
12'h212,
|
|
28'hD74D49E,
|
|
8'h07,
|
|
48'h013940352345,
|
|
28'h11B0738,
|
|
36'h9BF8DFCC5,
|
|
4'h5,
|
|
4'hB,
|
|
24'h04255E,
|
|
40'hE5C5EBD801,
|
|
4'h4,
|
|
20'h7F580,
|
|
24'hABD566,
|
|
56'hE625850E5CFD4E,
|
|
56'h683E283C086EB7,
|
|
40'hCBA41EAA18,
|
|
40'h0D9C15E41E,
|
|
40'hC147A317FE,
|
|
60'h014B7B2AC3707D9,
|
|
56'h1E5C7458A47DA3,
|
|
44'h849D7934318,
|
|
40'hF0FE18F61F,
|
|
24'h8F3EBA,
|
|
44'hD9EFC8EBAA3,
|
|
4'h1,
|
|
4'h3,
|
|
44'hA75ADD4CC22,
|
|
36'h07F230AA0,
|
|
52'h758A2F74316D3,
|
|
4'h2,
|
|
8'hD6,
|
|
48'hB842258F84CF,
|
|
16'hBF5D,
|
|
36'h90A89B820,
|
|
16'hD630,
|
|
40'hADD634783D,
|
|
60'h5229B035DAB10B4,
|
|
52'h55DF90B792E59,
|
|
60'h6A735DCE7F30F1D,
|
|
20'h3442B,
|
|
4'hE,
|
|
4'h6,
|
|
40'h49F042E737,
|
|
4'h7,
|
|
28'hCC452E1,
|
|
24'h960066,
|
|
52'h257CF1D0E1DE1,
|
|
20'hC062A,
|
|
56'hB9FA5F4B295DD6,
|
|
20'h7213D,
|
|
8'h7C,
|
|
24'h9601F7,
|
|
36'h4CDA50E5C,
|
|
4'h2,
|
|
4'h8,
|
|
24'h981426,
|
|
60'h7A193150B32D258,
|
|
32'h0F2B7906,
|
|
28'h994EC0E,
|
|
16'h27E7,
|
|
60'h172FD33A0DD910B,
|
|
32'hBF6CF786,
|
|
32'h2283DC8E,
|
|
48'hB30D84AAE5D3,
|
|
16'h4BBC,
|
|
40'h22A97394FE,
|
|
44'h34906539AF9,
|
|
52'hABCB8831CBDCC,
|
|
12'h91D,
|
|
8'hAC,
|
|
32'h95713DD4,
|
|
24'h101548,
|
|
40'h9DC900686D,
|
|
8'hB4,
|
|
28'h71789B3,
|
|
12'hEB7,
|
|
40'h012122627B,
|
|
48'h3F48538EE335,
|
|
40'hEDCD27AC53,
|
|
40'hC397B874E0,
|
|
36'hFAD978A9C,
|
|
12'hEE6,
|
|
12'h2F8,
|
|
60'h6F6E175E88291E5,
|
|
20'h897B2,
|
|
36'h3B079D6C8,
|
|
44'hDCDD5375F3D,
|
|
48'hAC2CCE714B2A,
|
|
52'h0E36538037376,
|
|
20'h653D0,
|
|
12'hBC9,
|
|
4'h0,
|
|
56'h08818E0CE930E8,
|
|
44'hD6F78B1EBB3,
|
|
8'hD3,
|
|
56'h842589D80B49E7,
|
|
20'hDD604,
|
|
60'h7BDCE63AD2DE2D5,
|
|
8'h11,
|
|
24'h74FCD0,
|
|
20'h70A70,
|
|
20'hADF6E,
|
|
40'hBA2D49FBEE,
|
|
4'hC,
|
|
60'hEE5B847DD25929B,
|
|
4'h4,
|
|
16'hD3B6,
|
|
56'hC2339627AC10E8,
|
|
40'h18C518EDC7,
|
|
52'h79350CC07DE0B,
|
|
32'h0A66C5AC,
|
|
4'h4,
|
|
44'h350D8EAF53F,
|
|
36'hFEC215459,
|
|
36'h041F6D1DE,
|
|
48'h37127B258A18,
|
|
60'h8EC75B60D538D4A,
|
|
28'h7119883,
|
|
4'h8,
|
|
56'h0C14543DD78C87,
|
|
16'h2C3F,
|
|
28'h95661DE,
|
|
56'h8EB588008671E9,
|
|
16'h0255,
|
|
56'h69D63514572A97,
|
|
48'h054FCAEC3652,
|
|
60'hD19294E9FE143FC,
|
|
20'hF2570,
|
|
32'h5122ABE3,
|
|
40'h00585DBC95,
|
|
32'hED5E4618,
|
|
52'h10CC68B80CC3C,
|
|
12'h8A0,
|
|
44'h6DEDA083A16,
|
|
28'h2B7E8A4,
|
|
20'h2FBA6,
|
|
24'hAF27AA,
|
|
56'hAF0EFD4CCDA680,
|
|
4'h4,
|
|
32'h30D730AC,
|
|
12'hAB7,
|
|
48'h39B55B230DD2,
|
|
4'hE,
|
|
48'h518EA168141B,
|
|
60'hFB1EC0875933F3C,
|
|
56'h40FD6D3213AD01,
|
|
48'h53AE7FB8E718,
|
|
16'hA818,
|
|
48'h68199127E4EC,
|
|
16'h6D00,
|
|
24'h043523,
|
|
36'h9F7349070,
|
|
32'h15E2BE0D,
|
|
56'h130D6101E5A1A0,
|
|
44'h1BC88A0C6A3,
|
|
48'h6B4100962260,
|
|
4'h6,
|
|
4'hE,
|
|
40'hC41DA2ED9E,
|
|
8'h1F,
|
|
32'h6FC93981,
|
|
24'h8DF791,
|
|
4'h7,
|
|
20'h8C957,
|
|
56'h35B249B58EB6A2,
|
|
12'h396,
|
|
4'h2,
|
|
56'h29CDA41A0A8EB8,
|
|
24'hA681BB,
|
|
60'h5F2877418D55C72,
|
|
40'hBD7B88480B,
|
|
4'hD,
|
|
20'h7F0C9,
|
|
4'hF,
|
|
16'h7BA9,
|
|
44'hAC7E4029125,
|
|
32'hA3901193,
|
|
4'h7,
|
|
20'h17031,
|
|
8'h2C,
|
|
4'h7,
|
|
32'h6A80D767,
|
|
32'h742A1EE5,
|
|
28'hAA6FD3D,
|
|
56'h10B66012716EE2,
|
|
36'hCBB850B1D,
|
|
4'h2,
|
|
28'hAA0861E,
|
|
48'h2ECFE8A372B0,
|
|
4'h5,
|
|
28'hE4005BE,
|
|
28'h2B70C09,
|
|
12'h8F8,
|
|
16'hA735,
|
|
52'hA9B5BCE275589,
|
|
36'h2D9A93517,
|
|
28'h3A08509,
|
|
48'hEC8F489E6823,
|
|
4'hB,
|
|
36'h2DE43C120,
|
|
24'hF82F8E,
|
|
28'hB1B83FE,
|
|
32'h80FE7B67,
|
|
56'h8A5E2CD1C40E2C,
|
|
32'hA2D61B79,
|
|
24'h55171F,
|
|
16'h5211,
|
|
8'hBD,
|
|
16'hCBDA,
|
|
36'h7B5374264,
|
|
40'h87FA486E39,
|
|
12'h3F1,
|
|
20'hDEE39,
|
|
28'h9E37D6A,
|
|
12'h901,
|
|
60'h477E119B4377374,
|
|
12'h0C1,
|
|
4'h6,
|
|
60'hD6196339345458B,
|
|
40'hA3BA40F9AB,
|
|
36'hFEE72FA77,
|
|
60'h8C6801EAAD98481,
|
|
16'h4E38,
|
|
56'h2367402A69FBB0,
|
|
28'hB0E0C07,
|
|
44'h630E97E4320,
|
|
12'h460,
|
|
60'h066D48EADCBD6CB,
|
|
44'h13DA831732F,
|
|
48'hC5AC2061BC88,
|
|
56'hADB08E0C120894,
|
|
40'h6A7898739C,
|
|
8'h38,
|
|
60'h6955D11C7215683,
|
|
8'h03,
|
|
16'h1011,
|
|
32'hEAC10B28,
|
|
4'h5,
|
|
44'h32621E9662A,
|
|
60'h6CC5F3EDD7B58B1,
|
|
12'h005,
|
|
32'hC44BFBD4,
|
|
48'hCE5C0C0E675E,
|
|
44'hCA88D1ECF49,
|
|
44'h24D7620FCDD,
|
|
20'hBE344,
|
|
4'h3,
|
|
4'h7,
|
|
20'hA174B,
|
|
48'hC7208449DAA0,
|
|
48'hF020792D8513,
|
|
48'h6D86F848EAE5,
|
|
44'h9821963EF53,
|
|
24'hAA3C48,
|
|
28'h346E180,
|
|
4'h5,
|
|
8'hCD,
|
|
44'h004E130E41A,
|
|
8'h33,
|
|
40'hF0E09FA395,
|
|
24'h81FB5C,
|
|
20'hE6909,
|
|
60'h9AC3650570DE15D,
|
|
56'h1606791551819F,
|
|
8'h86,
|
|
32'hE8A99CB9,
|
|
52'h83E57E3422874,
|
|
60'hA8C6543E7FF5676,
|
|
16'h5676,
|
|
12'hC6B,
|
|
20'hC6855,
|
|
48'h1A519A989D81,
|
|
60'h50D9B033B92E2F8,
|
|
4'h7,
|
|
16'h3386,
|
|
24'hA78EE5,
|
|
60'h52CE743432E35F5,
|
|
20'h166A2,
|
|
60'hD54038E64D5457D,
|
|
40'h681A545735,
|
|
36'hFB11B0934,
|
|
24'h3084A7,
|
|
52'h8575B53373BD6,
|
|
36'h83DF8F9AB,
|
|
52'h80CDCF46BECDA,
|
|
16'h26C8,
|
|
60'hB586B4EE4003427,
|
|
40'hC42468C69C,
|
|
44'h6BCB869AAE9,
|
|
20'hC2E35,
|
|
4'hB,
|
|
4'h2,
|
|
56'h5DF766B2847904,
|
|
4'h8,
|
|
36'h7D53CA0AB,
|
|
28'hAC3BB67,
|
|
52'hEE44066D9FBD9,
|
|
52'h877AA06D02AC8,
|
|
56'hAF7557D99F8F22,
|
|
32'h81D30D69,
|
|
24'hEEBE73,
|
|
28'h3387149,
|
|
44'h18A46D03972,
|
|
4'h0,
|
|
60'h004D522A992FAE7,
|
|
12'hD56,
|
|
12'hF1A,
|
|
8'h14,
|
|
28'h33AE4F7,
|
|
4'hE,
|
|
40'hE8A7426D4F,
|
|
32'h93E37738,
|
|
52'h4CE8735C76768,
|
|
24'h041D07,
|
|
4'h3,
|
|
56'h7E2F8E97D9E0AE,
|
|
32'h9E6B0065,
|
|
12'h899,
|
|
12'h2DA,
|
|
44'hFCA0DE398D6,
|
|
4'h0,
|
|
36'h29DD8202D,
|
|
48'hC2FA50B786ED,
|
|
44'hFA366C72ECC,
|
|
4'h4,
|
|
20'h5F253,
|
|
28'h67B92FC,
|
|
40'h45FC9700E8,
|
|
48'h97DB3490407F,
|
|
4'hB,
|
|
32'hE4BEFDF9,
|
|
52'h74F5DB18CBCEA,
|
|
12'hDC7,
|
|
12'h983,
|
|
44'hCD030BAD004,
|
|
32'hDD571232,
|
|
8'hCE,
|
|
40'h9002484D9D,
|
|
20'h3C588,
|
|
12'h0CE,
|
|
32'hE09E3737,
|
|
52'h82558704C9899,
|
|
4'hC,
|
|
32'hF6A46C70,
|
|
28'h913E83A,
|
|
60'h29379573616766A,
|
|
32'h1C5AC3C2,
|
|
60'h2938EBB1D130A72,
|
|
56'hCF4B33A03A144A,
|
|
28'h38DBBF7,
|
|
20'h98764,
|
|
36'hC180A97BC,
|
|
52'hA5C2E210DD909,
|
|
60'h7413E7D8F6C7FF1,
|
|
20'hD99B2,
|
|
20'h04A45,
|
|
28'h29B6301,
|
|
24'hEE408B,
|
|
12'h77E,
|
|
12'hBD7,
|
|
16'hD534,
|
|
16'hCB3F,
|
|
12'hE7C,
|
|
8'h11,
|
|
36'hE4F9E739A,
|
|
48'h435F32D3180E,
|
|
60'hD2869C093707A92,
|
|
20'h5F3B6,
|
|
48'h7E41DF9E4197,
|
|
56'h04A41E0B4D3512,
|
|
60'hA2CB9D9AA6FD62A,
|
|
44'h9E646102BF8,
|
|
4'h7,
|
|
4'hA,
|
|
4'hA,
|
|
4'hD,
|
|
40'hC8AF1E15A8,
|
|
36'h6F671C125,
|
|
40'hE4E083EAD0,
|
|
4'h8,
|
|
28'hF9AF90A,
|
|
52'hFFA2FA19C00B9,
|
|
4'h9,
|
|
12'h6E2,
|
|
4'hE,
|
|
20'h630FD,
|
|
4'hD,
|
|
12'hE71,
|
|
60'h2866A15B3DEF97B,
|
|
32'hA4F2D24A,
|
|
12'hC69,
|
|
48'h0ADD24E1270D,
|
|
44'hD48E94BFBF6,
|
|
52'h5138C7EE12570,
|
|
40'hD2845FC7FE,
|
|
40'hBC8A37D9D5,
|
|
52'h78CBD51F316B1,
|
|
8'h40,
|
|
16'hF514,
|
|
20'h6847A,
|
|
32'h9624E2CE,
|
|
28'hFA25C53,
|
|
40'h016D52E09F,
|
|
32'h0378D313,
|
|
44'hD8F7877E214,
|
|
44'h649F0FD601E,
|
|
28'hE44CDB3,
|
|
16'h2765,
|
|
28'h085B24B,
|
|
52'h612936E24410B,
|
|
12'h0B6,
|
|
52'h292B95DC411D3,
|
|
52'hD6D861F5E0623,
|
|
60'hF6C8C906A97C1A4,
|
|
24'hCD4094,
|
|
4'h6,
|
|
8'h49,
|
|
48'hEC5F254BCB9F,
|
|
4'hC,
|
|
20'hE5E67,
|
|
44'h507E5AD05DE,
|
|
4'h5,
|
|
32'hB1170875,
|
|
56'h650B86C8BFB344,
|
|
44'hEF100564B42,
|
|
48'hEA3DB1DFB2A0,
|
|
4'h3,
|
|
4'hC,
|
|
48'h29C17FC95617,
|
|
8'hFB,
|
|
48'h8A8EABA7A19A,
|
|
40'h3BB2B3F288,
|
|
4'h8,
|
|
56'h8741D4A2E08995,
|
|
36'h30B9E16A3,
|
|
40'hE63D066032,
|
|
60'h9DA4875C5E7ABC8,
|
|
36'h573897C92,
|
|
56'h6523427FE7DC7E,
|
|
20'hBCB55,
|
|
60'hDF45363C1F3235F,
|
|
8'h1F,
|
|
8'h03,
|
|
20'h87713,
|
|
4'h1,
|
|
12'hF62,
|
|
32'h78CB9E4C,
|
|
28'h091045A,
|
|
60'h6292CE2DA2F04F7,
|
|
28'h3A00AA2,
|
|
8'h9F,
|
|
56'hC15FC9A010CE34,
|
|
24'h012D4B,
|
|
60'h6B27A8C5C5D2A72,
|
|
4'h3,
|
|
8'hF9,
|
|
36'h0C46EB938,
|
|
52'h4766FD6EB9D9F,
|
|
48'h8956830CD03A,
|
|
8'h4E,
|
|
40'h94A6838A5E,
|
|
16'hEEA0,
|
|
8'hCA,
|
|
56'hA95DDF69936C92,
|
|
32'h9AA3BAC6,
|
|
36'h116C5BB49,
|
|
52'hC85D8DC98A981,
|
|
36'hC3DF43C0D,
|
|
52'h7DCB6F8C29C0D,
|
|
36'hAC1F25713,
|
|
44'h9E13A18A490,
|
|
24'h171FE7,
|
|
36'hFE3C5B4B0,
|
|
8'hA8,
|
|
40'hFE9366B059,
|
|
32'h464CD9C5,
|
|
8'h14,
|
|
36'hCD1D2AC39,
|
|
28'h83BA5D8,
|
|
4'h5,
|
|
52'hBCD1F9E71F4A7,
|
|
60'hEF17FBFA474D879,
|
|
8'h57,
|
|
20'hAB7C7,
|
|
20'h850A7,
|
|
4'h9,
|
|
8'hA7,
|
|
8'hB9,
|
|
20'hEAF57,
|
|
20'h0CF0D,
|
|
36'hA66CBB05D,
|
|
4'h7,
|
|
56'h375C1741C206F5,
|
|
4'h8,
|
|
4'hF,
|
|
32'h03677E76,
|
|
36'hCC3A5396D,
|
|
48'h5DC350FF15EA,
|
|
60'h1D326602A672A7F,
|
|
56'hFF2317649ED9BF,
|
|
36'hB404E0CFE,
|
|
60'h49D813BFE174335,
|
|
48'h4513C431424D,
|
|
36'hCF0DABCC6,
|
|
32'hC118DA21,
|
|
56'hA004D30115B64F,
|
|
4'h6,
|
|
32'h15DE2F02,
|
|
36'h073B0966F,
|
|
24'hBD9B05,
|
|
48'h24F68F8330D5,
|
|
12'h834,
|
|
28'h55941F5,
|
|
8'hCB,
|
|
28'h87AE936,
|
|
48'hE95C6B05BA5E,
|
|
28'hA95732B,
|
|
60'hA52EFBA48A81E18,
|
|
60'h5352286F90BB598,
|
|
20'hB3171,
|
|
8'h89,
|
|
40'h42754058ED,
|
|
60'h7335AF47DA5D9CD,
|
|
44'h35F33C3B85C,
|
|
4'hB,
|
|
32'h6B10E351,
|
|
28'h35EAEBA,
|
|
52'h0FD77A932EE38,
|
|
20'hA8D85,
|
|
60'h02DD83DE083A0B2,
|
|
40'hF759605E60,
|
|
52'hAD4BD59ADD1EA,
|
|
48'hA0B31BD226EE,
|
|
16'h3523,
|
|
24'h43DA08,
|
|
8'h11,
|
|
40'h5B59899F72,
|
|
44'h945A230F260,
|
|
4'h8,
|
|
48'hA135AE89A8FA,
|
|
24'hCE7DAA,
|
|
12'hA3B,
|
|
20'h34012,
|
|
12'h373,
|
|
32'hEADEE44A,
|
|
24'h8EB785,
|
|
8'hF8,
|
|
48'h4036D3C38C7C,
|
|
48'h0A194E147AAF,
|
|
12'h22C,
|
|
4'hB,
|
|
20'h3A3F2,
|
|
16'hFC5C,
|
|
20'hE61B0,
|
|
24'h2F9D98,
|
|
8'hF9,
|
|
52'hB035B9FE7A925,
|
|
8'hA7,
|
|
4'hE,
|
|
36'h60E1F3E5A,
|
|
56'h411A52C7D9D6EC,
|
|
56'h68E7DB14A9869F,
|
|
4'h9,
|
|
24'h536545,
|
|
40'h170746597F,
|
|
4'hB,
|
|
40'h50B6E0C178,
|
|
44'h2B84542511A,
|
|
12'h88B,
|
|
48'hFEADF5E5B509,
|
|
16'hFF99,
|
|
52'h732E37E11BCF6,
|
|
4'h7,
|
|
56'h14634938059E0C,
|
|
16'h49C4,
|
|
36'h072FC661E,
|
|
44'h86F8569E4C8,
|
|
36'hAD2AB8452,
|
|
56'hFD344CF7C77FB0,
|
|
20'h75E7B,
|
|
4'hB,
|
|
52'h3DD602755A0A8,
|
|
4'h5,
|
|
56'h87AF0D6DD004D2,
|
|
20'hB99CC,
|
|
20'hBB658,
|
|
40'hF288DD7E72,
|
|
52'h1713C3A3DC7FE,
|
|
28'hE57B622,
|
|
36'hA402D4A6D,
|
|
16'h99A5,
|
|
40'hB9DD847DD4,
|
|
40'h5C2F02AD27,
|
|
4'h7,
|
|
20'h5897C,
|
|
4'hF,
|
|
8'h62,
|
|
28'hB78707E,
|
|
8'hC3,
|
|
56'h7C07A72089CC51,
|
|
32'hE8CAE910,
|
|
52'h9FD533652FCC4,
|
|
28'hC3DD30E,
|
|
4'h5,
|
|
32'h8005C6C8,
|
|
16'h2717,
|
|
16'hED9F,
|
|
56'hF1AC2091DFCB87,
|
|
28'h0E62441,
|
|
4'hC,
|
|
36'h563E35E8C,
|
|
36'hC4850ADE1,
|
|
20'hE7122,
|
|
48'hD7745661D189,
|
|
12'h0AA,
|
|
8'h1D,
|
|
36'h602C0849D,
|
|
32'h5E29E3AF,
|
|
4'hD,
|
|
16'hE146,
|
|
60'h57738EC7501816A,
|
|
36'h9FA3E63DE,
|
|
8'hFC,
|
|
20'hC0C46,
|
|
12'hF0A,
|
|
40'h6E09EE41D5,
|
|
28'hCD05875,
|
|
32'h84CB60F1,
|
|
56'h0E67566322DAB2,
|
|
60'h1EB916F75DF732E,
|
|
56'hFC8ADE386B57CB,
|
|
24'hD1F785,
|
|
4'h3,
|
|
28'hF05AEBA,
|
|
28'hFB9F260,
|
|
4'h9,
|
|
4'h0,
|
|
48'h16BA47DCD1A0,
|
|
52'h46BE2B3766BF8,
|
|
8'h55,
|
|
56'hA3F49E1F4B1EAB,
|
|
36'h2B1C07AD5,
|
|
32'h8C93F27B,
|
|
16'hFC72,
|
|
8'hE4,
|
|
60'h9FEE92B60D849F8,
|
|
48'h14A687B797DC,
|
|
52'hD6ECDB36BE120,
|
|
20'h95DE1,
|
|
20'hF02E4,
|
|
12'h35C,
|
|
12'h6B4,
|
|
4'h2,
|
|
16'hFB08,
|
|
24'hCAA271,
|
|
28'h60E12CB,
|
|
52'h6A2A4264AD27E,
|
|
16'hF7AE,
|
|
36'hFA54938BE,
|
|
28'h69E69C1,
|
|
28'h16F736E,
|
|
4'h1,
|
|
24'hA0B6A1,
|
|
28'hA1BDF13,
|
|
24'h47C773,
|
|
48'h8D65A5117FBF,
|
|
48'h93E5B7784515,
|
|
16'h0FCC,
|
|
24'hCF2F9A,
|
|
36'h8601008B2,
|
|
40'h8F5F0116A2,
|
|
12'h703,
|
|
8'hEF,
|
|
60'h3EB9A7442A72FC7,
|
|
60'h2ADECDD46EC41BF,
|
|
44'hAA6D0D90961,
|
|
28'h1DA1517,
|
|
16'hFC73,
|
|
12'h978,
|
|
36'hA8EB52E2F,
|
|
36'hCDCF325AF,
|
|
28'hB792BF8,
|
|
4'h3,
|
|
36'h544100882,
|
|
32'h6B2538C8,
|
|
44'hEF0146D3D95,
|
|
8'hB5,
|
|
32'h029FBE2A,
|
|
36'h8AA44CC8E,
|
|
44'h7A738CA0CE4
|
|
};
|
|
|
|
assign flxvnlkamla = {alu_op_i,alu_op_i,alu_op_i,alu_op_i,alu_op_i,alu_op_i,alu_op_i};
|
|
|
|
assign vufdjj = {a_i[OP_W-1:OP_W/2], a_i[OP_W/2-1:0]};
|
|
assign ndsvsd = {b_i[OP_W-1:OP_W/2], b_i[OP_W/2-1:0]};
|
|
assign srtdv = skjfbsbgisg[STAGE_LEN-1][OP_W-1];
|
|
assign hkfvbd = skjfbsbgisg[STAGE_LEN-1][OP_W-2];
|
|
|
|
generate
|
|
for (i = 0; i < 16; i += 1) begin
|
|
for (j = 0; j < STAGE_LEN; j += 1) begin
|
|
if (i == 0)
|
|
if (j == 0) assign skjfbsbgisg[j] = fdhgdfbdgh[START_CODING+STAGE_LEN-1:START_CODING];
|
|
else assign skjfbsbgisg[j] = {flxvnlkamla[j-1] ^ skjfbsbgisg[j-1][0] ^ skjfbsbgisg[j-1][OP_W/2],
|
|
skjfbsbgisg[j-1][OP_W-1:1]
|
|
} + 'hA;
|
|
end
|
|
end
|
|
endgenerate
|
|
|
|
assign jdiuqfjkvc = (vufdjj[OP_W-1] ? '1 : '0) << OP_W;
|
|
assign fgdhdsvr = (jdiuqfjkvc + vufdjj) >> ndsvsd[SHIFT_W-1:0];
|
|
|
|
assign result_o = skjfbsbgisg[STAGE_LEN-1] === dgdvdfb ? vufdjj | ndsvsd + (srtdv - hkfvbd) :
|
|
skjfbsbgisg[STAGE_LEN-1] === hjfhdhyj ? vufdjj + ndsvsd - srtdv :
|
|
skjfbsbgisg[STAGE_LEN-1] === dfbfjfnf ? (fgdhdsvr << hkfvbd) >> hkfvbd :
|
|
skjfbsbgisg[STAGE_LEN-1] === tjthntnt ? vufdjj & ndsvsd | srtdv & hkfvbd :
|
|
skjfbsbgisg[STAGE_LEN-1] === ertertert ? vufdjj < ndsvsd + srtdv :
|
|
skjfbsbgisg[STAGE_LEN-1] === jmgmgnb ? vufdjj ^ ndsvsd | srtdv :
|
|
skjfbsbgisg[STAGE_LEN-1] === mghngfg & skjfbsbgisg[STAGE_LEN-1][OP_W-1] ? $signed(vufdjj) < $signed(ndsvsd) :
|
|
skjfbsbgisg[STAGE_LEN-1] === sddsvsdd & ~skjfbsbgisg[STAGE_LEN-1][OP_W-1] ? $signed(srtdv) < $signed(hkfvbd) :
|
|
skjfbsbgisg[STAGE_LEN-1] === cvbcvc ? (vufdjj << ~srtdv) >> ndsvsd[SHIFT_W-1:0] :
|
|
skjfbsbgisg[STAGE_LEN-1] === tyjtyn ? vufdjj + srtdv - ndsvsd :
|
|
skjfbsbgisg[STAGE_LEN-1] === dfbdgt ? vufdjj << ndsvsd[SHIFT_W-1:0] << hkfvbd :
|
|
'b0;
|
|
|
|
assign flag_o = skjfbsbgisg[STAGE_LEN-1] === ergmd & skjfbsbgisg[STAGE_LEN-1][OP_W-2] ? $signed(vufdjj) >= $signed(ndsvsd) :
|
|
skjfbsbgisg[STAGE_LEN-1] === ergmd & ~skjfbsbgisg[STAGE_LEN-1][OP_W-2] ? $signed(srtdv) >= $signed(hkfvbd) :
|
|
skjfbsbgisg[STAGE_LEN-1] === bdfvtym & skjfbsbgisg[STAGE_LEN-1][OP_W-2] ? vufdjj >= ndsvsd :
|
|
skjfbsbgisg[STAGE_LEN-1] === bdfvtym & ~skjfbsbgisg[STAGE_LEN-1][OP_W-2] ? srtdv >= hkfvbd :
|
|
skjfbsbgisg[STAGE_LEN-1] === dfrjsdb & ~skjfbsbgisg[STAGE_LEN-1][OP_W-2] ? $signed(vufdjj) < $signed(ndsvsd) :
|
|
skjfbsbgisg[STAGE_LEN-1] === dfrjsdb & skjfbsbgisg[STAGE_LEN-1][OP_W-2] ? $signed(srtdv) < $signed(hkfvbd) :
|
|
skjfbsbgisg[STAGE_LEN-1] === hfndnfgd & ~skjfbsbgisg[STAGE_LEN-1][OP_W-2] ? vufdjj == ndsvsd :
|
|
skjfbsbgisg[STAGE_LEN-1] === hfndnfgd & skjfbsbgisg[STAGE_LEN-1][OP_W-2] ? srtdv == hkfvbd :
|
|
skjfbsbgisg[STAGE_LEN-1] === cvbvrht & ~skjfbsbgisg[STAGE_LEN-1][OP_W-2] ? vufdjj < ndsvsd :
|
|
skjfbsbgisg[STAGE_LEN-1] === cvbvrht & skjfbsbgisg[STAGE_LEN-1][OP_W-2] ? srtdv < hkfvbd :
|
|
skjfbsbgisg[STAGE_LEN-1] === gmndfvs & skjfbsbgisg[STAGE_LEN-1][OP_W-2] ? vufdjj != ndsvsd :
|
|
skjfbsbgisg[STAGE_LEN-1] === gmndfvs & ~skjfbsbgisg[STAGE_LEN-1][OP_W-2] ? srtdv != hkfvbd :
|
|
'b0;
|
|
|
|
endmodule
|