⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ddr2_model.v

📁 DDR2 SDRAM仿真模型
💻 V
📖 第 1 页 / 共 5 页
字号:
/******************************************************************************************    File Name:  ddr2_model.v*      Version:  5.30*        Model:  BUS Functional** Dependencies:  ddr2_model_parameters.vh**  Description:  Micron SDRAM DDR2 (Double Data Rate 2)**   Limitation:  - doesn't check for average refresh timings*                - positive ck and ck_n edges are used to form internal clock*                - positive dqs and dqs_n edges are used to latch data*                - test mode is not modeled**         Note:  - Set simulator resolution to "ps" accuracy*                - Set Debug = 0 to disable $display messages**   Disclaimer   This software code and all associated documentation, comments or other *  of Warranty:  information (collectively "Software") is provided "AS IS" without *                warranty of any kind. MICRON TECHNOLOGY, INC. ("MTI") EXPRESSLY *                DISCLAIMS ALL WARRANTIES EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED *                TO, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND ANY IMPLIED WARRANTIES *                OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE. MTI DOES NOT *                WARRANT THAT THE SOFTWARE WILL MEET YOUR REQUIREMENTS, OR THAT THE *                OPERATION OF THE SOFTWARE WILL BE UNINTERRUPTED OR ERROR-FREE. *                FURTHERMORE, MTI DOES NOT MAKE ANY REPRESENTATIONS REGARDING THE USE OR *                THE RESULTS OF THE USE OF THE SOFTWARE IN TERMS OF ITS CORRECTNESS, *                ACCURACY, RELIABILITY, OR OTHERWISE. THE ENTIRE RISK ARISING OUT OF USE *                OR PERFORMANCE OF THE SOFTWARE REMAINS WITH YOU. IN NO EVENT SHALL MTI, *                ITS AFFILIATED COMPANIES OR THEIR SUPPLIERS BE LIABLE FOR ANY DIRECT, *                INDIRECT, CONSEQUENTIAL, INCIDENTAL, OR SPECIAL DAMAGES (INCLUDING, *                WITHOUT LIMITATION, DAMAGES FOR LOSS OF PROFITS, BUSINESS INTERRUPTION, *                OR LOSS OF INFORMATION) ARISING OUT OF YOUR USE OF OR INABILITY TO USE *                THE SOFTWARE, EVEN IF MTI HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH *                DAMAGES. Because some jurisdictions prohibit the exclusion or *                limitation of liability for consequential or incidental damages, the *                above limitation may not apply to you.**                Copyright 2003 Micron Technology, Inc. All rights reserved.** Rev   Author   Date        Changes* ---------------------------------------------------------------------------------------* 1.00  JMK      07/29/03    Initial Release* 1.10  JMK      08/09/03    Timing Parameter updates to tIS, tIH, tDS, tDH* 2.20  JMK      08/07/03    General cleanup* 2.30  JMK      11/26/03    Added CL_MIN, CL_MAX, wl_min and wl_max parameters.*                            Added AL_MIN and AL_MAX parameters.*                            Removed support for OCD.* 2.40  JMK      01/15/04    Removed verilog 2001 constructs.* 2.50  JMK      01/29/04    Removed tRP checks during Precharge command.* 2.60  JMK      04/20/04    Fixed tWTR check.* 2.70  JMK      04/30/04    Added tRFC maximum check.*                            Combined Self Refresh and Power Down always blocks.*                            Added Reset Function (CKE LOW Anytime).* 2.80  JMK      08/19/04    Precharge is treated as NOP when bank is not active.  *                            Added checks for tRAS, tWR, tRTP to any bank during Pre-All.*                            tRFC maximum violation will only display one time.* 2.90  JMK      11/05/04    Fixed DQS checking during write.*                            Fixed false tRFC max assertion during power up and self ref.*                            Added warning for 200us CKE low time during initialization.*                            Added -3, -3E, and -37V speed grades to ddr2_parameters.v* 3.00  JMK      04/22/05    Removed ODT off requirement during power down.*                            Added tAOND, tAOFD, tANPD, tAXPD, tAONPD, and tAOFPD parameters.*                            Added ODT status messages.*                            Updated the initialization sequence.*                            Disable ODT and CLK pins during self refresh.*                            Disable cmd and addr pins during power down and self refresh.* 3.10  JMK      06/07/05    Disable trpa checking if the part does not have 8 banks.*                            Changed tAXPD message from error to a warning.*                            Added tDSS checking.*                            Removed tDQSL checking during tWPRE and tWPST.*                            Fixed a burst order error during writes.*                            Renamed parameters file with .vh extension.* 3.20  JMK      07/18/05    Removed 14 tCK requirement from LMR to READ.* 3.30  JMK      08/03/05    Added check for interrupting a burst with auto precharge.* 4.00  JMK      11/21/05    Parameter names all UPPERCASE, signal names all lowercase.*                            Clock jitter can be tolerated within specification range.*                            Clock frequency is sampled from the CK pin.*                            Scaleable up to 64 DQ and 16 DQS bits.*                            Read data can be randomly skewed using RANDOM_OUT_DELAY.*                            Parameterized read and write DQS, and read DQ.*                            Initialization can be bypassed using initialize task.* 4.10  JMK      11/30/05    Fixed compile errors when `MAX_MEM was defined.* 4.20  JMK      12/09/05    Fixed memory addressing error when `MAX_MEM was defined.* 4.30  JMK      02/15/06    Added dummy write to initialization sequence.*                            Removed tWPST maximum checking.*                            Rising dqs_n edge latches data when enabled in EMR.*                            Fixed a sign error in the tJIT(cc) calculation.* 4.40  JMK      02/16/06    Fixed dummy write when`MAX_MEM was defined.* 4.50  JMK      02/27/06    Fixed extra tDQSS assertions.*                            Fixed tRCD and tWTR checking.*                            Errors entering Power Down or Self Refresh will cause reset.*                            Ignore dqs_n when disabled in EMR.* 5.00  JMK      04/24/06    Test stimulus now included from external file (subtest.vh)*                            Fixed tRFC max assertion during self refresh.*                            Fixed tANPD checking during Power Down.*                            Removed dummy write from initialization sequence.* 5.01  JMK      04/28/06    Fixed Auto Precharge to Load Mode, Refresh and Self Refresh.*                            Removed Auto Precharge error message during Power Down Enter.* 5.10  JMK      07/26/06    Created internal clock using ck and ck_n.*                            RDQS can only be enabled in EMR for x8 configurations.*                            CAS latency is checked vs frequency when DLL locks.*                            tMOD changed from tCK units to ns units.*                            Added 50 Ohm setting for Rtt in EMR.*                            Improved checking of DQS during writes.* 5.20  JMK      10/02/06    Fixed DQS checking for interrupting write to write and x16.* 5.30  JMK      05/25/07    Fixed checking for 0-Z transition on write postamble.****************************************************************************************/// DO NOT CHANGE THE TIMESCALE// MAKE SURE YOUR SIMULATOR USES "PS" RESOLUTION`timescale 1ps / 1psmodule ddr2_model (    ck,    ck_n,    cke,    cs_n,    ras_n,    cas_n,    we_n,    dm_rdqs,    ba,    addr,    dq,    dqs,    dqs_n,    rdqs_n,    odt);    `include "ddr2_model_parameters.vh"    // text macros    `define DQ_PER_DQS DQ_BITS/DQS_BITS    `define BANKS      (1<<BA_BITS)    `define MAX_BITS   (BA_BITS+ROW_BITS+COL_BITS-BL_BITS)    `define MAX_SIZE   (1<<(BA_BITS+ROW_BITS+COL_BITS-BL_BITS))    `define MEM_SIZE   (1<<MEM_BITS)    `define MAX_PIPE   2*(AL_MAX + CL_MAX)    // Declare Ports    input   ck;    input   ck_n;    input   cke;    input   cs_n;    input   ras_n;    input   cas_n;    input   we_n;    inout   [DM_BITS-1:0]   dm_rdqs;    input   [BA_BITS-1:0]   ba;    input   [ADDR_BITS-1:0] addr;    inout   [DQ_BITS-1:0]   dq;    inout   [DQS_BITS-1:0]  dqs;    inout   [DQS_BITS-1:0]  dqs_n;    output  [DQS_BITS-1:0]  rdqs_n;    input   odt;                                // clock jitter    real    tck_avg;    time    tck_sample [TDLLK-1:0];    time    tch_sample [TDLLK-1:0];    time    tcl_sample [TDLLK-1:0];    time    tck_i;    time    tch_i;    time    tcl_i;    real    tch_avg;    real    tcl_avg;    time    tm_ck_pos;    time    tm_ck_neg;    real    tjit_per_rtime;    integer tjit_cc_time;    real    terr_nper_rtime;    // clock skew    real    out_delay;    integer dqsck [DQS_BITS-1:0];    integer dqsck_min;    integer dqsck_max;    integer dqsq_min;    integer dqsq_max;    integer seed;    // Mode Registers    reg     burst_order;    reg     [BL_BITS:0] burst_length;    integer cas_latency;    integer additive_latency;    reg     dll_reset;    reg     dll_locked;    reg     dll_en;    integer write_recovery;    reg     low_power;    reg     [1:0] odt_rtt;    reg     odt_en;    reg     [2:0] ocd;    reg     dqs_n_en;    reg     rdqs_en;    reg     out_en;    integer read_latency;    integer write_latency;    // cmd encoding    parameter        LOAD_MODE = 4'b0000,        REFRESH   = 4'b0001,        PRECHARGE = 4'b0010,        ACTIVATE  = 4'b0011,        WRITE     = 4'b0100,        READ      = 4'b0101,        NOP       = 4'b0111,        PWR_DOWN  = 4'b1000,        SELF_REF  = 4'b1001    ;    reg [8*9-1:0] cmd_string [9:0];    initial begin        cmd_string[LOAD_MODE] = "Load Mode";        cmd_string[REFRESH  ] = "Refresh  ";        cmd_string[PRECHARGE] = "Precharge";        cmd_string[ACTIVATE ] = "Activate ";        cmd_string[WRITE    ] = "Write    ";        cmd_string[READ     ] = "Read     ";        cmd_string[NOP      ] = "No Op    ";        cmd_string[PWR_DOWN ] = "Pwr Down ";        cmd_string[SELF_REF ] = "Self Ref ";    end    // command state    reg     [`BANKS-1:0] active_bank;    reg     [`BANKS-1:0] auto_precharge_bank;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -