mirror of
https://github.com/openhwgroup/cve2.git
synced 2025-04-23 13:37:20 -04:00
Fixed space/tab mixture and indentation in instr_core_interface
This commit is contained in:
parent
af8b208029
commit
10d9a75f27
1 changed files with 173 additions and 218 deletions
|
@ -26,255 +26,210 @@
|
|||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
|
||||
module instr_core_interface
|
||||
(
|
||||
input logic clk,
|
||||
input logic rst_n,
|
||||
(
|
||||
input logic clk,
|
||||
input logic rst_n,
|
||||
|
||||
|
||||
input logic req_i,
|
||||
input logic [31:0] addr_i,
|
||||
output logic ack_o,
|
||||
output logic [31:0] rdata_o,
|
||||
input logic req_i,
|
||||
input logic [31:0] addr_i,
|
||||
output logic ack_o,
|
||||
output logic [31:0] rdata_o,
|
||||
|
||||
|
||||
output logic instr_req_o,
|
||||
output logic [31:0] instr_addr_o,
|
||||
input logic instr_gnt_i,
|
||||
input logic instr_r_valid_i,
|
||||
input logic [31:0] instr_r_rdata_i,
|
||||
output logic instr_req_o,
|
||||
output logic [31:0] instr_addr_o,
|
||||
input logic instr_gnt_i,
|
||||
input logic instr_r_valid_i,
|
||||
input logic [31:0] instr_r_rdata_i,
|
||||
|
||||
input logic stall_if_i,
|
||||
input logic stall_if_i,
|
||||
|
||||
input logic drop_request_i
|
||||
);
|
||||
input logic drop_request_i
|
||||
);
|
||||
|
||||
|
||||
enum logic [2:0] {IDLE, PENDING, WAIT_RVALID, WAIT_IF_STALL, WAIT_GNT, ABORT} CS, NS;
|
||||
enum logic [2:0] {IDLE, PENDING, WAIT_RVALID, WAIT_IF_STALL, WAIT_GNT, ABORT} CS, NS;
|
||||
|
||||
logic save_rdata;
|
||||
logic [31:0] rdata_Q;
|
||||
logic save_rdata;
|
||||
logic [31:0] rdata_Q;
|
||||
|
||||
logic wait_gnt;
|
||||
logic [31:0] addr_Q;
|
||||
logic wait_gnt;
|
||||
logic [31:0] addr_Q;
|
||||
|
||||
always_ff @(posedge clk, negedge rst_n)
|
||||
begin
|
||||
if(rst_n == 1'b0)
|
||||
begin
|
||||
CS <= IDLE;
|
||||
rdata_Q <= '0;
|
||||
addr_Q <= '0;
|
||||
end
|
||||
else
|
||||
begin
|
||||
CS <= NS;
|
||||
always_ff @(posedge clk, negedge rst_n)
|
||||
begin
|
||||
if(rst_n == 1'b0)
|
||||
begin
|
||||
CS <= IDLE;
|
||||
rdata_Q <= '0;
|
||||
addr_Q <= '0;
|
||||
end
|
||||
else
|
||||
begin
|
||||
CS <= NS;
|
||||
|
||||
if(wait_gnt)
|
||||
addr_Q <= addr_i;
|
||||
if(wait_gnt)
|
||||
addr_Q <= addr_i;
|
||||
|
||||
if(save_rdata)
|
||||
rdata_Q <= instr_r_rdata_i;
|
||||
end
|
||||
end
|
||||
if(save_rdata)
|
||||
rdata_Q <= instr_r_rdata_i;
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
always_comb
|
||||
begin
|
||||
always_comb
|
||||
begin
|
||||
instr_req_o = 1'b0;
|
||||
ack_o = 1'b0;
|
||||
save_rdata = 1'b0;
|
||||
rdata_o = instr_r_rdata_i;
|
||||
instr_addr_o = addr_i;
|
||||
wait_gnt = 1'b0;
|
||||
|
||||
instr_req_o = 1'b0;
|
||||
ack_o = 1'b0;
|
||||
save_rdata = 1'b0;
|
||||
rdata_o = instr_r_rdata_i;
|
||||
instr_addr_o = addr_i;
|
||||
unique case(CS)
|
||||
IDLE:
|
||||
begin
|
||||
instr_req_o = req_i;
|
||||
ack_o = 1'b0;
|
||||
rdata_o = rdata_Q;
|
||||
|
||||
wait_gnt = 1'b0;
|
||||
if(req_i)
|
||||
begin
|
||||
if(instr_gnt_i) //~> granted request
|
||||
NS = PENDING;
|
||||
else begin //~> got a request but no grant
|
||||
NS = WAIT_GNT;
|
||||
wait_gnt = 1'b1;
|
||||
end
|
||||
end //~> if(req_i == 0)
|
||||
else
|
||||
begin
|
||||
NS = IDLE;
|
||||
end
|
||||
end // case: IDLE
|
||||
|
||||
case(CS)
|
||||
WAIT_GNT:
|
||||
begin
|
||||
instr_addr_o = addr_Q;
|
||||
instr_req_o = 1'b1;
|
||||
|
||||
IDLE :
|
||||
begin
|
||||
instr_req_o = req_i;
|
||||
ack_o = 1'b0;
|
||||
rdata_o = rdata_Q;
|
||||
if(instr_gnt_i)
|
||||
NS = PENDING;
|
||||
else
|
||||
begin
|
||||
// if (drop_request_i)
|
||||
// NS = IDLE;
|
||||
// else
|
||||
NS = WAIT_GNT;
|
||||
end
|
||||
end // case: WAIT_GNT
|
||||
|
||||
PENDING:
|
||||
begin
|
||||
if (instr_r_valid_i) begin
|
||||
save_rdata = 1'b1;
|
||||
ack_o = 1'b1;
|
||||
|
||||
if(req_i)
|
||||
begin
|
||||
if(instr_gnt_i) //~> granted request
|
||||
NS = PENDING;
|
||||
else begin //~> got a request but no grant
|
||||
NS = WAIT_GNT;
|
||||
wait_gnt = 1'b1;
|
||||
end
|
||||
end //~> if(req_i == 0)
|
||||
else
|
||||
begin
|
||||
NS = IDLE;
|
||||
end
|
||||
end // case: IDLE
|
||||
if (stall_if_i) begin
|
||||
NS = WAIT_IF_STALL;
|
||||
instr_req_o = 1'b0;
|
||||
end else begin
|
||||
NS = IDLE;
|
||||
instr_req_o = req_i;
|
||||
|
||||
if (req_i) begin
|
||||
if (instr_gnt_i) begin
|
||||
NS = PENDING;
|
||||
end else begin
|
||||
NS = WAIT_GNT;
|
||||
wait_gnt = 1'b1;
|
||||
end
|
||||
end
|
||||
end
|
||||
end else begin
|
||||
NS = WAIT_RVALID;
|
||||
instr_req_o = 1'b0;
|
||||
ack_o = 1'b0;
|
||||
end
|
||||
end // case: PENDING
|
||||
|
||||
WAIT_GNT :
|
||||
begin
|
||||
WAIT_RVALID :
|
||||
begin
|
||||
NS = WAIT_RVALID;
|
||||
ack_o = 1'b0;
|
||||
instr_req_o = 1'b0;
|
||||
|
||||
instr_addr_o = addr_Q;
|
||||
instr_req_o = 1'b1;
|
||||
if (instr_r_valid_i) begin
|
||||
ack_o = 1'b1;
|
||||
save_rdata = 1'b1;
|
||||
|
||||
if(instr_gnt_i)
|
||||
NS = PENDING;
|
||||
else
|
||||
begin
|
||||
// if (drop_request_i)
|
||||
// NS = IDLE;
|
||||
// else
|
||||
NS = WAIT_GNT;
|
||||
end
|
||||
if (stall_if_i) begin
|
||||
instr_req_o = 1'b0;
|
||||
NS = WAIT_IF_STALL;
|
||||
end else begin
|
||||
instr_req_o = req_i;
|
||||
if (req_i) begin
|
||||
if (instr_gnt_i)
|
||||
NS = PENDING;
|
||||
else begin
|
||||
NS = WAIT_GNT;
|
||||
wait_gnt = 1'b1;
|
||||
end
|
||||
end else
|
||||
NS = IDLE;
|
||||
end
|
||||
end
|
||||
end // case: WAIT_RVALID
|
||||
|
||||
end // case: WAIT_GNT
|
||||
WAIT_IF_STALL:
|
||||
begin
|
||||
ack_o = 1'b1;
|
||||
rdata_o = rdata_Q;
|
||||
|
||||
if (stall_if_i) begin
|
||||
NS = WAIT_IF_STALL;
|
||||
instr_req_o = 1'b0;
|
||||
end
|
||||
else
|
||||
begin
|
||||
instr_req_o = req_i;
|
||||
|
||||
PENDING :
|
||||
begin
|
||||
if (req_i) begin
|
||||
if (instr_gnt_i)
|
||||
NS = PENDING;
|
||||
else begin
|
||||
NS = WAIT_GNT;
|
||||
wait_gnt = 1'b1;
|
||||
end
|
||||
end else
|
||||
NS = IDLE;
|
||||
end
|
||||
end // case: WAIT_IF_STALL
|
||||
|
||||
if(instr_r_valid_i)
|
||||
begin
|
||||
save_rdata = 1'b1;
|
||||
ABORT:
|
||||
begin
|
||||
NS = IDLE;
|
||||
ack_o = 1'b1;
|
||||
instr_req_o = 1'b1;
|
||||
|
||||
ack_o = 1'b1;
|
||||
if(stall_if_i)
|
||||
begin
|
||||
instr_req_o = 1'b0;
|
||||
NS = WAIT_IF_STALL;
|
||||
end
|
||||
else
|
||||
begin
|
||||
instr_req_o = req_i;
|
||||
if(req_i)
|
||||
begin
|
||||
if( instr_gnt_i )
|
||||
begin
|
||||
NS = PENDING;
|
||||
end
|
||||
else
|
||||
begin
|
||||
NS = WAIT_GNT;
|
||||
wait_gnt = 1'b1;
|
||||
end
|
||||
end
|
||||
else
|
||||
NS = IDLE;
|
||||
end
|
||||
end
|
||||
else
|
||||
begin
|
||||
NS = WAIT_RVALID;
|
||||
instr_req_o = 1'b0;
|
||||
ack_o = 1'b0;
|
||||
end
|
||||
end // case: PENDING
|
||||
|
||||
WAIT_RVALID :
|
||||
begin
|
||||
|
||||
|
||||
if(instr_r_valid_i)
|
||||
begin
|
||||
|
||||
ack_o = 1'b1;
|
||||
save_rdata = 1'b1;
|
||||
|
||||
|
||||
if(stall_if_i)
|
||||
begin
|
||||
instr_req_o = 1'b0;
|
||||
NS = WAIT_IF_STALL;
|
||||
|
||||
end
|
||||
else
|
||||
begin
|
||||
instr_req_o = req_i;
|
||||
if(req_i)
|
||||
if(instr_gnt_i)
|
||||
NS = PENDING;
|
||||
else begin
|
||||
NS = WAIT_GNT;
|
||||
wait_gnt = 1'b1;
|
||||
end
|
||||
else
|
||||
NS = IDLE;
|
||||
end
|
||||
|
||||
end
|
||||
else
|
||||
begin
|
||||
NS = WAIT_RVALID;
|
||||
ack_o = 1'b0;
|
||||
instr_req_o = 1'b0;
|
||||
end
|
||||
end // case: WAIT_RVALID
|
||||
|
||||
|
||||
|
||||
WAIT_IF_STALL :
|
||||
begin
|
||||
ack_o = 1'b1;
|
||||
rdata_o = rdata_Q;
|
||||
|
||||
if(stall_if_i)
|
||||
begin
|
||||
instr_req_o = 1'b0;
|
||||
NS = WAIT_IF_STALL;
|
||||
end
|
||||
else
|
||||
begin
|
||||
|
||||
instr_req_o = req_i;
|
||||
if(req_i)
|
||||
if(instr_gnt_i)
|
||||
NS = PENDING;
|
||||
else begin
|
||||
NS = WAIT_GNT;
|
||||
wait_gnt = 1'b1;
|
||||
end
|
||||
else
|
||||
NS = IDLE;
|
||||
end
|
||||
|
||||
|
||||
|
||||
end // case: WAIT_IF_STALL
|
||||
|
||||
ABORT:
|
||||
begin
|
||||
ack_o = 1'b1;
|
||||
instr_req_o = 1'b1;
|
||||
if(req_i)
|
||||
begin
|
||||
if(instr_gnt_i) //~> granted request
|
||||
NS = PENDING;
|
||||
else begin //~> got a request but no grant
|
||||
NS = WAIT_GNT;
|
||||
wait_gnt = 1'b1;
|
||||
end
|
||||
end //~> if(req_i == 0)
|
||||
else
|
||||
begin
|
||||
NS = IDLE;
|
||||
end
|
||||
end // case: ABORT
|
||||
|
||||
|
||||
default :
|
||||
begin
|
||||
NS = IDLE;
|
||||
instr_req_o = 1'b0;
|
||||
end
|
||||
|
||||
endcase
|
||||
|
||||
end
|
||||
if (req_i) begin
|
||||
if(instr_gnt_i) //~> granted request
|
||||
NS = PENDING;
|
||||
else begin //~> got a request but no grant
|
||||
NS = WAIT_GNT;
|
||||
wait_gnt = 1'b1;
|
||||
end
|
||||
end
|
||||
end // case: ABORT
|
||||
|
||||
default:
|
||||
begin
|
||||
NS = IDLE;
|
||||
instr_req_o = 1'b0;
|
||||
end
|
||||
endcase
|
||||
end
|
||||
|
||||
endmodule
|
Loading…
Add table
Add a link
Reference in a new issue