📄 dp8ka.v
字号:
`timescale 1ns / 1ps
module DP8KA (CEA,CLKA,WEA,CSA0,CSA1,CSA2,RSTA,
CEB,CLKB,WEB,CSB0,CSB1,CSB2,RSTB,
DIA0,DIA1,DIA2,DIA3,DIA4,DIA5,DIA6,DIA7,DIA8,
DIA9,DIA10,DIA11,DIA12,DIA13,DIA14,DIA15,DIA16,DIA17,
ADA0,ADA1,ADA2,ADA3,ADA4,ADA5,ADA6,ADA7,ADA8,ADA9,ADA10,ADA11,ADA12,
DIB0,DIB1,DIB2,DIB3,DIB4,DIB5,DIB6,DIB7,DIB8,
DIB9,DIB10,DIB11,DIB12,DIB13,DIB14,DIB15,DIB16,DIB17,
ADB0,ADB1,ADB2,ADB3,ADB4,ADB5,ADB6,ADB7,ADB8,ADB9,ADB10,ADB11,ADB12,
DOA0,DOA1,DOA2,DOA3,DOA4,DOA5,DOA6,DOA7,DOA8,
DOA9,DOA10,DOA11,DOA12,DOA13,DOA14,DOA15,DOA16,DOA17,
DOB0,DOB1,DOB2,DOB3,DOB4,DOB5,DOB6,DOB7,DOB8,
DOB9,DOB10,DOB11,DOB12,DOB13,DOB14,DOB15,DOB16,DOB17);
parameter DATA_WIDTH_A = 18; //1, 2, 4, 9, 18
parameter DATA_WIDTH_B = 18; //1, 2, 4, 9, 18
parameter REGMODE_A = "NOREG"; // "NOREG", "OUTREG"
parameter REGMODE_B = "NOREG"; // "NOREG", "OUTREG"
parameter RESETMODE = "ASYNC"; // "ASYNC", "SYNC"
parameter CSDECODE_A = "000"; // "000", "001", "010"......."111"
parameter CSDECODE_B = "000"; // "000", "001", "010"......."111"
parameter WRITEMODE_A = "NORMAL"; // "NORMAL", "READBEFOREWRITE", "WRITETHROUGH"
parameter WRITEMODE_B = "NORMAL"; // "NORMAL", "READBEFOREWRITE", "WRITETHROUGH"
parameter ARRAY_SIZE = 9216; // Not used
parameter GSR = "ENABLED"; // "ENABLED", "DISABLED"
parameter INITVAL_00 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000;
parameter INITVAL_01 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000;
parameter INITVAL_02 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000;
parameter INITVAL_03 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000;
parameter INITVAL_04 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000;
parameter INITVAL_05 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000;
parameter INITVAL_06 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000;
parameter INITVAL_07 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000;
parameter INITVAL_08 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000;
parameter INITVAL_09 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000;
parameter INITVAL_0A = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000;
parameter INITVAL_0B = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000;
parameter INITVAL_0C = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000;
parameter INITVAL_0D = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000;
parameter INITVAL_0E = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000;
parameter INITVAL_0F = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000;
parameter INITVAL_10 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000;
parameter INITVAL_11 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000;
parameter INITVAL_12 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000;
parameter INITVAL_13 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000;
parameter INITVAL_14 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000;
parameter INITVAL_15 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000;
parameter INITVAL_16 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000;
parameter INITVAL_17 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000;
parameter INITVAL_18 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000;
parameter INITVAL_19 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000;
parameter INITVAL_1A = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000;
parameter INITVAL_1B = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000;
parameter INITVAL_1C = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000;
parameter INITVAL_1D = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000;
parameter INITVAL_1E = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000;
parameter INITVAL_1F = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000;
input DIA0, DIA1, DIA2, DIA3, DIA4, DIA5, DIA6, DIA7, DIA8,
DIA9, DIA10, DIA11, DIA12, DIA13, DIA14, DIA15, DIA16, DIA17,
ADA0, ADA1, ADA2, ADA3, ADA4, ADA5, ADA6, ADA7, ADA8,
ADA9, ADA10, ADA11, ADA12,
CEA, CLKA, WEA, CSA0, CSA1, CSA2, RSTA,
DIB0, DIB1, DIB2, DIB3, DIB4, DIB5, DIB6, DIB7, DIB8,
DIB9, DIB10, DIB11, DIB12, DIB13, DIB14, DIB15, DIB16, DIB17,
ADB0, ADB1, ADB2, ADB3, ADB4, ADB5, ADB6, ADB7, ADB8,
ADB9, ADB10, ADB11, ADB12,
CEB, CLKB, WEB, CSB0, CSB1, CSB2, RSTB;
output DOA0, DOA1, DOA2, DOA3, DOA4, DOA5, DOA6, DOA7, DOA8,
DOA9, DOA10, DOA11, DOA12, DOA13, DOA14, DOA15, DOA16, DOA17,
DOB0, DOB1, DOB2, DOB3, DOB4, DOB5, DOB6, DOB7, DOB8,
DOB9, DOB10, DOB11, DOB12, DOB13, DOB14, DOB15, DOB16, DOB17;
parameter ADDR_WIDTH_A = (DATA_WIDTH_A == 1) ? 13 : (DATA_WIDTH_A == 2) ? 12 :
(DATA_WIDTH_A == 4) ? 11 : (DATA_WIDTH_A == 9) ? 10 :
(DATA_WIDTH_A == 18) ? 9 : 8 ;
parameter ADDR_WIDTH_B = (DATA_WIDTH_B == 1) ? 13 : (DATA_WIDTH_B == 2) ? 12 :
(DATA_WIDTH_B == 4) ? 11 : (DATA_WIDTH_B == 9) ? 10 :
(DATA_WIDTH_B == 18) ? 9 : 8;
parameter data_width_a = (DATA_WIDTH_A == 1) ? 1 : (DATA_WIDTH_A == 2) ? 2 :
(DATA_WIDTH_A == 4) ? 4 : (DATA_WIDTH_A == 9) ? 9 : 18 ;
parameter data_width_b = (DATA_WIDTH_B == 1) ? 1 : (DATA_WIDTH_B == 2) ? 2 :
(DATA_WIDTH_B == 4) ? 4 : (DATA_WIDTH_B == 9) ? 9 : 18;
parameter div_a = (DATA_WIDTH_A == 1) ? 8 : (DATA_WIDTH_A == 2) ? 4 :
(DATA_WIDTH_A == 4) ? 2 : (DATA_WIDTH_A == 9) ? 9216 : 9216 ;
parameter div_b = (DATA_WIDTH_B == 1) ? 8 : (DATA_WIDTH_B == 2) ? 4 :
(DATA_WIDTH_B == 4) ? 2 : (DATA_WIDTH_B == 9) ? 9216 : 9216;
tri1 GSR_sig = GSR_INST.GSRNET;
tri1 PUR_sig = PUR_INST.PURNET;
reg [10239:0] init_value;
reg v_MEM[ARRAY_SIZE - 1:0];
integer i, j;
wire [17:0] DIA;
wire [17:0] DIB;
wire [17:0] DIA_node;
wire [17:0] DIB_node;
wire [17:0] DOA;
wire [17:0] DOB;
wire [12:0] ADA;
wire [12:0] ADB;
wire [2:0] CSA;
wire [2:0] CSB;
wire CEA_node;
wire CEB_node;
wire CLKA_node;
wire CLKB_node;
wire WREA_node;
wire WREB_node;
wire RSTA_node;
wire RSTB_node;
reg SRN;
reg [17:0] DOA_node;
reg [17:0] DOA_node_tr;
reg [17:0] DOA_node_wt;
reg [17:0] DOA_node_rbr;
reg [17:0] DOB_node;
reg [17:0] DOB_node_tr;
reg [17:0] DOB_node_wt;
reg [17:0] DOB_node_rbr;
reg [35:0] DO_node_tr;
reg [35:0] DO_node_wt;
reg [35:0] DO_node_rbr;
reg CSA_EN;
reg CSB_EN;
wire [ADDR_WIDTH_A-1:0] ADA_node;
wire [ADDR_WIDTH_B-1:0] ADB_node;
assign ADA_node = ADA[12:(13 - ADDR_WIDTH_A)];
assign ADB_node = ADB[12:(13 - ADDR_WIDTH_B)];
wire [35:0] DIAB_node;
reg [35:0] DIAB_reg;
reg [35:0] DIAB_reg_sync;
reg [35:0] DIAB_reg_async;
reg [data_width_a-1:0] DIA_reg;
reg [data_width_a-1:0] DIA_reg_async;
reg [data_width_a-1:0] DIA_reg_sync;
reg [data_width_b-1:0] DIB_reg;
reg [data_width_b-1:0] DIB_reg_async;
reg [data_width_b-1:0] DIB_reg_sync;
reg [ADDR_WIDTH_A-1:0] ADA_reg;
reg [ADDR_WIDTH_A-1:0] ADA_reg_sync;
reg [ADDR_WIDTH_A-1:0] ADA_reg_async;
reg [ADDR_WIDTH_B-1:0] ADB_reg;
reg [ADDR_WIDTH_B-1:0] ADB_reg_sync;
reg [ADDR_WIDTH_B-1:0] ADB_reg_async;
reg [ADDR_WIDTH_A-1:0] ADA_out;
reg [ADDR_WIDTH_B-1:0] ADB_out;
reg [17:0] DOAB_reg;
reg [17:0] DOAB_reg_sync;
reg [17:0] DOAB_reg_async;
reg [17:0] DOA_reg;
reg [17:0] DOA_reg_sync;
reg [17:0] DOA_reg_async;
reg [17:0] DOB_reg;
reg [17:0] DOB_reg_sync;
reg [17:0] DOB_reg_async;
reg [17:0] DOA_out;
reg [17:0] DOB_out;
reg WRENA_reg;
reg WRENA_reg_async;
reg WRENA_reg_sync;
reg WRENB_reg;
reg WRENB_reg_sync;
reg WRENB_reg_async;
reg [ADDR_WIDTH_B-1:0] ADB_read_reg;
reg RENA_reg;
reg RENA_reg_async;
reg RENA_reg_sync;
reg RENB_reg;
reg RENB_reg_sync;
reg RENB_reg_async;
reg CLKA_valid;
reg CLKA_valid_new1;
reg last_CLKA_valid1;
reg last_CLKA_valid;
reg CLKB_valid;
reg CLKB_valid_new1;
reg last_CLKB_valid1;
reg last_CLKB_valid;
reg memchg0;
reg memchg1;
reg memchga;
reg memchgb;
integer v_WADDR_A,v_RADDR_A,v_WADDR_B,v_RADDR_B, v_RADDR_RBR_A, v_RADDR_RBR_B;
wire DIA_0, DIB_0;
buf (DIA[0], DIA_0);
buf (DIA[1], DIA1);
buf (DIA[2], DIA2);
buf (DIA[3], DIA3);
buf (DIA[4], DIA4);
buf (DIA[5], DIA5);
buf (DIA[6], DIA6);
buf (DIA[7], DIA7);
buf (DIA[8], DIA8);
buf (DIA[9], DIA9);
buf (DIA[10], DIA10);
buf (DIA[11], DIA11);
buf (DIA[12], DIA12);
buf (DIA[13], DIA13);
buf (DIA[14], DIA14);
buf (DIA[15], DIA15);
buf (DIA[16], DIA16);
buf (DIA[17], DIA17);
buf (DIB[0], DIB_0);
buf (DIB[1], DIB1);
buf (DIB[2], DIB2);
buf (DIB[3], DIB3);
buf (DIB[4], DIB4);
buf (DIB[5], DIB5);
buf (DIB[6], DIB6);
buf (DIB[7], DIB7);
buf (DIB[8], DIB8);
buf (DIB[9], DIB9);
buf (DIB[10], DIB10);
buf (DIB[11], DIB11);
buf (DIB[12], DIB12);
buf (DIB[13], DIB13);
buf (DIB[14], DIB14);
buf (DIB[15], DIB15);
buf (DIB[16], DIB16);
buf (DIB[17], DIB17);
buf (ADA[0], ADA0);
buf (ADA[1], ADA1);
buf (ADA[2], ADA2);
buf (ADA[3], ADA3);
buf (ADA[4], ADA4);
buf (ADA[5], ADA5);
buf (ADA[6], ADA6);
buf (ADA[7], ADA7);
buf (ADA[8], ADA8);
buf (ADA[9], ADA9);
buf (ADA[10], ADA10);
buf (ADA[11], ADA11);
buf (ADA[12], ADA12);
buf (ADB[0], ADB0);
buf (ADB[1], ADB1);
buf (ADB[2], ADB2);
buf (ADB[3], ADB3);
buf (ADB[4], ADB4);
buf (ADB[5], ADB5);
buf (ADB[6], ADB6);
buf (ADB[7], ADB7);
buf (ADB[8], ADB8);
buf (ADB[9], ADB9);
buf (ADB[10], ADB10);
buf (ADB[11], ADB11);
buf (ADB[12], ADB12);
buf (CSA[0], CSA0);
buf (CSA[1], CSA1);
buf (CSA[2], CSA2);
buf (CSB[0], CSB0);
buf (CSB[1], CSB1);
buf (CSB[2], CSB2);
buf (CEA_node, CEA);
buf (CEB_node, CEB);
buf (CLKA_node, CLKA);
buf (CLKB_node, CLKB);
buf (WREA_node, WEA);
buf (WREB_node, WEB);
buf (RSTA_node, RSTA);
buf (RSTB_node, RSTB);
assign DOA0 = DOA_out[0];
assign DOA1 = DOA_out[1];
assign DOA2 = DOA_out[2];
assign DOA3 = DOA_out[3];
assign DOA4 = DOA_out[4];
assign DOA5 = DOA_out[5];
assign DOA6 = DOA_out[6];
assign DOA7 = DOA_out[7];
assign DOA8 = DOA_out[8];
assign DOA9 = DOA_out[9];
assign DOA10 = DOA_out[10];
assign DOA11 = DOA_out[11];
assign DOA12 = DOA_out[12];
assign DOA13 = DOA_out[13];
assign DOA14 = DOA_out[14];
assign DOA15 = DOA_out[15];
assign DOA16 = DOA_out[16];
assign DOA17 = DOA_out[17];
assign DOB0 = DOB_out[0];
assign DOB1 = DOB_out[1];
assign DOB2 = DOB_out[2];
assign DOB3 = DOB_out[3];
assign DOB4 = DOB_out[4];
assign DOB5 = DOB_out[5];
assign DOB6 = DOB_out[6];
assign DOB7 = DOB_out[7];
assign DOB8 = DOB_out[8];
assign DOB9 = DOB_out[9];
assign DOB10 = DOB_out[10];
assign DOB11 = DOB_out[11];
assign DOB12 = DOB_out[12];
assign DOB13 = DOB_out[13];
assign DOB14 = DOB_out[14];
assign DOB15 = DOB_out[15];
assign DOB16 = DOB_out[16];
assign DOB17 = DOB_out[17];
initial
begin
init_value = {INITVAL_1F, INITVAL_1E, INITVAL_1D, INITVAL_1C, INITVAL_1B, INITVAL_1A,
INITVAL_19, INITVAL_18, INITVAL_17,
INITVAL_16, INITVAL_15, INITVAL_14, INITVAL_13, INITVAL_12, INITVAL_11, INITVAL_10,
INITVAL_0F, INITVAL_0E, INITVAL_0D, INITVAL_0C, INITVAL_0B, INITVAL_0A, INITVAL_09,
INITVAL_08, INITVAL_07, INITVAL_06, INITVAL_05, INITVAL_04, INITVAL_03, INITVAL_02,
INITVAL_01, INITVAL_00};
for (j = 0; j < 512; j = j+1)
begin
if ((DATA_WIDTH_A < 9) || (DATA_WIDTH_B < 9))
begin
for (i = 0; i < 8; i = i+1)
begin
v_MEM[(18 * j) + i] = init_value[(20 * j) + i];
v_MEM[(18 * j) + 9 + i] = init_value[(20 * j) + 8 + i];
end
v_MEM[(18 * j) + 8] = 0;
v_MEM[(18 * j) + 17] = 0;
end
else
begin
for (i = 0; i < 18; i = i+1)
begin
v_MEM[(18 * j) + i] = init_value[(20 * j) + i];
end
end
end
end
initial
begin
DOA_node = 0;
DOA_node_tr = 0;
DOA_node_wt = 0;
DOA_node_rbr = 0;
DOB_node = 0;
DOB_node_tr = 0;
DOB_node_wt = 0;
DOB_node_rbr = 0;
DO_node_tr = 0;
DO_node_wt = 0;
DO_node_rbr = 0;
DIA_reg = 0;
DIAB_reg = 0;
ADA_reg = 0;
WRENA_reg = 0;
RENA_reg = 0;
DIB_reg = 0;
ADB_reg = 0;
WRENB_reg = 0;
RENB_reg = 0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -