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

📄 stratixii_atoms.vhd

📁 free hardware ip core about sparcv8,a soc cpu in vhdl
💻 VHD
📖 第 1 页 / 共 5 页
字号:
            when '4' =>                digit := 4;            when '5' =>                digit := 5;            when '6' =>                digit := 6;            when '7' =>                digit := 7;            when '8' =>                digit := 8;            when '9' =>                digit := 9;            when others =>                -- set error flag                err := true;        end case;        if (err) then            err := false;        else            newdigit := newdigit * 10 + digit;        end if;    end loop;    return (sign*newdigit);end;end stratixii_pllpack;------  DFFE Model----LIBRARY IEEE;use IEEE.STD_LOGIC_1164.all;use IEEE.VITAL_Timing.all;use IEEE.VITAL_Primitives.all;use work.stratixii_atom_pack.all;entity stratixii_dffe is    generic(        TimingChecksOn: Boolean := True;        XOn: Boolean := DefGlitchXOn;        MsgOn: Boolean := DefGlitchMsgOn;        MsgOnChecks: Boolean := DefMsgOnChecks;        XOnChecks: Boolean := DefXOnChecks;        InstancePath: STRING := "*";        tpd_PRN_Q_negedge              :  VitalDelayType01 := DefPropDelay01;        tpd_CLRN_Q_negedge             :  VitalDelayType01 := DefPropDelay01;        tpd_CLK_Q_posedge              :  VitalDelayType01 := DefPropDelay01;        tpd_ENA_Q_posedge              :  VitalDelayType01 := DefPropDelay01;        tsetup_D_CLK_noedge_posedge    :  VitalDelayType := DefSetupHoldCnst;        tsetup_D_CLK_noedge_negedge    :  VitalDelayType := DefSetupHoldCnst;        tsetup_ENA_CLK_noedge_posedge  :  VitalDelayType := DefSetupHoldCnst;        thold_D_CLK_noedge_posedge     :   VitalDelayType := DefSetupHoldCnst;        thold_D_CLK_noedge_negedge     :   VitalDelayType := DefSetupHoldCnst;        thold_ENA_CLK_noedge_posedge   :   VitalDelayType := DefSetupHoldCnst;        tipd_D                         :  VitalDelayType01 := DefPropDelay01;        tipd_CLRN                      :  VitalDelayType01 := DefPropDelay01;        tipd_PRN                       :  VitalDelayType01 := DefPropDelay01;        tipd_CLK                       :  VitalDelayType01 := DefPropDelay01;        tipd_ENA                       :  VitalDelayType01 := DefPropDelay01);    port(        Q                              :  out   STD_LOGIC := '0';        D                              :  in    STD_LOGIC;        CLRN                           :  in    STD_LOGIC;        PRN                            :  in    STD_LOGIC;        CLK                            :  in    STD_LOGIC;        ENA                            :  in    STD_LOGIC);    attribute VITAL_LEVEL0 of stratixii_dffe : entity is TRUE;end stratixii_dffe;-- architecture body --architecture behave of stratixii_dffe is    attribute VITAL_LEVEL0 of behave : architecture is TRUE;    signal D_ipd  : STD_ULOGIC := 'U';    signal CLRN_ipd       : STD_ULOGIC := 'U';    signal PRN_ipd        : STD_ULOGIC := 'U';    signal CLK_ipd        : STD_ULOGIC := 'U';    signal ENA_ipd        : STD_ULOGIC := 'U';begin    ---------------------    --  INPUT PATH DELAYs    ---------------------    WireDelay : block    begin        VitalWireDelay (D_ipd, D, tipd_D);        VitalWireDelay (CLRN_ipd, CLRN, tipd_CLRN);        VitalWireDelay (PRN_ipd, PRN, tipd_PRN);        VitalWireDelay (CLK_ipd, CLK, tipd_CLK);        VitalWireDelay (ENA_ipd, ENA, tipd_ENA);    end block;    --------------------    --  BEHAVIOR SECTION    --------------------    VITALBehavior : process (D_ipd, CLRN_ipd, PRN_ipd, CLK_ipd, ENA_ipd)    -- timing check results    VARIABLE Tviol_D_CLK : STD_ULOGIC := '0';    VARIABLE Tviol_ENA_CLK       : STD_ULOGIC := '0';    VARIABLE TimingData_D_CLK : VitalTimingDataType := VitalTimingDataInit;    VARIABLE TimingData_ENA_CLK : VitalTimingDataType := VitalTimingDataInit;    -- functionality results    VARIABLE Violation : STD_ULOGIC := '0';    VARIABLE PrevData_Q : STD_LOGIC_VECTOR(0 to 7);    VARIABLE D_delayed : STD_ULOGIC := 'U';    VARIABLE CLK_delayed : STD_ULOGIC := 'U';    VARIABLE ENA_delayed : STD_ULOGIC := 'U';    VARIABLE Results : STD_LOGIC_VECTOR(1 to 1) := (others => '0');    -- output glitch detection variables    VARIABLE Q_VitalGlitchData   : VitalGlitchDataType;    CONSTANT dffe_Q_tab : VitalStateTableType := (        ( L,  L,  x,  x,  x,  x,  x,  x,  x,  L ),        ( L,  H,  L,  H,  H,  x,  x,  H,  x,  H ),        ( L,  H,  L,  H,  x,  L,  x,  H,  x,  H ),        ( L,  H,  L,  x,  H,  H,  x,  H,  x,  H ),        ( L,  H,  H,  x,  x,  x,  H,  x,  x,  S ),        ( L,  H,  x,  x,  x,  x,  L,  x,  x,  H ),        ( L,  H,  x,  x,  x,  x,  H,  L,  x,  S ),        ( L,  x,  L,  L,  L,  x,  H,  H,  x,  L ),        ( L,  x,  L,  L,  x,  L,  H,  H,  x,  L ),        ( L,  x,  L,  x,  L,  H,  H,  H,  x,  L ),        ( L,  x,  x,  x,  x,  x,  x,  x,  x,  S ));    begin        ------------------------        --  Timing Check Section        ------------------------        if (TimingChecksOn) then            VitalSetupHoldCheck (                Violation       => Tviol_D_CLK,                TimingData      => TimingData_D_CLK,                TestSignal      => D_ipd,                TestSignalName  => "D",                RefSignal       => CLK_ipd,                RefSignalName   => "CLK",                SetupHigh       => tsetup_D_CLK_noedge_posedge,                SetupLow        => tsetup_D_CLK_noedge_posedge,                HoldHigh        => thold_D_CLK_noedge_posedge,                HoldLow         => thold_D_CLK_noedge_posedge,                CheckEnabled    => TO_X01(( (NOT PRN_ipd) ) OR ( (NOT CLRN_ipd) ) OR ( (NOT ENA_ipd) )) /= '1',                RefTransition   => '/',                HeaderMsg       => InstancePath & "/DFFE",                XOn             => XOnChecks,                MsgOn           => MsgOnChecks );            VitalSetupHoldCheck (                Violation       => Tviol_ENA_CLK,                TimingData      => TimingData_ENA_CLK,                TestSignal      => ENA_ipd,                TestSignalName  => "ENA",                RefSignal       => CLK_ipd,                RefSignalName   => "CLK",                SetupHigh       => tsetup_ENA_CLK_noedge_posedge,                SetupLow        => tsetup_ENA_CLK_noedge_posedge,                HoldHigh        => thold_ENA_CLK_noedge_posedge,                HoldLow         => thold_ENA_CLK_noedge_posedge,                CheckEnabled    => TO_X01(( (NOT PRN_ipd) ) OR ( (NOT CLRN_ipd) ) ) /= '1',                RefTransition   => '/',                HeaderMsg       => InstancePath & "/DFFE",                XOn             => XOnChecks,                MsgOn           => MsgOnChecks );        end if;        -------------------------        --  Functionality Section        -------------------------        Violation := Tviol_D_CLK or Tviol_ENA_CLK;        VitalStateTable(        StateTable => dffe_Q_tab,        DataIn => (                Violation, CLRN_ipd, CLK_delayed, Results(1), D_delayed, ENA_delayed, PRN_ipd, CLK_ipd),        Result => Results,        NumStates => 1,        PreviousDataIn => PrevData_Q);        D_delayed := D_ipd;        CLK_delayed := CLK_ipd;        ENA_delayed := ENA_ipd;        ----------------------        --  Path Delay Section        ----------------------        VitalPathDelay01 (        OutSignal => Q,        OutSignalName => "Q",        OutTemp => Results(1),        Paths => (  0 => (PRN_ipd'last_event, tpd_PRN_Q_negedge, TRUE),                    1 => (CLRN_ipd'last_event, tpd_CLRN_Q_negedge, TRUE),                    2 => (CLK_ipd'last_event, tpd_CLK_Q_posedge, TRUE)),        GlitchData => Q_VitalGlitchData,        Mode => DefGlitchMode,        XOn  => XOn,        MsgOn        => MsgOn );    end process;end behave;------  stratixii_mux21 Model----LIBRARY IEEE;use ieee.std_logic_1164.all;use IEEE.VITAL_Timing.all;use work.stratixii_atom_pack.all;entity stratixii_mux21 is    generic(        TimingChecksOn: Boolean := True;        MsgOn: Boolean := DefGlitchMsgOn;        XOn: Boolean := DefGlitchXOn;        InstancePath: STRING := "*";        tpd_A_MO                      :   VitalDelayType01 := DefPropDelay01;        tpd_B_MO                      :   VitalDelayType01 := DefPropDelay01;        tpd_S_MO                      :   VitalDelayType01 := DefPropDelay01;        tipd_A                       :    VitalDelayType01 := DefPropDelay01;        tipd_B                       :    VitalDelayType01 := DefPropDelay01;        tipd_S                       :    VitalDelayType01 := DefPropDelay01);    port (        A : in std_logic := '0';        B : in std_logic := '0';        S : in std_logic := '0';        MO : out std_logic);    attribute VITAL_LEVEL0 of stratixii_mux21 : entity is TRUE;end stratixii_mux21;architecture AltVITAL of stratixii_mux21 is    attribute VITAL_LEVEL0 of AltVITAL : architecture is TRUE;    signal A_ipd, B_ipd, S_ipd  : std_logic;begin    ---------------------    --  INPUT PATH DELAYs    ---------------------    WireDelay : block    begin        VitalWireDelay (A_ipd, A, tipd_A);        VitalWireDelay (B_ipd, B, tipd_B);        VitalWireDelay (S_ipd, S, tipd_S);    end block;    --------------------    --  BEHAVIOR SECTION    --------------------    VITALBehavior : process (A_ipd, B_ipd, S_ipd)    -- output glitch detection variables    VARIABLE MO_GlitchData       : VitalGlitchDataType;    variable tmp_MO : std_logic;    begin        -------------------------        --  Functionality Section        -------------------------        if (S_ipd = '1') then            tmp_MO := B_ipd;        else            tmp_MO := A_ipd;        end if;        ----------------------        --  Path Delay Section        ----------------------        VitalPathDelay01 (        OutSignal => MO,        OutSignalName => "MO",        OutTemp => tmp_MO,        Paths => (  0 => (A_ipd'last_event, tpd_A_MO, TRUE),                    1 => (B_ipd'last_event, tpd_B_MO, TRUE),                    2 => (S_ipd'last_event, tpd_S_MO, TRUE)),        GlitchData => MO_GlitchData,        Mode => DefGlitchMode,        XOn  => XOn,        MsgOn        => MsgOn );    end process;end AltVITAL;------  stratixii_mux41 Model----LIBRARY IEEE;use ieee.std_logic_1164.all;use IEEE.VITAL_Timing.all;use work.stratixii_atom_pack.all;entity stratixii_mux41 is    generic(            TimingChecksOn: Boolean := True;            MsgOn: Boolean := DefGlitchMsgOn;            XOn: Boolean := DefGlitchXOn;            InstancePath: STRING := "*";            tpd_IN0_MO : VitalDelayType01 := DefPropDelay01;            tpd_IN1_MO : VitalDelayType01 := DefPropDelay01;            tpd_IN2_MO : VitalDelayType01 := DefPropDelay01;            tpd_IN3_MO : VitalDelayType01 := DefPropDelay01;            tpd_S_MO : VitalDelayArrayType01(1 downto 0) := (OTHERS => DefPropDelay01);            tipd_IN0 : VitalDelayType01 := DefPropDelay01;            tipd_IN1 : VitalDelayType01 := DefPropDelay01;            tipd_IN2 : VitalDelayType01 := DefPropDelay01;            tipd_IN3 : VitalDelayType01 := DefPropDelay01;            tipd_S : VitalDelayArrayType01(1 downto 0) := (OTHERS => DefPropDelay01)        );    port (            IN0 : in std_logic := '0';            IN1 : in std_logic := '0';            IN2 : in std_logic := '0';            IN3 : in std_logic := '0';            S : in std_logic_vector(1 downto 0) := (OTHERS => '0');            MO : out std_logic        );    attribute VITAL_LEVEL0 of stratixii_mux41 : entity is TRUE;end stratixii_mux41;architecture AltVITAL of stratixii_mux41 is    attribute VITAL_LEVEL0 of AltVITAL : architecture is TRUE;    signal IN0_ipd, IN1_ipd, IN2_ipd, IN3_ipd  : std_logic;    signal S_ipd : std_logic_vector(1 downto 0);begin    ---------------------    --  INPUT PATH DELAYs    ---------------------    WireDelay : block    begin        VitalWireDelay (IN0_ipd, IN0, tipd_IN0);        VitalWireDelay (IN1_ipd, IN1, tipd_IN1);        VitalWireDelay (IN2_ipd, IN2, tipd_IN2);        VitalWireDelay (IN3_ipd, IN3, tipd_IN3);        VitalWireDelay (S_ipd(0), S(0), tipd_S(0));        VitalWireDelay (S_ipd(1), S(1), tipd_S(1));    end block;

⌨️ 快捷键说明

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