Files
Toooba/src_SSITH_P3/Verilog_RTL/module_amoExec.v
2020-01-13 12:19:20 -05:00

191 lines
6.1 KiB
Verilog

//
// Generated by Bluespec Compiler, version 2019.05.beta2 (build a88bf40db, 2019-05-24)
//
//
//
//
// Ports:
// Name I/O size props
// amoExec O 64
// amoExec_amo_inst I 7
// amoExec_current_data I 64
// amoExec_in_data I 64
// amoExec_upper_32_bits I 1
//
// Combinational paths from inputs to outputs:
// (amoExec_amo_inst,
// amoExec_current_data,
// amoExec_in_data,
// amoExec_upper_32_bits) -> amoExec
//
//
`ifdef BSV_ASSIGNMENT_DELAY
`else
`define BSV_ASSIGNMENT_DELAY
`endif
`ifdef BSV_POSITIVE_RESET
`define BSV_RESET_VALUE 1'b1
`define BSV_RESET_EDGE posedge
`else
`define BSV_RESET_VALUE 1'b0
`define BSV_RESET_EDGE negedge
`endif
module module_amoExec(amoExec_amo_inst,
amoExec_current_data,
amoExec_in_data,
amoExec_upper_32_bits,
amoExec);
// value method amoExec
input [6 : 0] amoExec_amo_inst;
input [63 : 0] amoExec_current_data;
input [63 : 0] amoExec_in_data;
input amoExec_upper_32_bits;
output [63 : 0] amoExec;
// signals for module outputs
wire [63 : 0] amoExec;
// remaining internal signals
reg [63 : 0] _theResult_____1__h29,
_theResult___fst__h122,
_theResult___fst__h183,
_theResult___snd__h123;
wire [63 : 0] SEXT_amoExec_current_data_BITS_31_TO_0_7___d18,
SEXT_amoExec_current_data_BITS_63_TO_32_3___d14,
SEXT_amoExec_in_data_BITS_31_TO_0____d8,
_theResult___fst__h113,
current_data__h27,
in_data__h28,
new_data__h249,
new_data__h373,
new_data__h379,
new_data__h385,
new_data__h391,
new_data__h405,
new_data__h419,
new_data__h433;
wire [31 : 0] amoExec_current_data_BITS_31_TO_0__q3,
amoExec_current_data_BITS_63_TO_32__q1,
amoExec_in_data_BITS_31_TO_0__q2;
wire IF_amoExec_amo_inst_BIT_2_THEN_amoExec_current_ETC___d30,
IF_amoExec_amo_inst_BIT_2_THEN_amoExec_current_ETC___d34;
// value method amoExec
assign amoExec =
amoExec_amo_inst[2] ?
_theResult_____1__h29 :
(amoExec_upper_32_bits ?
{ _theResult_____1__h29[31:0],
amoExec_current_data[31:0] } :
{ amoExec_current_data[63:32],
_theResult_____1__h29[31:0] }) ;
// remaining internal signals
assign IF_amoExec_amo_inst_BIT_2_THEN_amoExec_current_ETC___d30 =
(current_data__h27 ^ 64'h8000000000000000) <=
(in_data__h28 ^ 64'h8000000000000000) ;
assign IF_amoExec_amo_inst_BIT_2_THEN_amoExec_current_ETC___d34 =
current_data__h27 <= in_data__h28 ;
assign SEXT_amoExec_current_data_BITS_31_TO_0_7___d18 =
{ {32{amoExec_current_data_BITS_31_TO_0__q3[31]}},
amoExec_current_data_BITS_31_TO_0__q3 } ;
assign SEXT_amoExec_current_data_BITS_63_TO_32_3___d14 =
{ {32{amoExec_current_data_BITS_63_TO_32__q1[31]}},
amoExec_current_data_BITS_63_TO_32__q1 } ;
assign SEXT_amoExec_in_data_BITS_31_TO_0____d8 =
{ {32{amoExec_in_data_BITS_31_TO_0__q2[31]}},
amoExec_in_data_BITS_31_TO_0__q2 } ;
assign _theResult___fst__h113 =
amoExec_upper_32_bits ?
_theResult___fst__h183 :
_theResult___fst__h122 ;
assign amoExec_current_data_BITS_31_TO_0__q3 = amoExec_current_data[31:0] ;
assign amoExec_current_data_BITS_63_TO_32__q1 =
amoExec_current_data[63:32] ;
assign amoExec_in_data_BITS_31_TO_0__q2 = amoExec_in_data[31:0] ;
assign current_data__h27 =
amoExec_amo_inst[2] ?
amoExec_current_data :
_theResult___fst__h113 ;
assign in_data__h28 =
amoExec_amo_inst[2] ? amoExec_in_data : _theResult___snd__h123 ;
assign new_data__h249 = current_data__h27 + in_data__h28 ;
assign new_data__h373 = current_data__h27 ^ in_data__h28 ;
assign new_data__h379 = current_data__h27 & in_data__h28 ;
assign new_data__h385 = current_data__h27 | in_data__h28 ;
assign new_data__h391 =
IF_amoExec_amo_inst_BIT_2_THEN_amoExec_current_ETC___d30 ?
current_data__h27 :
in_data__h28 ;
assign new_data__h405 =
IF_amoExec_amo_inst_BIT_2_THEN_amoExec_current_ETC___d30 ?
in_data__h28 :
current_data__h27 ;
assign new_data__h419 =
IF_amoExec_amo_inst_BIT_2_THEN_amoExec_current_ETC___d34 ?
current_data__h27 :
in_data__h28 ;
assign new_data__h433 =
IF_amoExec_amo_inst_BIT_2_THEN_amoExec_current_ETC___d34 ?
in_data__h28 :
current_data__h27 ;
always@(amoExec_amo_inst or
amoExec_current_data or
SEXT_amoExec_current_data_BITS_63_TO_32_3___d14)
begin
case (amoExec_amo_inst[6:3])
4'd5, 4'd6:
_theResult___fst__h183 =
SEXT_amoExec_current_data_BITS_63_TO_32_3___d14;
default: _theResult___fst__h183 =
{ 32'd0, amoExec_current_data[63:32] };
endcase
end
always@(amoExec_amo_inst or
amoExec_in_data or SEXT_amoExec_in_data_BITS_31_TO_0____d8)
begin
case (amoExec_amo_inst[6:3])
4'd5, 4'd6:
_theResult___snd__h123 = SEXT_amoExec_in_data_BITS_31_TO_0____d8;
default: _theResult___snd__h123 = { 32'd0, amoExec_in_data[31:0] };
endcase
end
always@(amoExec_amo_inst or
amoExec_current_data or
SEXT_amoExec_current_data_BITS_31_TO_0_7___d18)
begin
case (amoExec_amo_inst[6:3])
4'd5, 4'd6:
_theResult___fst__h122 =
SEXT_amoExec_current_data_BITS_31_TO_0_7___d18;
default: _theResult___fst__h122 = { 32'd0, amoExec_current_data[31:0] };
endcase
end
always@(amoExec_amo_inst or
in_data__h28 or
new_data__h249 or
new_data__h373 or
new_data__h379 or
new_data__h385 or
new_data__h391 or
new_data__h405 or new_data__h419 or new_data__h433)
begin
case (amoExec_amo_inst[6:3])
4'd0: _theResult_____1__h29 = in_data__h28;
4'd1: _theResult_____1__h29 = new_data__h249;
4'd2: _theResult_____1__h29 = new_data__h373;
4'd3: _theResult_____1__h29 = new_data__h379;
4'd4: _theResult_____1__h29 = new_data__h385;
4'd5: _theResult_____1__h29 = new_data__h391;
4'd6: _theResult_____1__h29 = new_data__h405;
4'd7: _theResult_____1__h29 = new_data__h419;
4'd8: _theResult_____1__h29 = new_data__h433;
default: _theResult_____1__h29 = 64'd0;
endcase
end
endmodule // module_amoExec