📄 mt47h64m16.vhd
字号:
---------------------------------------------------------------------------------- File Name: mt47h64m16.vhd---------------------------------------------------------------------------------- Copyright (C) 2006-2008 Free Model Foundry; http://www.FreeModelFoundry.com---- This program is free software; you can redistribute it and/or modify-- it under the terms of the GNU General Public License version 2 as-- published by the Free Software Foundation.---- MODIFICATION HISTORY:---- version: | author: | mod date: | changes made:-- V1.0 M.Milanovic 06 Feb 06 Initial release-- V1.1 I.Milutinovic 07 Jan 20 CKtemp generation changed-- V1.2 R. MUnden 07 Jun 29 Added warning message if tRFCMIN is-- violated. Suggested by Barry-- Grieveson.-- V1.3 B.Colakovic 08 Aug 27 CKE condition added------------------------------------------------------------------------------------ PART DESCRIPTION:---- Library: RAM-- Technology: CMOS-- Part: MT47H64M16---- Description: 1Gb (8 Meg x 16 x 8 banks) DDR2 SDRAM--------------------------------------------------------------------------------LIBRARY IEEE; USE IEEE.std_logic_1164.ALL; USE IEEE.VITAL_timing.ALL; USE IEEE.VITAL_primitives.ALL; USE STD.textio.ALL;LIBRARY FMF; USE FMF.gen_utils.ALL; USE FMF.conversions.ALL;---------------------------------------------------------------------------------- ENTITY DECLARATION--------------------------------------------------------------------------------ENTITY mt47h64m16 IS GENERIC ( -- tipd delays: interconnect path delays tipd_ODT : VitalDelayType01 := VitalZeroDelay01; tipd_CK : VitalDelayType01 := VitalZeroDelay01; tipd_CKNeg : VitalDelayType01 := VitalZeroDelay01; tipd_CKE : VitalDelayType01 := VitalZeroDelay01; tipd_CSNeg : VitalDelayType01 := VitalZeroDelay01; tipd_RASNeg : VitalDelayType01 := VitalZeroDelay01; tipd_CASNeg : VitalDelayType01 := VitalZeroDelay01; tipd_WENeg : VitalDelayType01 := VitalZeroDelay01; tipd_LDM : VitalDelayType01 := VitalZeroDelay01; tipd_UDM : VitalDelayType01 := VitalZeroDelay01; tipd_BA0 : VitalDelayType01 := VitalZeroDelay01; tipd_BA1 : VitalDelayType01 := VitalZeroDelay01; tipd_BA2 : VitalDelayType01 := VitalZeroDelay01; tipd_A0 : VitalDelayType01 := VitalZeroDelay01; tipd_A1 : VitalDelayType01 := VitalZeroDelay01; tipd_A2 : VitalDelayType01 := VitalZeroDelay01; tipd_A3 : VitalDelayType01 := VitalZeroDelay01; tipd_A4 : VitalDelayType01 := VitalZeroDelay01; tipd_A5 : VitalDelayType01 := VitalZeroDelay01; tipd_A6 : VitalDelayType01 := VitalZeroDelay01; tipd_A7 : VitalDelayType01 := VitalZeroDelay01; tipd_A8 : VitalDelayType01 := VitalZeroDelay01; tipd_A9 : VitalDelayType01 := VitalZeroDelay01; tipd_A10 : VitalDelayType01 := VitalZeroDelay01; tipd_A11 : VitalDelayType01 := VitalZeroDelay01; tipd_A12 : VitalDelayType01 := VitalZeroDelay01; tipd_DQ0 : VitalDelayType01 := VitalZeroDelay01; tipd_DQ1 : VitalDelayType01 := VitalZeroDelay01; tipd_DQ2 : VitalDelayType01 := VitalZeroDelay01; tipd_DQ3 : VitalDelayType01 := VitalZeroDelay01; tipd_DQ4 : VitalDelayType01 := VitalZeroDelay01; tipd_DQ5 : VitalDelayType01 := VitalZeroDelay01; tipd_DQ6 : VitalDelayType01 := VitalZeroDelay01; tipd_DQ7 : VitalDelayType01 := VitalZeroDelay01; tipd_DQ8 : VitalDelayType01 := VitalZeroDelay01; tipd_DQ9 : VitalDelayType01 := VitalZeroDelay01; tipd_DQ10 : VitalDelayType01 := VitalZeroDelay01; tipd_DQ11 : VitalDelayType01 := VitalZeroDelay01; tipd_DQ12 : VitalDelayType01 := VitalZeroDelay01; tipd_DQ13 : VitalDelayType01 := VitalZeroDelay01; tipd_DQ14 : VitalDelayType01 := VitalZeroDelay01; tipd_DQ15 : VitalDelayType01 := VitalZeroDelay01; tipd_UDQS : VitalDelayType01 := VitalZeroDelay01; tipd_UDQSNeg : VitalDelayType01 := VitalZeroDelay01; tipd_LDQS : VitalDelayType01 := VitalZeroDelay01; tipd_LDQSNeg : VitalDelayType01 := VitalZeroDelay01; -- tpd delays tpd_CK_DQ0 : VitalDelayType01Z := UnitDelay01Z; -- tAC(max), tHZ tpd_CK_DQ1 : VitalDelayType := UnitDelay; -- tAC(min) tpd_CK_LDQS : VitalDelayType01Z := UnitDelay01Z; -- tDQSCK(max) -- tsetup values tsetup_DQ0_LDQS : VitalDelayType := UnitDelay; -- tDSb tsetup_A0_CK : VitalDelayType := UnitDelay; -- tISb tsetup_LDQS_CK_CL3_negedge_posedge: VitalDelayType := UnitDelay; -- tDSS tsetup_LDQS_CK_CL4_negedge_posedge: VitalDelayType := UnitDelay; -- tDSS tsetup_LDQS_CK_CL5_negedge_posedge: VitalDelayType := UnitDelay; -- tDSS tsetup_LDQS_CK_CL6_negedge_posedge: VitalDelayType := UnitDelay; -- tDSS -- thold values thold_DQ0_LDQS : VitalDelayType := UnitDelay; -- tDHb thold_A0_CK : VitalDelayType := UnitDelay; -- tIHb thold_LDQS_CK_CL3_posedge_posedge : VitalDelayType := UnitDelay; -- tDSH thold_LDQS_CK_CL4_posedge_posedge : VitalDelayType := UnitDelay; -- tDSH thold_LDQS_CK_CL5_posedge_posedge : VitalDelayType := UnitDelay; -- tDSH thold_LDQS_CK_CL6_posedge_posedge : VitalDelayType := UnitDelay; -- tDSH -- tpw values tpw_CK_CL3_posedge: VitalDelayType := UnitDelay; -- tCHAVG tpw_CK_CL3_negedge: VitalDelayType := UnitDelay; -- tCLAVG tpw_CK_CL4_posedge: VitalDelayType := UnitDelay; -- tCHAVG tpw_CK_CL4_negedge: VitalDelayType := UnitDelay; -- tCLAVG tpw_CK_CL5_posedge: VitalDelayType := UnitDelay; -- tCHAVG tpw_CK_CL5_negedge: VitalDelayType := UnitDelay; -- tCLAVG tpw_CK_CL6_posedge: VitalDelayType := UnitDelay; -- tCHAVG tpw_CK_CL6_negedge: VitalDelayType := UnitDelay; -- tCLAVG tpw_A0_CL3 : VitalDelayType := UnitDelay; -- tIPW tpw_A0_CL4 : VitalDelayType := UnitDelay; -- tIPW tpw_A0_CL5 : VitalDelayType := UnitDelay; -- tIPW tpw_A0_CL6 : VitalDelayType := UnitDelay; -- tIPW tpw_DQ0_CL3 : VitalDelayType := UnitDelay; -- tDIPW tpw_DQ0_CL4 : VitalDelayType := UnitDelay; -- tDIPW tpw_DQ0_CL5 : VitalDelayType := UnitDelay; -- tDIPW tpw_DQ0_CL6 : VitalDelayType := UnitDelay; -- tDIPW tpw_LDQS_normCL3_posedge : VitalDelayType := UnitDelay; -- tDQSH tpw_LDQS_normCL3_negedge : VitalDelayType := UnitDelay; -- tDQSL tpw_LDQS_normCL4_posedge : VitalDelayType := UnitDelay; -- tDQSH tpw_LDQS_normCL4_negedge : VitalDelayType := UnitDelay; -- tDQSL tpw_LDQS_normCL5_posedge : VitalDelayType := UnitDelay; -- tDQSH tpw_LDQS_normCL5_negedge : VitalDelayType := UnitDelay; -- tDQSL tpw_LDQS_normCL6_posedge : VitalDelayType := UnitDelay; -- tDQSH tpw_LDQS_normCL6_negedge : VitalDelayType := UnitDelay; -- tDQSL tpw_LDQS_preCL3_negedge : VitalDelayType := UnitDelay; -- tWPRE tpw_LDQS_preCL4_negedge : VitalDelayType := UnitDelay; -- tWPRE tpw_LDQS_preCL5_negedge : VitalDelayType := UnitDelay; -- tWPRE tpw_LDQS_preCL6_negedge : VitalDelayType := UnitDelay; -- tWPRE tpw_LDQS_postCL3_negedge : VitalDelayType := UnitDelay; -- tWPST tpw_LDQS_postCL4_negedge : VitalDelayType := UnitDelay; -- tWPST tpw_LDQS_postCL5_negedge : VitalDelayType := UnitDelay; -- tWPST tpw_LDQS_postCL6_negedge : VitalDelayType := UnitDelay; -- tWPST -- tperiod values tperiod_CK_CL3 : VitalDelayType := UnitDelay; -- tCKAVG(min) tperiod_CK_CL4 : VitalDelayType := UnitDelay; -- tCKAVG(min) tperiod_CK_CL5 : VitalDelayType := UnitDelay; -- tCKAVG(min) tperiod_CK_CL6 : VitalDelayType := UnitDelay; -- tCKAVG(min) -- tskew values tskew_CK_LDQS_CL3_posedge_posedge: VitalDelayType := UnitDelay; -- tDQSS tskew_CK_LDQS_CL4_posedge_posedge: VitalDelayType := UnitDelay; -- tDQSS tskew_CK_LDQS_CL5_posedge_posedge: VitalDelayType := UnitDelay; -- tDQSS tskew_CK_LDQS_CL6_posedge_posedge: VitalDelayType := UnitDelay; -- tDQSS -- tdevice values: values for internal delays tdevice_tRC : VitalDelayType := 54 ns; -- tRC tdevice_tRRD : VitalDelayType := 10 ns; -- tRRD tdevice_tRCD : VitalDelayType := 12 ns; -- tRCD tdevice_tFAW : VitalDelayType := 50 ns; -- tFAW tdevice_tRASMIN : VitalDelayType := 40 ns; -- tRAS(min) tdevice_tRASMAX : VitalDelayType := 70 us; -- tRAS(max) tdevice_tRTP : VitalDelayType := 7.5 ns; -- tRTP tdevice_tWR : VitalDelayType := 15 ns; -- tWR tdevice_tWTR : VitalDelayType := 7.5 ns; -- tWTR tdevice_tRP : VitalDelayType := 12 ns; -- tRP tdevice_tRFCMIN : VitalDelayType := 127.5 ns; -- tRFC(min) tdevice_tRFCMAX : VitalDelayType := 70 us; -- tRFC(max) tdevice_REFPer : VitalDelayType := 64 ms; -- refresh period tdevice_tCKAVGMAX : VitalDelayType := 8 ns; -- tCKAVG(max) -- generic control parameters InstancePath : string := DefaultInstancePath; TimingChecksOn : boolean := DefaultTimingChecks; MsgOn : boolean := DefaultMsgOn; XOn : boolean := DefaultXon; -- memory file to be loaded mem_file_name : string := "none"; UserPreload : boolean := FALSE; -- For FMF SDF technology file usage TimingModel : string := DefaultTimingModel ); PORT ( ODT : IN std_ulogic := 'U'; CK : IN std_ulogic := 'U'; CKNeg : IN std_ulogic := 'U'; CKE : IN std_ulogic := 'U'; CSNeg : IN std_ulogic := 'U'; RASNeg : IN std_ulogic := 'U'; CASNeg : IN std_ulogic := 'U'; WENeg : IN std_ulogic := 'U'; LDM : IN std_ulogic := 'U'; UDM : IN std_ulogic := 'U'; BA0 : IN std_ulogic := 'U'; BA1 : IN std_ulogic := 'U'; BA2 : IN std_ulogic := 'U'; A0 : IN std_ulogic := 'U'; A1 : IN std_ulogic := 'U'; A2 : IN std_ulogic := 'U'; A3 : IN std_ulogic := 'U'; A4 : IN std_ulogic := 'U'; A5 : IN std_ulogic := 'U'; A6 : IN std_ulogic := 'U'; A7 : IN std_ulogic := 'U'; A8 : IN std_ulogic := 'U'; A9 : IN std_ulogic := 'U'; A10 : IN std_ulogic := 'U'; A11 : IN std_ulogic := 'U'; A12 : IN std_ulogic := 'U'; DQ0 : INOUT std_ulogic := 'U'; DQ1 : INOUT std_ulogic := 'U'; DQ2 : INOUT std_ulogic := 'U'; DQ3 : INOUT std_ulogic := 'U'; DQ4 : INOUT std_ulogic := 'U'; DQ5 : INOUT std_ulogic := 'U'; DQ6 : INOUT std_ulogic := 'U'; DQ7 : INOUT std_ulogic := 'U'; DQ8 : INOUT std_ulogic := 'U'; DQ9 : INOUT std_ulogic := 'U'; DQ10 : INOUT std_ulogic := 'U'; DQ11 : INOUT std_ulogic := 'U'; DQ12 : INOUT std_ulogic := 'U'; DQ13 : INOUT std_ulogic := 'U'; DQ14 : INOUT std_ulogic := 'U'; DQ15 : INOUT std_ulogic := 'U'; UDQS : INOUT std_ulogic := 'U'; UDQSNeg : INOUT std_ulogic := 'U'; LDQS : INOUT std_ulogic := 'U'; LDQSNeg : INOUT std_ulogic := 'U' ); ATTRIBUTE VITAL_LEVEL0 OF mt47h64m16 : ENTITY IS TRUE;END mt47h64m16;---------------------------------------------------------------------------------- ARCHITECTURE DECLARATION--------------------------------------------------------------------------------ARCHITECTURE vhdl_behavioral OF mt47h64m16 IS ATTRIBUTE VITAL_LEVEL0 OF vhdl_behavioral : ARCHITECTURE IS TRUE; CONSTANT PartID : string := "MT47H64M16"; CONSTANT BankNum : natural := 7; CONSTANT MaxData : natural := 16#FF#; CONSTANT MemSize : natural := 16#7FFFFF#; CONSTANT RowNum : natural := 16#1FFF#; CONSTANT ColNum : natural := 16#3FF#; -- ipd SIGNAL ODT_ipd : std_ulogic := 'U'; SIGNAL CK_ipd : std_ulogic := 'U'; SIGNAL CKNeg_ipd : std_ulogic := 'U'; SIGNAL CKE_ipd : std_ulogic := 'U'; SIGNAL CSNeg_ipd : std_ulogic := 'U'; SIGNAL RASNeg_ipd : std_ulogic := 'U'; SIGNAL CASNeg_ipd : std_ulogic := 'U'; SIGNAL WENeg_ipd : std_ulogic := 'U'; SIGNAL LDM_ipd : std_ulogic := 'U'; SIGNAL UDM_ipd : std_ulogic := 'U'; SIGNAL BA0_ipd : std_ulogic := 'U'; SIGNAL BA1_ipd : std_ulogic := 'U'; SIGNAL BA2_ipd : std_ulogic := 'U'; SIGNAL A0_ipd : std_ulogic := 'U'; SIGNAL A1_ipd : std_ulogic := 'U'; SIGNAL A2_ipd : std_ulogic := 'U';
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -