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

📄 sdram_samsung.v

📁 三星SDRAM的verilog模型的完整源码
💻 V
📖 第 1 页 / 共 5 页
字号:
/*=============================================================================* Copyright(c) Samsung Electronics Co., 1997,1998. All rights reseved.** Verilog Behavioral Model of Synchronous 512M SDRAM** Description : This is a synchrounous high data rate DRAM,*               fabricated with SAMSUNG's high performance*               CMOS technology.** Revision No. : V4.5* date         : Jan. 21. 2002**===============================================================================*/`define M256`define LVTTL`define NBANK4`define X16`define	S75		// ------ xinwu`define	v		// ------ xinwu    `ifdef LVTTL //M512+GM	`ifdef S75 //M512+GM+LVTTL	    `define tCCmin  7.5			// clock minimum cycle time	    `define tCCmax  1000		// clock maximun cycle time	    `define tCC3    7.5			// clock minimun cycle time at cas latency=3	    `define tCC2    10 			// clock minimun cycle time at cas latency=3	    `define tCH     2.5			// clock high pulse width	    `define tCL     2.5			// clock low pulse width		    `define tSS     1.5			// input setup time		    `define tSH     0.8			// input hold time	    `define tRRD    15			// row to row delay(min)	    `define tRCD    20			// ras to cas delay(min)	    `define tRP     20			// row precharge time(min)		    `define tRASmin 45			// row active minimum time	    `define tRASmax 100000		// row active maximum time	    `define tRC     65			// row cycle time(min)	            `define tRDL    2			// Last data in to row precharge : 2 clk	    `define tCCD    7.5			// col. address to col. address delay:	    `define tSAC3   5.4			// CLK to valid output delay at cas latency=3	    `define tSHZ3   5.4			// CLK to output in Hi-Z at cas latency=3	    `define tSAC2   6  			// CLK to valid output delay at cas latency=2	    `define tSHZ2   6  			// CLK to output in Hi-Z at cas latency=2	`endif //end of S75    `endif //end of LVTTL/*================================================================== * Copyright(c) Samsung Electronics Co., 1997,1998. All rights reseved. * * Verilog Behavioral Model of Synchronous DRAM  * * Device: -  16M SDRAM(2nd Gen., 3rd Gen., 4th Gen., 5th Gen.)  *	   -  64M SDRAM(2nd Gen., 3rd Gen., 4th Gen., 5th Gen.) *	   - 128M SDRAM(1st Gen., 2nd Gen.,) *	   - 256M SDRAM(2nd Gen.) * * Description : This is a synchrounous high data rate DRAM,  *		 fabricated with SAMSUNG's high performance   *               CMOS technology.                                 * * Developer   : Jae-Ha Kim. *  		 CAE Team. Semiconductor R&D Centor.  *		 Semiconductor Division. Samsung Electronics Co. * * Revision    : Yong-Cheol Bae. ( e-mail: jjbae@samsung.co.kr ) * 1.0~2.3	 DRAM2 Design. Semiconductor R&D Centor.  *		 Semiconductor Division. Samsung Electronics Co. * Revision    : Kyung-Woo Nam. ( e-mail: aboverim@samsung.co.kr ) * 3.0~		 DRAM2 Design. Semiconductor R&D Centor.  *		 Semiconductor Division. Samsung Electronics Co. *================================================================== * Revision No. : V2.3  * date		: Aug. 20. 1997 *		: Oct. 22. 1997 *		: Jan. 15. 1998   - 16M 4Gen. & 64M 3Gen. spec update *		: Jun. 30. 1998   - 16M 4Gen. & 64M 3Gen. & 2Mx32 &  *		                  128M 1Gen. & 256M 2Gen. AC spec update *		: Oct. 08. 1998   - all-bank precharge revision *		                  bank note change: ba0=MSB,ba1=LSB @ 4banks *		: Nov. 18. 1998   - option set for verbose (e.g. +define+v ) *		                  128M 2Gen. AC spec added.  *                                conformed model through verilog-XL 2.6.27  * Revision No. : V3.0  * date		: Apr. 07. 1999   - tRDL=2 *			1. parameterize auto-precharge address : ADDR_AP *			2. divide auto-precharge process read/write *			3. divide precharge_flag_kill process normal/read_autopre/write_autopre *			4. generate wr_autoprecharge2 process excuting when tRDL=2 *			5. modify same-bank-autoprecharge-disable function *			   (disable gapless, other bank interrupt case) * Revision No. : V3.1  * date         : May. 19. 1999   *			1. Add 16M 5th Gen. LVTTL(-10,-8,-8.7,-7,-6) *			2. Modify 2Mx32 5th Gen. tSAC value * Revision No. : V3.2  * date         : Jun. 11. 1999   *			1. Modify -A AC parameter(64M 5th, 128M 2th, 256M 2th) * Revision No. : V3.3  * date         : Jun. 24. 1999   *			1. After 64MSD3, auto_flagx signal is not used,  *			   let auto_flagx be not enabled to device which is after 64MSD3 *			2. compile new versions  *			   verilog-xl : 2.7.17, NC-verilog : 2.1., VCS : 5.0.1a * Revision No. : V3.4  * date         : Jul. 12. 1999   *			1. To prevent roundoff error in AC parameter violation check procedure, *			   define MARGIN paramter. (MARGIN=0.1ns now) * Revision No. : V3.5  * date         : Sep. 28. 1999   *			1. Warning message 'tCCmax violation' is appeared during self refresh operation. *			   When self refresh or precharge-power down, clk can be don't care state. (can stay 'low' or 'high'-level) *                         Therefore tCCmax violation should not be checked during self refresh or prech. power down. * Revision No. : V3.6  * date         : Dec. 14. 1999   *			1. Make MODELSIM version and add partial REF./VREFi change function for NOKIA * Revision No. : V3.7  * date         : Jul. 11. 2000   *			1. Add dynamic memory allocation function using VERILOG-XL PLI, *			   then you must build verilog-XL excutable file containing PLI, and use +define+DYMEM option. * Revision No. : V3.8  * date         : Jul. 13. 2000   *			1. Add 128M SDRAM 3rd/4th Gen., 256M SDRAM 3rd Gen. * Revision No. : V3.9 * date         : Feb. 5. 2001 *                      1. remove CL2 parameter at -A, -7,... when violated, error messages are printed. * Revision No. : V4.0 * date         : Jun. 11. 2001 *                      1. 128M SDRAM X32 MCP (64M SDRAM X16 7th) parameter added * Revision No. : V4.1 * date         : Jun. 23. 2001 *                      1. 256M SDRAM 4th parameters are added * Revision No. : V4.2 * date         : Jul. 31. 2001 *                      1. because array of reg is not work at vcs 6.0, change array of reg to real variable (TRAS_PP, TPRE_P) * Revision No. : V4.3 * date         : Aug. 09. 2001 *                      1. There is an error that use "<" instead of ">", in tRASmax violation check routine. * Revision No. : V4.4 * date         : Oct. 05. 2001 *                      1. Add 128M Mobile SDRAM 5th Gen. (8Mx16, D-die) *                      2. Add 64M Mobile SDRAM 7th Gen. (2Mx32, F-die) * Revision No. : V4.5 * date         : Nov. 23. 2001 *                      1. Add mobile function (EMRS:PASR/TCSR/DSC, DPD:pin/cmd control) * Revision No. : V4.6 * date         : Jan. 15. 2002 *                      1. Add 512M SDRAM * Revision No. : V4.6 * date         : Aug. 27. 2002 *                      1. Add 128M X32 SDRAM * Revision No. : V4.7 * date         : Nov. 25. 2003 *                      1. Add 256M X32 SDRAM  *                      2. Add 512M X32 SDRAM (DDP) *                      3. Add 512M X16 SDRAM (DDP: 2CS) *                      4. Add 1GM X4 SDRAM (DDP: 2CS) *                      5. Add 1GM X8 SDRAM (DDP: 2CS, 2CKE) *================================================================== */`timescale    1ns / 10ps `define K1	1024`define M1	1048576`define BYTE	8    `ifdef CS2    `ifdef DPD_PIN        module sdram_cs2(clk, csb, cke, ba, ad, rasb, casb, web, dqm, dqi, dpdb);    `else        module sdram_cs2(clk, csb, cke, ba, ad, rasb, casb, web, dqm, dqi);    `endif`else    `ifdef DPD_PIN        module samsung_sdram(clk, csb, cke, ba, ad, rasb, casb, web, dqm, dqi, dpdb);    `else        module samsung_sdram(clk, csb, cke, ba, ad, rasb, casb, web, dqm, dqi);	//default port name    `endif`endif    `ifdef M16	`define TBITS	16*`M1	`define nBank	2        `define ADDRTOP	10	`define	ADDR_AP	10        `ifdef G2                `define M16G2_M641G	`else                `define M16G3_M64G2                `define M64G3_M128_M256        `endif    `endif    `ifdef M64	`define TBITS		64*`M1	`define	ADDR_AP	10    	`ifdef NBANK2      	    `define nBank	2		    `ifdef X32	    	`define ADDRTOP	11	    `else            	`define ADDRTOP	12	    `endif    	`endif        `ifdef NBANK4     	    `define nBank	4		    `ifdef X32            	`define ADDRTOP	10	    `else	    	`define ADDRTOP	11	    `endif    	`endif                `define M64_M128_M256    // for prech_reg         `ifdef G1                `define M16G2_M641G        `else        `ifdef G2                `define M16G3_M64G2        `else                `define M16G4_M64G3                `define M64G3_M128_M256        `endif        `endif    `endif    `ifdef M128	`define TBITS	128*`M1        `ifdef NBANK4     	    `define nBank	4		    `define ADDRTOP	11    	`endif	`define	ADDR_AP	10        `define M64_M128_M256    // for prech_reg 	`define M128_M256        // RFU, c_addr 10->11         `define M64G3_M128_M256  // from M64G3        `define M16G4_M64G3    `endif    `ifdef M256	`define TBITS	256*`M1	`define nBank	4	    `ifdef X32        	`define ADDRTOP	11	    `else	    	`define ADDRTOP	12	    `endif	`define	ADDR_AP	10        `define M64_M128_M256    // for prech_reg 	`define M128_M256        // RFU, c_addr 10->11         `define M64G3_M128_M256  // from M64G3        `define M16G4_M64G3    `endif    `ifdef M512	`define TBITS	512*`M1	`define nBank	4        `define ADDRTOP	12	`define	ADDR_AP	10        `define M64_M128_M256    // for prech_reg 	//`define M128_M256        // RFU, c_addr 10->11         `define M64G3_M128_M256  // from M64G3        `define M16G4_M64G3    `endif    `ifdef M1024	`define TBITS	1024*`M1	`define nBank	4        `define ADDRTOP	12	`define	ADDR_AP	10        `define M64_M128_M256    // for prech_reg 	//`define M128_M256        // RFU, c_addr 10->11         `define M64G3_M128_M256  // from M64G3        `define M16G4_M64G3    `endif`ifdef M1024     `ifdef X4        `define M512_M1024_X4        `define B               4        `define nCOL            12        `define PAGEDEPTH       4096        `define nDQM            1    `endif    `ifdef X8        `define M512_M1024_X8        `define B               8        `define nCOL            11        `define PAGEDEPTH       2048        `define nDQM            1    `endif`else`ifdef M512    `ifdef X4	`define M512_M1024_X4        `define B		4        `define nCOL		12        `define	PAGEDEPTH	4096        `define nDQM		1    `endif    `ifdef X8	`define M512_M1024_X8        `define B		8        `define nCOL		11        `define	PAGEDEPTH	2048        `define nDQM		1    `endif    `ifdef X16        `define B		16	    `ifdef CS2        	`define nCOL	9        	`define	PAGEDEPTH	512	    `else	    	`define nCOL	10        	`define	PAGEDEPTH	1024	    `endif        `define nDQM		2    `endif    `ifdef X32        `define B		32        `define nCOL		9        `define	PAGEDEPTH	512        `define nDQM		4    `endif`else`ifdef M256    `ifdef X4    	`define M128_M256_X4			// 98.6.30 BYC    	`define B		4		// number of bit(x4)    	`define nCOL		11    	`define PAGEDEPTH	2048	`define nDQM		1    `endif    `ifdef X8        `define B		8		// number of bit(x8)    	`define nCOL		10    	`define PAGEDEPTH	1024    	`define nDQM		1    `endif    `ifdef X16    	`define B		16		// number of bit(x16)    	`define nCOL		9    	`define PAGEDEPTH	512	`define nDQM		2    `endif    `ifdef X32    	`define B		32		// number of bit(x32)    	`define nCOL		9    	`define PAGEDEPTH	512	`define nDQM		4    `endif`else`ifdef M128    `ifdef X4        `define M128_M256_X4                    // 98.6.30 BYC        `define B               4               // number of bit(x4)        `define nCOL            11        `define PAGEDEPTH       2048        `define nDQM            1    `endif    `ifdef X8        `define B               8               // number of bit(x8)        `define nCOL            10        `define PAGEDEPTH       1024        `define nDQM            1    `endif    `ifdef X16        `define B               16              // number of bit(x16)        `define nCOL            9        `define PAGEDEPTH       512        `define nDQM            2    `endif    `ifdef X32        `define B               32              // number of bit(x32)        `define nCOL            8        `define PAGEDEPTH       256        `define nDQM            4    `endif`else	// 64M & 16M    `ifdef X4    	`define B		4		// number of bit(x4)    	`define nCOL		10    	`define PAGEDEPTH	1024	`define nDQM		1    `endif    `ifdef X8        `define B		8		// number of bit(x8)    	`define nCOL		9    	`define PAGEDEPTH	512    	`define nDQM		1    `endif    `ifdef X16    	`define B		16		// number of bit(x16)    	`define nCOL		8    	`define PAGEDEPTH	256	`define nDQM		2    `endif    `ifdef X32    	`define B		32		// number of bit(x32)    	`define nCOL		8    	`define PAGEDEPTH	256	`define nDQM		4    `endif`endif`endif`endif`endif`ifdef tCC1`else	`define NO_CL1`endif`ifdef tSAC1`else	`define NO_CL1`endif`ifdef tSHZ1`else	`define NO_CL1`endif`ifdef tCC2`else	`define NO_CL2`endif`ifdef tSAC2`else	`define NO_CL2`endif`ifdef tSHZ2`else	`define NO_CL2`endif`ifdef tCC3`else	`define NO_CL3`endif`ifdef tSAC3`else	`define NO_CL3`endif`ifdef tSHZ3`else	`define NO_CL3`endif`ifdef	tRDL`else	`define	tRDL	1`endif`ifdef DPD_CMD	`define DPD`endif`ifdef DPD_PIN	`define DPD`endif  `define HB		`B/2  `define BIT		`B-1:0  `define BIT_C		`nCOL-1:0  `define BIT_T		`nCOL+`ADDRTOP:0  `define nWORD		`TBITS/`B/`nBank  `define WORD		`nWORD-1:0    inout   [`BIT]  dqi;  input   [`nBank/2-1:0] ba;  input   [`ADDRTOP:0]  ad;  input   rasb,casb,web;  input   clk,cke,csb;  input   [`nDQM-1:0] dqm;`ifdef DPD_PIN  input   dpdb;`endif  /*  `ifdef M64    	`include "m64.ac"  `endif  `ifdef M16    	`include "m16.ac"  `endif  `ifdef M128    	`include "m128.ac"  `endif

⌨️ 快捷键说明

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