📄 mt48lc4m32b2.v
字号:
$setup (BA1 , posedge CLK &&& chip_act, tsetup_DQ0_CLK, Viol); $setup (DQM0, posedge CLK &&& chip_act, tsetup_DQ0_CLK, Viol); $setup (DQM1, posedge CLK &&& chip_act, tsetup_DQ0_CLK, Viol); $setup (DQM2, posedge CLK &&& chip_act, tsetup_DQ0_CLK, Viol); $setup (DQM3, posedge CLK &&& chip_act, tsetup_DQ0_CLK, Viol); $setup (CKE , posedge CLK &&& chip_act, tsetup_DQ0_CLK, Viol); $setup (WENeg, posedge CLK &&& chip_act, tsetup_DQ0_CLK, Viol); $setup (CSNeg, posedge CLK &&& chip_act, tsetup_DQ0_CLK, Viol); $setup (CASNeg, posedge CLK &&& chip_act, tsetup_DQ0_CLK, Viol); $setup (RASNeg, posedge CLK &&& chip_act, tsetup_DQ0_CLK, Viol); $setup (DQ0 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); $setup (DQ1 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); $setup (DQ2 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); $setup (DQ3 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); $setup (DQ4 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); $setup (DQ5 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); $setup (DQ6 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); $setup (DQ7 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); $setup (DQ8 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); $setup (DQ9 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); $setup (DQ10 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); $setup (DQ11 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); $setup (DQ12 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); $setup (DQ13 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); $setup (DQ14 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); $setup (DQ15 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); $setup (DQ16 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); $setup (DQ17 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); $setup (DQ18 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); $setup (DQ19 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); $setup (DQ20 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); $setup (DQ21 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); $setup (DQ22 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); $setup (DQ23 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); $setup (DQ24 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); $setup (DQ25 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); $setup (DQ26 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); $setup (DQ27 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); $setup (DQ28 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); $setup (DQ29 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); $setup (DQ30 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); $setup (DQ31 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); $setup (A0, posedge CLK &&& chip_act, tsetup_DQ0_CLK, Viol); $setup (A1, posedge CLK &&& chip_act, tsetup_DQ0_CLK, Viol); $setup (A2, posedge CLK &&& chip_act, tsetup_DQ0_CLK, Viol); $setup (A3, posedge CLK &&& chip_act, tsetup_DQ0_CLK, Viol); $setup (A4, posedge CLK &&& chip_act, tsetup_DQ0_CLK, Viol); $setup (A5, posedge CLK &&& chip_act, tsetup_DQ0_CLK, Viol); $setup (A6, posedge CLK &&& chip_act, tsetup_DQ0_CLK, Viol); $setup (A7, posedge CLK &&& chip_act, tsetup_DQ0_CLK, Viol); $setup (A8, posedge CLK &&& chip_act, tsetup_DQ0_CLK, Viol); $setup (A9, posedge CLK &&& chip_act, tsetup_DQ0_CLK, Viol); $setup (A10, posedge CLK &&& chip_act, tsetup_DQ0_CLK, Viol); $setup (A11, posedge CLK &&& chip_act, tsetup_DQ0_CLK, Viol); $hold (posedge CLK &&& chip_act, BA0, thold_DQ0_CLK, Viol); $hold (posedge CLK &&& chip_act, BA1, thold_DQ0_CLK, Viol); $hold (posedge CLK &&& chip_act, DQM0, thold_DQ0_CLK, Viol); $hold (posedge CLK &&& chip_act, DQM1, thold_DQ0_CLK, Viol); $hold (posedge CLK &&& chip_act, DQM2, thold_DQ0_CLK, Viol); $hold (posedge CLK &&& chip_act, DQM3, thold_DQ0_CLK, Viol); $hold (posedge CLK &&& chip_act, CKE , thold_DQ0_CLK, Viol); $hold (posedge CLK &&& chip_act, CASNeg, thold_DQ0_CLK, Viol); $hold (posedge CLK &&& chip_act, RASNeg, thold_DQ0_CLK, Viol); $hold (posedge CLK &&& chip_act, WENeg, thold_DQ0_CLK, Viol); $hold (posedge CLK &&& chip_act, CSNeg, thold_DQ0_CLK, Viol); $hold (posedge CLK &&& chip_act, A0, thold_DQ0_CLK, Viol); $hold (posedge CLK &&& chip_act, A1, thold_DQ0_CLK, Viol); $hold (posedge CLK &&& chip_act, A2, thold_DQ0_CLK, Viol); $hold (posedge CLK &&& chip_act, A3, thold_DQ0_CLK, Viol); $hold (posedge CLK &&& chip_act, A4, thold_DQ0_CLK, Viol); $hold (posedge CLK &&& chip_act, A5, thold_DQ0_CLK, Viol); $hold (posedge CLK &&& chip_act, A6, thold_DQ0_CLK, Viol); $hold (posedge CLK &&& chip_act, A7, thold_DQ0_CLK, Viol); $hold (posedge CLK &&& chip_act, A8, thold_DQ0_CLK, Viol); $hold (posedge CLK &&& chip_act, A9, thold_DQ0_CLK, Viol); $hold (posedge CLK &&& chip_act, A10, thold_DQ0_CLK, Viol); $hold (posedge CLK &&& chip_act, A11, thold_DQ0_CLK, Viol); $hold (posedge CLK &&& chip_act_deg, DQ0, thold_DQ0_CLK, Viol); $hold (posedge CLK &&& chip_act_deg, DQ1, thold_DQ0_CLK, Viol); $hold (posedge CLK &&& chip_act_deg, DQ2, thold_DQ0_CLK, Viol); $hold (posedge CLK &&& chip_act_deg, DQ3, thold_DQ0_CLK, Viol); $hold (posedge CLK &&& chip_act_deg, DQ4, thold_DQ0_CLK, Viol); $hold (posedge CLK &&& chip_act_deg, DQ5, thold_DQ0_CLK, Viol); $hold (posedge CLK &&& chip_act_deg, DQ6, thold_DQ0_CLK, Viol); $hold (posedge CLK &&& chip_act_deg, DQ7, thold_DQ0_CLK, Viol); $hold (posedge CLK &&& chip_act_deg, DQ8, thold_DQ0_CLK, Viol); $hold (posedge CLK &&& chip_act_deg, DQ9, thold_DQ0_CLK, Viol); $hold (posedge CLK &&& chip_act_deg, DQ10, thold_DQ0_CLK, Viol); $hold (posedge CLK &&& chip_act_deg, DQ11, thold_DQ0_CLK, Viol); $hold (posedge CLK &&& chip_act_deg, DQ12, thold_DQ0_CLK, Viol); $hold (posedge CLK &&& chip_act_deg, DQ13, thold_DQ0_CLK, Viol); $hold (posedge CLK &&& chip_act_deg, DQ14, thold_DQ0_CLK, Viol); $hold (posedge CLK &&& chip_act_deg, DQ15, thold_DQ0_CLK, Viol); $hold (posedge CLK &&& chip_act_deg, DQ16, thold_DQ0_CLK, Viol); $hold (posedge CLK &&& chip_act_deg, DQ17, thold_DQ0_CLK, Viol); $hold (posedge CLK &&& chip_act_deg, DQ18, thold_DQ0_CLK, Viol); $hold (posedge CLK &&& chip_act_deg, DQ19, thold_DQ0_CLK, Viol); $hold (posedge CLK &&& chip_act_deg, DQ20, thold_DQ0_CLK, Viol); $hold (posedge CLK &&& chip_act_deg, DQ21, thold_DQ0_CLK, Viol); $hold (posedge CLK &&& chip_act_deg, DQ22, thold_DQ0_CLK, Viol); $hold (posedge CLK &&& chip_act_deg, DQ23, thold_DQ0_CLK, Viol); $hold (posedge CLK &&& chip_act_deg, DQ24, thold_DQ0_CLK, Viol); $hold (posedge CLK &&& chip_act_deg, DQ25, thold_DQ0_CLK, Viol); $hold (posedge CLK &&& chip_act_deg, DQ26, thold_DQ0_CLK, Viol); $hold (posedge CLK &&& chip_act_deg, DQ27, thold_DQ0_CLK, Viol); $hold (posedge CLK &&& chip_act_deg, DQ28, thold_DQ0_CLK, Viol); $hold (posedge CLK &&& chip_act_deg, DQ29, thold_DQ0_CLK, Viol); $hold (posedge CLK &&& chip_act_deg, DQ30, thold_DQ0_CLK, Viol); $hold (posedge CLK &&& chip_act_deg, DQ31, thold_DQ0_CLK, Viol); $width (posedge CLK &&& chip_act, tpw_CLK_posedge); $width (negedge CLK &&& chip_act, tpw_CLK_negedge); $period (posedge CLK &&& cas_latency1, tperiod_CLK_cl0_eq_1_posedge); $period (posedge CLK &&& cas_latency2, tperiod_CLK_cl1_eq_1_posedge); $period (posedge CLK &&& cas_latency3, tperiod_CLK_cl2_eq_1_posedge); endspecify task generate_out ; output [31:0] DataDrive; input Bank; integer Bank; integer location; begin location = Bank * depth * 4 + Loc; DataDrive[7:0] = 8'bx; if (Mem[location] > -1) DataDrive[7:0] = Mem[location]; DataDrive[15:8] = 8'bx; if (Mem[location+1] > -1) DataDrive[15:8] = Mem[location+1]; DataDrive[23:16] = 8'bx; if (Mem[location+2] > -1) DataDrive[23:16] = Mem[location+2]; DataDrive[31:24] = 8'bx; if (Mem[location+3] > -1) DataDrive[31:24] = Mem[location+3]; end endtask task MemWrite; input Bank; integer Bank; integer location; begin location = Bank * depth * 4 + Loc; if (~DQM0_ipd) begin Mem[location] = -1; if (~Viol) Mem[location] = DQIn[7:0]; end if (~DQM1_ipd) begin Mem[location+1] = -1; if (~Viol) Mem[location+1] = DQIn[15:8]; end if (~DQM2_ipd) begin Mem[location+2] = -1; if (~Viol) Mem[location+2] = DQIn[23:16]; end if (~DQM3_ipd) begin Mem[location+3] = -1; if (~Viol) Mem[location+3] = DQIn[31:24]; end end endtask task BurstIncProc; input Bank; integer Bank; begin BurstInc[Bank] = 0; if (Burst_Bits == 1) BurstInc[Bank] = A[0:0]; if (Burst_Bits == 2) BurstInc[Bank] = A[1:0]; if (Burst_Bits == 3) BurstInc[Bank] = A[2:0]; if (Burst_Bits == 7) BurstInc[Bank] = A[6:0]; end endtask task NextStateAuto; input Bank; input state; integer Bank; reg [4:0] state; begin if (~A[10]) statebank[Bank] = state; else if (A[10]) if (state == write) statebank[Bank] = write_auto_pre; else statebank[Bank] = read_auto_pre; end endtask ////////////////////////////////////////////////////////////////////////// // Main Behavior Block // ////////////////////////////////////////////////////////////////////////// // chech when data is generated from model to avoid setup/hold check in // those occasion reg deq; always @(DQIn, DQOut) begin if (DQIn==DQOut) deq=1'b1; else deq=1'b0; end assign deg=deq; // initialize burst sequences initial begin intab[0] = 0; intab[1] = 1; intab[2] = 2; intab[3] = 3; intab[4] = 4; intab[5] = 5; intab[6] = 6; intab[7] = 7; intab[8] = 1; intab[9] = 0; intab[10] = 3; intab[11] = 2; intab[12] = 5; intab[13] = 4; intab[14] = 7; intab[15] = 6; intab[16] = 2; intab[17] = 3; intab[18] = 0; intab[19] = 1; intab[20] = 6; intab[21] = 7; intab[22] = 4; intab[23] = 5; intab[24] = 3; intab[25] = 2; intab[26] = 1; intab[27] = 0; intab[28] = 7; intab[29] = 6; intab[30] = 5; intab[31] = 4; intab[32] = 4; intab[33] = 5; intab[34] = 6; intab[35] = 7; intab[36] = 0; intab[37] = 1; intab[38] = 2; intab[39] = 3; intab[40] = 5; intab[41] = 4; intab[42] = 7; intab[43] = 6; intab[44] = 1; intab[45] = 0; intab[46] = 3; intab[47] = 2; intab[48] = 6; intab[49] = 7; intab[50] = 4; intab[51] = 5; intab[52] = 2; intab[53] = 3; intab[54] = 0; intab[55] = 1; intab[56] = 7; intab[57] = 6; intab[58] = 5; intab[59] = 4; intab[60] = 3; intab[61] = 2; intab[62] = 1; intab[63] = 0; end // initialize memory and load preload files if any initial begin: InitMemory integer i; for (i=0; i<=((hi_bank+1)*depth*4 - 1); i=i+1) begin Mem[i] = -1; end // Memory preload file // mt48lc4m32b2.mem file // @bbbbbb - <bbbbbb> stands for address within memory, // dd - <dd> is word to be written at Mem(bbbbbb++) // (bbbbbb is incremented at every load) if (UserPreload && !(mem_file_name == "none")) $readmemh(mem_file_name,Mem); end //Power Up time 100 us; initial begin PoweredUp = 1'b0; statebank[0] = pwron; statebank[1] = pwron; statebank[2] = pwron; statebank[3] = pwron; #100000 PoweredUp = 1'b1; end always @(posedge wrt_in) begin:TWRrise #tdevice_TWR wrt_out = wrt_in; end always @(negedge wrt_in) begin:TWRfall #1 wrt_out = wrt_in; end always @(posedge ras_in[0]) begin:TRASrise0 ras_out[0] <= #tdevice_TRASmin ras_in[0]; end always @(negedge ras_in[0]) begin:TRASfall0 ras_out[0] <= #tdevice_TRASmax ras_in[0]; end always @(posedge ras_in[1]) begin:TRASrise1 ras_out[1] <= #tdevice_TRASmin ras_in[1];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -