📄 opensparc ddr2 controller rtl files.v
字号:
que_b0_index3_en = 1'h1;
que_b0_index2_en = 1'h1;
que_b0_index1_en = 1'h1;
que_b0_index0_en = 1'h1;
que_b0_index5_val_in = que_b0_index_ent4[6];
que_b0_index4_val_in = que_b0_index_ent3[6];
que_b0_index3_val_in = que_b0_index_ent2[6];
que_b0_index2_val_in = que_b0_index_ent1[6];
que_b0_index1_val_in = que_b0_index_ent0[6];
que_b0_index0_val_in = 1'h1;
end
end
else if(~que_scrb_picked_d1 & (~que_b0_wr_index_pend_d1 & que_b0_rd_picked_d1) &
que_this_channel_picked_d1 & (|que_ras_picked_d1) &
(que_b0_indx4_val_d1[7:0] == que_ras_picked_d1[7:0] |
(~que_rd_ras_picked_d2 | que_b0_index_en_d1 & que_rd_ras_picked_d2) &
que_b0_index4_en_d1 & (que_b0_indx3_val_d1 == que_ras_picked_d1)))
begin
que_b0_index4_en = 1'h1;
que_b0_index4_val_in = 1'h0;
if(que_b0_index_en)
begin
que_b0_index4_en = 1'h1;
que_b0_index3_en = 1'h1;
que_b0_index2_en = 1'h1;
que_b0_index1_en = 1'h1;
que_b0_index0_en = 1'h1;
que_b0_index4_val_in = que_b0_index_ent3[6];
que_b0_index3_val_in = que_b0_index_ent2[6];
que_b0_index2_val_in = que_b0_index_ent1[6];
que_b0_index1_val_in = que_b0_index_ent0[6];
que_b0_index0_val_in = 1'h1;
end
end
else if(~que_scrb_picked_d1 & (~que_b0_wr_index_pend_d1 & que_b0_rd_picked_d1) &
que_this_channel_picked_d1 & (|que_ras_picked_d1) &
(que_b0_indx3_val_d1[7:0] == que_ras_picked_d1[7:0] |
(~que_rd_ras_picked_d2 | que_b0_index_en_d1 & que_rd_ras_picked_d2) &
que_b0_index3_en_d1 & (que_b0_indx2_val_d1 == que_ras_picked_d1)))
begin
que_b0_index3_en = 1'h1;
que_b0_index3_val_in = 1'h0;
if(que_b0_index_en)
begin
que_b0_index3_en = 1'h1;
que_b0_index2_en = 1'h1;
que_b0_index1_en = 1'h1;
que_b0_index0_en = 1'h1;
que_b0_index3_val_in = que_b0_index_ent2[6];
que_b0_index2_val_in = que_b0_index_ent1[6];
que_b0_index1_val_in = que_b0_index_ent0[6];
que_b0_index0_val_in = 1'h1;
end
end
else if(~que_scrb_picked_d1 & (~que_b0_wr_index_pend_d1 & que_b0_rd_picked_d1) &
que_this_channel_picked_d1 & (|que_ras_picked_d1) &
(que_b0_indx2_val_d1[7:0] == que_ras_picked_d1[7:0] |
(~que_rd_ras_picked_d2 | que_b0_index_en_d1 & que_rd_ras_picked_d2) &
que_b0_index2_en_d1 & (que_b0_indx1_val_d1 == que_ras_picked_d1)))
begin
que_b0_index2_en = 1'h1;
que_b0_index2_val_in = 1'h0;
if(que_b0_index_en)
begin
que_b0_index2_en = 1'h1;
que_b0_index1_en = 1'h1;
que_b0_index0_en = 1'h1;
que_b0_index2_val_in = que_b0_index_ent1[6];
que_b0_index1_val_in = que_b0_index_ent0[6];
que_b0_index0_val_in = 1'h1;
end
end
else if(~que_scrb_picked_d1 & (~que_b0_wr_index_pend_d1 & que_b0_rd_picked_d1) &
que_this_channel_picked_d1 & (|que_ras_picked_d1) &
(que_b0_indx1_val_d1[7:0] == que_ras_picked_d1[7:0] |
(~que_rd_ras_picked_d2 | que_b0_index_en_d1 & que_rd_ras_picked_d2) &
que_b0_index1_en_d1 & (que_b0_indx0_val_d1 == que_ras_picked_d1)))
begin
que_b0_index1_en = 1'h1;
que_b0_index1_val_in = 1'h0;
if(que_b0_index_en)
begin
que_b0_index1_en = 1'h1;
que_b0_index0_en = 1'h1;
que_b0_index1_val_in = que_b0_index_ent0[6];
que_b0_index0_val_in = 1'h1;
end
end
else if(~que_scrb_picked_d1 & (~que_b0_wr_index_pend_d1 & que_b0_rd_picked_d1) &
que_this_channel_picked_d1 & (|que_ras_picked_d1) &
(que_b0_indx0_val_d1[7:0] == que_ras_picked_d1[7:0]))
begin
que_b0_index0_en = 1'h1;
que_b0_index0_val_in = 1'h0;
if(que_b0_index_en)
begin
que_b0_index0_en = 1'h1;
que_b0_index0_val_in = 1'h1;
end
end
else if(que_b0_index_en)
begin
if(~que_b0_index_ent7[6])
begin
que_b0_index7_en = 1'h1;
que_b0_index6_en = 1'h1;
que_b0_index5_en = 1'h1;
que_b0_index4_en = 1'h1;
que_b0_index3_en = 1'h1;
que_b0_index2_en = 1'h1;
que_b0_index1_en = 1'h1;
que_b0_index0_en = 1'h1;
que_b0_index7_val_in = que_b0_index_ent6[6];
que_b0_index6_val_in = que_b0_index_ent5[6];
que_b0_index5_val_in = que_b0_index_ent4[6];
que_b0_index4_val_in = que_b0_index_ent3[6];
que_b0_index3_val_in = que_b0_index_ent2[6];
que_b0_index2_val_in = que_b0_index_ent1[6];
que_b0_index1_val_in = que_b0_index_ent0[6];
que_b0_index0_val_in = 1'h1;
end
if(~que_b0_index_ent6[6])
begin
que_b0_index6_en = 1'h1;
que_b0_index5_en = 1'h1;
que_b0_index4_en = 1'h1;
que_b0_index3_en = 1'h1;
que_b0_index2_en = 1'h1;
que_b0_index1_en = 1'h1;
que_b0_index0_en = 1'h1;
que_b0_index6_val_in = que_b0_index_ent5[6];
que_b0_index5_val_in = que_b0_index_ent4[6];
que_b0_index4_val_in = que_b0_index_ent3[6];
que_b0_index3_val_in = que_b0_index_ent2[6];
que_b0_index2_val_in = que_b0_index_ent1[6];
que_b0_index1_val_in = que_b0_index_ent0[6];
que_b0_index0_val_in = 1'h1;
end
if(~que_b0_index_ent5[6])
begin
que_b0_index5_en = 1'h1;
que_b0_index4_en = 1'h1;
que_b0_index3_en = 1'h1;
que_b0_index2_en = 1'h1;
que_b0_index1_en = 1'h1;
que_b0_index0_en = 1'h1;
que_b0_index5_val_in = que_b0_index_ent4[6];
que_b0_index4_val_in = que_b0_index_ent3[6];
que_b0_index3_val_in = que_b0_index_ent2[6];
que_b0_index2_val_in = que_b0_index_ent1[6];
que_b0_index1_val_in = que_b0_index_ent0[6];
que_b0_index0_val_in = 1'h1;
end
if(~que_b0_index_ent4[6])
begin
que_b0_index4_en = 1'h1;
que_b0_index3_en = 1'h1;
que_b0_index2_en = 1'h1;
que_b0_index1_en = 1'h1;
que_b0_index0_en = 1'h1;
que_b0_index4_val_in = que_b0_index_ent3[6];
que_b0_index3_val_in = que_b0_index_ent2[6];
que_b0_index2_val_in = que_b0_index_ent1[6];
que_b0_index1_val_in = que_b0_index_ent0[6];
que_b0_index0_val_in = 1'h1;
end
if(~que_b0_index_ent3[6])
begin
que_b0_index3_en = 1'h1;
que_b0_index2_en = 1'h1;
que_b0_index1_en = 1'h1;
que_b0_index0_en = 1'h1;
que_b0_index3_val_in = que_b0_index_ent2[6];
que_b0_index2_val_in = que_b0_index_ent1[6];
que_b0_index1_val_in = que_b0_index_ent0[6];
que_b0_index0_val_in = 1'h1;
end
if(~que_b0_index_ent2[6])
begin
que_b0_index2_en = 1'h1;
que_b0_index1_en = 1'h1;
que_b0_index0_en = 1'h1;
que_b0_index2_val_in = que_b0_index_ent1[6];
que_b0_index1_val_in = que_b0_index_ent0[6];
que_b0_index0_val_in = 1'h1;
end
if(~que_b0_index_ent1[6])
begin
que_b0_index1_en = 1'h1;
que_b0_index0_en = 1'h1;
que_b0_index1_val_in = que_b0_index_ent0[6];
que_b0_index0_val_in = 1'h1;
end
if(~que_b0_index_ent0[6])
begin
que_b0_index0_en = 1'h1;
que_b0_index0_val_in = 1'h1;
end
end
end
dffrle_ns #(1) b0_collapse_fifo_ent0_val(
.din(que_b0_index0_val_in),
.q(que_b0_index_ent0[6]),
.rst_l(rst_l),
.en(que_b0_index0_en),
.clk(clk));
dffrle_ns #(1) b0_collapse_fifo_ent1_val(
.din(que_b0_index1_val_in),
.q(que_b0_index_ent1[6]),
.rst_l(rst_l),
.en(que_b0_index1_en),
.clk(clk));
dffrle_ns #(1) b0_collapse_fifo_ent2_val(
.din(que_b0_index2_val_in),
.q(que_b0_index_ent2[6]),
.rst_l(rst_l),
.en(que_b0_index2_en),
.clk(clk));
dffrle_ns #(1) b0_collapse_fifo_ent3_val(
.din(que_b0_index3_val_in),
.q(que_b0_index_ent3[6]),
.rst_l(rst_l),
.en(que_b0_index3_en),
.clk(clk));
dffrle_ns #(1) b0_collapse_fifo_ent4_val(
.din(que_b0_index4_val_in),
.q(que_b0_index_ent4[6]),
.rst_l(rst_l),
.en(que_b0_index4_en),
.clk(clk));
dffrle_ns #(1) b0_collapse_fifo_ent5_val(
.din(que_b0_index5_val_in),
.q(que_b0_index_ent5[6]),
.rst_l(rst_l),
.en(que_b0_index5_en),
.clk(clk));
dffrle_ns #(1) b0_collapse_fifo_ent6_val(
.din(que_b0_index6_val_in),
.q(que_b0_index_ent6[6]),
.rst_l(rst_l),
.en(que_b0_index6_en),
.clk(clk));
dffrle_ns #(1) b0_collapse_fifo_ent7_val(
.din(que_b0_index7_val_in),
.q(que_b0_index_ent7[6]),
.rst_l(rst_l),
.en(que_b0_index7_en),
.clk(clk));
dffrle_ns #(8) b0_collapse_fifo_ent0(
.din(que_b0_rd_index[7:0]),
.q({que_b0_index_ent0[8:7], que_b0_index_ent0[5:0]}),
.rst_l(rst_l),
.en(que_b0_index0_en),
.clk(clk));
dffrle_ns #(8) b0_collapse_fifo_ent1(
.din({que_b0_index_ent0[8:7], que_b0_index_ent0[5:0]}),
.q({que_b0_index_ent1[8:7], que_b0_index_ent1[5:0]}),
.rst_l(rst_l),
.en(que_b0_index1_en),
.clk(clk));
dffrle_ns #(8) b0_collapse_fifo_ent2(
.din({que_b0_index_ent1[8:7], que_b0_index_ent1[5:0]}),
.q({que_b0_index_ent2[8:7], que_b0_index_ent2[5:0]}),
.rst_l(rst_l),
.en(que_b0_index2_en),
.clk(clk));
dffrle_ns #(8) b0_collapse_fifo_ent3(
.din({que_b0_index_ent2[8:7], que_b0_index_ent2[5:0]}),
.q({que_b0_index_ent3[8:7], que_b0_index_ent3[5:0]}),
.rst_l(rst_l),
.en(que_b0_index3_en),
.clk(clk));
dffrle_ns #(8) b0_collapse_fifo_ent4(
.din({que_b0_index_ent3[8:7], que_b0_index_ent3[5:0]}),
.q({que_b0_index_ent4[8:7], que_b0_index_ent4[5:0]}),
.rst_l(rst_l),
.en(que_b0_index4_en),
.clk(clk));
dffrle_ns #(8) b0_collapse_fifo_ent5(
.din({que_b0_index_ent4[8:7], que_b0_index_ent4[5:0]}),
.q({que_b0_index_ent5[8:7], que_b0_index_ent5[5:0]}),
.rst_l(rst_l),
.en(que_b0_index5_en),
.clk(clk));
dffrle_ns #(8) b0_collapse_fifo_ent6(
.din({que_b0_index_ent5[8:7], que_b0_index_ent5[5:0]}),
.q({que_b0_index_ent6[8:7], que_b0_index_ent6[5:0]}),
.rst_l(rst_l),
.en(que_b0_index6_en),
.clk(clk));
dffrle_ns #(8) b0_collapse_fifo_ent7(
.din({que_b0_index_ent6[8:7], que_b0_index_ent6[5:0]}),
.q({que_b0_index_ent7[8:7], que_b0_index_ent7[5:0]}),
.rst_l(rst_l),
.en(que_b0_index7_en),
.clk(clk));
dff_ns #(2) ff_rd_index0_en(
.din({que_b0_index1_en, que_b0_index2_en}),
.q({que_b0_index1_en_d1, que_b0_index2_en_d1}),
.clk(clk));
dff_ns #(3) ff_rd_index3_en(
.din({que_b0_index3_en, que_b0_index4_en, que_b0_index5_en}),
.q({que_b0_index3_en_d1, que_b0_index4_en_d1, que_b0_index5_en_d1}),
.clk(clk));
dff_ns #(2) ff_rd_index6_en(
.din({que_b0_index6_en, que_b0_index7_en}),
.q({que_b0_index6_en_d1, que_b0_index7_en_d1}),
.clk(clk));
////////////////
// Collapsing FIFO for WRITES
////////////////
assign que_b0_wrq_full = writeqbank0vld7 & writeqbank0vld6 & writeqbank0vld5 & writeqbank0vld4 &
writeqbank0vld3 & writeqbank0vld2 & writeqbank0vld1 & writeqbank0vld0;
assign que_b0_wr_index[7:0] = {que_wr_addr0[35], que_wr_addr0[33], que_wr_addr_b0[2:0], que_wr_addr0[2:0]};
// set and reset the valids in this queue
assign que_b0_wr_index_en = que_wr_req & ~que_wr_addr0[32] & ~que_b0_wrq_full;
// Stage these so that reset happens 1 cycle later then the request got picked
dff_ns #(1) ff_wr_index_en (
.din (que_b0_wr_picked),
.q (que_b0_wr_picked_d1),
.clk (clk));
wire que_wr_ras_picked_d1 = ~que_scrb_picked_d1 &
(que_b0_wr_index_pend_d1 | ~que_b0_rd_picked_d1 & que_b0_wr_picked_d1) &
que_this_channel_picked_d1 & (|que_ras_picked_d1);
dff_ns #(2) wr_ras_picked_d2 (
.din ({que_b0_wr_index_en, que_wr_ras_picked_d1}),
.q ({que_b0_wr_index_en_d1, que_wr_ras_picked_d2}),
.clk (clk));
always @(/*AUTOSENSE*/que_b0_rd_picked_d1 or que_b0_wr_index1_en_d1
or que_b0_wr_index2_en_d1 or que_b0_wr_index3_en_d1
or que_b0_wr_index4_en_d1 or que_b0_wr_index5_en_d1
or que_b0_wr_index6_en_d1 or que_b0_wr_index7_en_d1
or que_b0_wr_index_en or que_b0_wr_index_ent0
or que_b0_wr_index_ent1 or que_b0_wr_index_ent2
or que_b0_wr_index_ent3 or que_b0_wr_index_ent4
or que_b0_wr_index_ent5 or que_b0_wr_index_ent6
or que_b0_wr_index_ent7 or que_b0_wr_index_pend_d1
or que_b0_wr_indx
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -