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

📄 km416s4030.vhd

📁 vhdl cod for ram.For sp3e
💻 VHD
📖 第 1 页 / 共 5 页
字号:
            TYPE Burst_Inc_type IS ARRAY (0 to 3) OF NATURAL RANGE 0 TO 255;            TYPE BaseLoc_type IS ARRAY (0 to 3) OF NATURAL RANGE 0 TO depth;            TYPE OutWord IS ARRAY (1 downto 0) OF std_logic_vector(7 DOWNTO 0);            CONSTANT seq0 : sequence := (0 & 1 & 2 & 3 & 4 & 5 & 6 & 7);            CONSTANT seq1 : sequence := (1 & 0 & 3 & 2 & 5 & 4 & 7 & 6);            CONSTANT seq2 : sequence := (2 & 3 & 0 & 1 & 6 & 7 & 4 & 5);            CONSTANT seq3 : sequence := (3 & 2 & 1 & 0 & 7 & 6 & 5 & 4);            CONSTANT seq4 : sequence := (4 & 5 & 6 & 7 & 0 & 1 & 2 & 3);            CONSTANT seq5 : sequence := (5 & 4 & 7 & 6 & 1 & 0 & 3 & 2);            CONSTANT seq6 : sequence := (6 & 7 & 4 & 5 & 2 & 3 & 0 & 1);            CONSTANT seq7 : sequence := (7 & 6 & 5 & 4 & 3 & 2 & 1 & 0);            CONSTANT intab : seqtab := (seq0, seq1, seq2, seq3, seq4, seq5,                                        seq6, seq7);            FILE mem_file       : text IS mem_file_name;            VARIABLE MemData0   : MemBlock;            VARIABLE MemData1   : MemBlock;            VARIABLE file_bank  : NATURAL := 0;            VARIABLE ind        : NATURAL := 0;            VARIABLE buf        : line;            VARIABLE MemAddr      : MemLoc;            VARIABLE Location     : NATURAL RANGE 0 TO depth := 0;            VARIABLE BaseLoc      : BaseLoc_type;            VARIABLE Burst_Inc    : Burst_Inc_type;            VARIABLE StartAddr    : StartAddr_type;            VARIABLE Burst_Length : NATURAL RANGE 0 TO 256 := 0;            VARIABLE Burst_Bits   : NATURAL RANGE 0 TO 7   := 0;            VARIABLE Burst        : Burst_Type;            VARIABLE WB           : Write_Burst_Type;            VARIABLE Burst_Cnt    : burst_counter;            VARIABLE command    : command_type;            VARIABLE written    : boolean := false;            VARIABLE chip_en    : boolean := false;            VARIABLE cur_bank   : natural range 0 to hi_bank;            VARIABLE ModeReg    : std_logic_vector(11 DOWNTO 0)                                   := (OTHERS => 'X');            VARIABLE Ref_Cnt      : NATURAL RANGE 0 TO 4096 := 0;            VARIABLE next_ref     : TIME;            VARIABLE BankString   : STRING(8 DOWNTO 1) := " Bank-X ";            -- Functionality Results Variables            VARIABLE Violation  : X01 := '0';            VARIABLE DataDriveOut :  std_logic_vector(15 DOWNTO 0)                                   := (OTHERS => 'Z');            VARIABLE DataDrive  : OutWord;            VARIABLE DataDrive1 : OutWord;            VARIABLE DataDrive2 : OutWord;            VARIABLE DataDrive3 : OutWord;            VARIABLE DQML_reg0  : UX01;            VARIABLE DQMU_reg0  : UX01;            VARIABLE DQML_reg1  : UX01;            VARIABLE DQMU_reg1  : UX01;            VARIABLE DQML_reg2  : UX01;            VARIABLE DQMU_reg2  : UX01;        BEGIN            --------------------------------------------------------------------            -- Timing Check Section            --------------------------------------------------------------------            IF (TimingChecksOn) THEN                VitalSetupHoldCheck (                    TestSignal      => BAIn,                    TestSignalName  => "BA",                    RefSignal       => CLKIn,                    RefSignalName   => "CLK",                    SetupHigh       => tsetup_DQ0_CLK,                    SetupLow        => tsetup_DQ0_CLK,                    HoldHigh        => thold_DQ0_CLK,                    HoldLow         => thold_DQ0_CLK,                    CheckEnabled    => chip_en,                    RefTransition   => '/',                    HeaderMsg       => InstancePath & PartID,                    TimingData      => TD_BA_CLK,                    XOn             => XOn,                    MsgOn           => MsgOn,                    Violation       => Tviol_BA_CLK );                VitalSetupHoldCheck (                    TestSignal      => DQMUIn,                    TestSignalName  => "DQMU",                    RefSignal       => CLKIn,                    RefSignalName   => "CLK",                    SetupHigh       => tsetup_DQ0_CLK,                    SetupLow        => tsetup_DQ0_CLK,                    HoldHigh        => thold_DQ0_CLK,                    HoldLow         => thold_DQ0_CLK,                    CheckEnabled    => chip_en,                    RefTransition   => '/',                    HeaderMsg       => InstancePath & PartID,                    TimingData      => TD_DQMU_CLK,                    XOn             => XOn,                    MsgOn           => MsgOn,                    Violation       => Tviol_DQMU_CLK );                VitalSetupHoldCheck (                    TestSignal      => DQMLIn,                    TestSignalName  => "DQML",                    RefSignal       => CLKIn,                    RefSignalName   => "CLK",                    SetupHigh       => tsetup_DQ0_CLK,                    SetupLow        => tsetup_DQ0_CLK,                    HoldHigh        => thold_DQ0_CLK,                    HoldLow         => thold_DQ0_CLK,                    CheckEnabled    => chip_en,                    RefTransition   => '/',                    HeaderMsg       => InstancePath & PartID,                    TimingData      => TD_DQML_CLK,                    XOn             => XOn,                    MsgOn           => MsgOn,                    Violation       => Tviol_DQML_CLK );                VitalSetupHoldCheck (                    TestSignal      => DataIn,                    TestSignalName  => "Data",                    RefSignal       => CLKIn,                    RefSignalName   => "CLK",                    SetupHigh       => tsetup_DQ0_CLK,                    SetupLow        => tsetup_DQ0_CLK,                    HoldHigh        => thold_DQ0_CLK,                    HoldLow         => thold_DQ0_CLK,                    CheckEnabled    => chip_en,                    RefTransition   => '/',                    HeaderMsg       => InstancePath & PartID,                    TimingData      => TD_D0_CLK,                    XOn             => XOn,                    MsgOn           => MsgOn,                    Violation       => Tviol_D0_CLK );                VitalSetupHoldCheck (                    TestSignal      => CKEIn,                    TestSignalName  => "CKE",                    RefSignal       => CLKIn,                    RefSignalName   => "CLK",                    SetupHigh       => tsetup_DQ0_CLK,                    SetupLow        => tsetup_DQ0_CLK,                    HoldHigh        => thold_DQ0_CLK,                    HoldLow         => thold_DQ0_CLK,                    CheckEnabled    => true,                    RefTransition   => '/',                    HeaderMsg       => InstancePath & PartID,                    TimingData      => TD_CKE_CLK,                    XOn             => XOn,                    MsgOn           => MsgOn,                    Violation       => Tviol_CKE_CLK );                VitalSetupHoldCheck (                    TestSignal      => AddressIn,                    TestSignalName  => "Address",                    RefSignal       => CLKIn,                    RefSignalName   => "CLK",                    SetupHigh       => tsetup_DQ0_CLK,                    SetupLow        => tsetup_DQ0_CLK,                    HoldHigh        => thold_DQ0_CLK,                    HoldLow         => thold_DQ0_CLK,                    CheckEnabled    => chip_en,                    RefTransition   => '/',                    HeaderMsg       => InstancePath & PartID,                    TimingData      => TD_Address_CLK,                    XOn             => XOn,                    MsgOn           => MsgOn,                    Violation       => Tviol_Address_CLK );                VitalSetupHoldCheck (                    TestSignal      => WENegIn,                    TestSignalName  => "WENeg",                    RefSignal       => CLKIn,                    RefSignalName   => "CLK",                    SetupHigh       => tsetup_DQ0_CLK,                    SetupLow        => tsetup_DQ0_CLK,                    HoldHigh        => thold_DQ0_CLK,                    HoldLow         => thold_DQ0_CLK,                    CheckEnabled    => chip_en,                    RefTransition   => '/',                    HeaderMsg       => InstancePath & PartID,                    TimingData      => TD_WENeg_CLK,                    XOn             => XOn,                    MsgOn           => MsgOn,                    Violation       => Tviol_WENeg_CLK );                VitalSetupHoldCheck (                    TestSignal      => RASNegIn,                    TestSignalName  => "RASNeg",                    RefSignal       => CLKIn,                    RefSignalName   => "CLK",                    SetupHigh       => tsetup_DQ0_CLK,                    SetupLow        => tsetup_DQ0_CLK,                    HoldHigh        => thold_DQ0_CLK,                    HoldLow         => thold_DQ0_CLK,                    CheckEnabled    => chip_en,                    RefTransition   => '/',                    HeaderMsg       => InstancePath & PartID,                    TimingData      => TD_RASNeg_CLK,                    XOn             => XOn,                    MsgOn           => MsgOn,                    Violation       => Tviol_RASNeg_CLK );                VitalSetupHoldCheck (                    TestSignal      => CSNegIn,                    TestSignalName  => "CSNeg",                    RefSignal       => CLKIn,                    RefSignalName   => "CLK",                    SetupHigh       => tsetup_DQ0_CLK,                    SetupLow        => tsetup_DQ0_CLK,                    HoldHigh        => thold_DQ0_CLK,                    HoldLow         => thold_DQ0_CLK,                    CheckEnabled    => chip_en,                    RefTransition   => '/',                    HeaderMsg       => InstancePath & PartID,                    TimingData      => TD_CSNeg_CLK,                    XOn             => XOn,                    MsgOn           => MsgOn,                    Violation       => Tviol_CSNeg_CLK );                VitalSetupHoldCheck (                    TestSignal      => CASNegIn,                    TestSignalName  => "CASNeg",                    RefSignal       => CLKIn,                    RefSignalName   => "CLK",                    SetupHigh       => tsetup_DQ0_CLK,                    SetupLow        => tsetup_DQ0_CLK,                    HoldHigh        => thold_DQ0_CLK,                    HoldLow         => thold_DQ0_CLK,                    CheckEnabled    => chip_en,                    RefTransition   => '/',                    HeaderMsg       => InstancePath & PartID,                    TimingData      => TD_CASNeg_CLK,                    XOn             => XOn,                    MsgOn           => MsgOn,                    Violation       => Tviol_CASNeg_CLK );                VitalPeriodPulseCheck (                    TestSignal      =>  CLKIn,                    TestSignalName  =>  "CLK",                    Period          =>  tperiod_CLK_posedge,                    PulseWidthLow   =>  tpw_CLK_negedge,                    PulseWidthHigh  =>  tpw_CLK_posedge,                    PeriodData      =>  PD_CLK,                    XOn             =>  XOn,                    MsgOn           =>  MsgOn,                    Violation       =>  Pviol_CLK,                    HeaderMsg       =>  InstancePath & PartID,                    CheckEnabled    =>  TRUE );                Violation := Pviol_CLK OR Tviol_BA_CLK  OR Tviol_DQML_CLK OR                             Tviol_DQMU_CLK OR Tviol_D0_CLK OR Tviol_CKE_CLK OR                             Tviol_Address_CLK OR Tviol_WENeg_CLK OR                             Tviol_RASNeg_CLK OR Tviol_CSNeg_CLK OR                             Tviol_CASNeg_CLK;                ASSERT Violation = '0'                    REPORT InstancePath & partID & ": simulation may be" &                           " inaccurate due to timing violations"                    SEVERITY SeverityMode;            END IF; -- Timing Check Section    --------------------------------------------------------------------    -- Functional Section    --------------------------------------------------------------------    IF (rising_edge(CLKIn)) THEN        CKEreg <= CKEIn;        IF (NOW > Next_Ref AND PoweredUp AND Ref_Cnt > 0) THEN            Ref_Cnt := Ref_Cnt - 1;            Next_Ref := NOW + tdevice_REF;        END IF;        IF CKEreg = '1' THEN            IF CSNegIn = '0' THEN                chip_en := true;

⌨️ 快捷键说明

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