fixed error in slot calculation
This commit is contained in:
parent
18283f4436
commit
57aebc6eef
|
|
@ -2397,37 +2397,44 @@ ALTERNATE_WRITE_READ: if(!o_wb_stall_calib) begin
|
||||||
reg[2:0] slot_number, read_slot, write_slot, anticipate_activate_slot, anticipate_precharge_slot;
|
reg[2:0] slot_number, read_slot, write_slot, anticipate_activate_slot, anticipate_precharge_slot;
|
||||||
reg[2:0] remaining_slot;
|
reg[2:0] remaining_slot;
|
||||||
begin
|
begin
|
||||||
|
slot_number = 0;
|
||||||
|
read_slot = 0;
|
||||||
|
write_slot = 0;
|
||||||
|
anticipate_activate_slot = 0;
|
||||||
|
anticipate_precharge_slot = 0;
|
||||||
|
remaining_slot = 0;
|
||||||
|
delay = 0;
|
||||||
// find read command slot number
|
// find read command slot number
|
||||||
delay = {{(32-4){1'b0}},CL_nCK};
|
delay = {{(32-4){1'b0}},CL_nCK};
|
||||||
for(slot_number = 0 ; delay != 0 ; delay = delay - 1) begin
|
for(slot_number = 0 ; delay != 0 ; delay = delay - 1) begin
|
||||||
slot_number = slot_number - 1'b1;
|
slot_number[1:0] = slot_number[1:0] - 1'b1;
|
||||||
end
|
end
|
||||||
read_slot = slot_number;
|
read_slot[1:0] = slot_number[1:0];
|
||||||
|
|
||||||
// find write command slot number
|
// find write command slot number
|
||||||
delay = {{(32-4){1'b0}},CWL_nCK};
|
delay = {{(32-4){1'b0}},CWL_nCK};
|
||||||
for(slot_number = 0 ; delay != 0; delay = delay - 1) begin
|
for(slot_number = 0 ; delay != 0; delay = delay - 1) begin
|
||||||
slot_number = slot_number - 1'b1;
|
slot_number[1:0] = slot_number[1:0] - 1'b1;
|
||||||
end
|
end
|
||||||
write_slot = slot_number;
|
write_slot[1:0] = slot_number[1:0];
|
||||||
|
|
||||||
// find anticipate activate command slot number
|
// find anticipate activate command slot number
|
||||||
if(CL_nCK > CWL_nCK) slot_number = read_slot;
|
if(CL_nCK > CWL_nCK) slot_number[1:0] = read_slot[1:0];
|
||||||
else slot_number = write_slot;
|
else slot_number[1:0] = write_slot[1:0];
|
||||||
delay = ps_to_nCK(tRCD);
|
delay = ps_to_nCK(tRCD);
|
||||||
for(slot_number = slot_number; delay != 0; delay = delay - 1) begin
|
for(slot_number = slot_number; delay != 0; delay = delay - 1) begin
|
||||||
slot_number = slot_number - 1'b1;
|
slot_number[1:0] = slot_number[1:0] - 1'b1;
|
||||||
end
|
end
|
||||||
anticipate_activate_slot = slot_number;
|
anticipate_activate_slot[1:0] = slot_number[1:0];
|
||||||
// if computed anticipate_activate_slot is same with either write_slot or read_slot, decrement slot number until
|
// if computed anticipate_activate_slot is same with either write_slot or read_slot, decrement slot number until
|
||||||
while(anticipate_activate_slot == write_slot || anticipate_activate_slot == read_slot) begin
|
while(anticipate_activate_slot[1:0] == write_slot[1:0] || anticipate_activate_slot[1:0] == read_slot[1:0]) begin
|
||||||
anticipate_activate_slot = anticipate_activate_slot - 1'b1;
|
anticipate_activate_slot[1:0] = anticipate_activate_slot[1:0] - 1'b1;
|
||||||
end
|
end
|
||||||
|
|
||||||
//the remaining slot will be for precharge command
|
//the remaining slot will be for precharge command
|
||||||
anticipate_precharge_slot = 0;
|
anticipate_precharge_slot = 0;
|
||||||
while(anticipate_precharge_slot == write_slot || anticipate_precharge_slot == read_slot || anticipate_precharge_slot == anticipate_activate_slot) begin
|
while(anticipate_precharge_slot[1:0] == write_slot[1:0] || anticipate_precharge_slot[1:0] == read_slot[1:0] || anticipate_precharge_slot[1:0] == anticipate_activate_slot[1:0]) begin
|
||||||
anticipate_precharge_slot = anticipate_precharge_slot - 1'b1;
|
anticipate_precharge_slot[1:0] = anticipate_precharge_slot[1:0] - 1'b1;
|
||||||
end
|
end
|
||||||
|
|
||||||
//the remaining slot will be for precharge command
|
//the remaining slot will be for precharge command
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue