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

📄 orca.vhd

📁 free hardware ip core about sparcv8,a soc cpu in vhdl
💻 VHD
📖 第 1 页 / 共 5 页
字号:
-- ---------------------------------------------------------------------- >>>>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<-- ---------------------------------------------------------------------- Copyright (c) 2005 by Lattice Semiconductor Corporation-- --------------------------------------------------------------------------                     Lattice Semiconductor Corporation--                     5555 NE Moore Court--                     Hillsboro, OR 97214--                     U.S.A.----                     TEL: 1-800-Lattice  (USA and Canada)--                          1-408-826-6000 (other locations)----                     web: http://www.latticesemi.com/--                     email: techsupport@latticesemi.com---- ------------------------------------------------------------------------ Simulation Library File for EC/XP---- $Header: G:\\CVS_REPOSITORY\\CVS_MACROS/LEON3SDE/ALTERA/grlib-eval-1.0.4/lib/tech/ec/ec/ORCA_SEQ.vhd,v 1.1 2005/12/06 13:00:24 tame Exp $ -- ----- cell gsr -------LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.vital_timing.all;USE ieee.vital_primitives.all;USE work.global.gsrnet;  -- entity declaration --ENTITY gsr IS   GENERIC(      timingcheckson  : boolean := FALSE;      XOn             : boolean := FALSE;      MsgOn           : boolean := FALSE;      InstancePath    : string := "gsr");    PORT(      gsr             : IN std_logic := 'Z');END gsr; -- architecture body --ARCHITECTURE v OF gsr IS BEGIN    ---------------------   --  input path delays   ---------------------   WireDelay : BLOCK   BEGIN   --  empty   END BLOCK;    --------------------   --  behavior section   --------------------   gsrnet <= gsr; END v;------- cell pur -------LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.vital_timing.all;USE ieee.vital_primitives.all;USE work.global.purnet;  -- entity declaration --ENTITY pur IS   GENERIC(      timingcheckson  : boolean := FALSE;      XOn             : boolean := FALSE;      MsgOn           : boolean := FALSE;      InstancePath    : string := "pur");    PORT(      pur             : IN std_logic := 'Z'); END pur; -- architecture body --ARCHITECTURE v OF pur IS BEGIN    ---------------------   --  input path delays   ---------------------   WireDelay : BLOCK   BEGIN   --  empty   END BLOCK;    --------------------   --  behavior section   --------------------   purnet <= pur; END v;------- cell fd1p3ax -------LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.vital_timing.all;USE ieee.vital_primitives.all;USE work.global.gsrnet;USE work.global.purnet; ENTITY fd1p3ax IS    GENERIC (        gsr             : String  := "ENABLED";        timingcheckson  : boolean := TRUE;        XOn             : boolean := FALSE;        MsgOn           : boolean := TRUE;        InstancePath	: string := "fd1p3ax";        -- propagation delays        tpd_ck_q	: VitalDelayType01 := (0.001 ns, 0.001 ns);        tpd_sp_q	: VitalDelayType01 := (0.001 ns, 0.001 ns);        -- setup and hold constraints        tsetup_d_ck_noedge_posedge	: VitalDelayType := 0.0 ns;        thold_d_ck_noedge_posedge	: VitalDelayType := 0.0 ns;        tsetup_sp_ck_noedge_posedge	: VitalDelayType := 0.0 ns;        thold_sp_ck_noedge_posedge	: VitalDelayType := 0.0 ns;        -- input SIGNAL delays        tipd_d		: VitalDelayType01 := (0.0 ns, 0.0 ns);        tipd_sp		: VitalDelayType01 := (0.0 ns, 0.0 ns);        tipd_ck		: VitalDelayType01 := (0.0 ns, 0.0 ns);        -- pulse width constraints        tperiod_ck	: VitalDelayType := 0.001 ns;        tpw_ck_posedge	: VitalDelayType := 0.001 ns;        tpw_ck_negedge	: VitalDelayType := 0.001 ns);     PORT (        d               : IN std_logic;        sp              : IN std_logic;        ck              : IN std_logic;        q               : OUT std_logic);    ATTRIBUTE Vital_Level0 OF fd1p3ax : ENTITY IS TRUE;END fd1p3ax ; -- architecture body --ARCHITECTURE v OF fd1p3ax IS    ATTRIBUTE Vital_Level0 OF v : ARCHITECTURE IS TRUE;    SIGNAL d_ipd   : std_logic := '0';    SIGNAL ck_ipd  : std_logic := '0';    SIGNAL sp_ipd  : std_logic := '0'; BEGIN    ---------------------   --  input path delays   ---------------------    WireDelay : BLOCK    BEGIN       VitalWireDelay(d_ipd, d, tipd_d);       VitalWireDelay(ck_ipd, ck, tipd_ck);       VitalWireDelay(sp_ipd, sp, tipd_sp);    END BLOCK;   --------------------   --  behavior section   --------------------   VitalBehavior : PROCESS (d_ipd, sp_ipd, ck_ipd, gsrnet, purnet)   CONSTANT ff_table : VitalStateTableType (1 to 8, 1 to 8) := (      -- viol  clr  ce   ck    d    q  qnew qnnew	( 'X', '-', '-', '-', '-', '-', 'X', 'X' ),  -- timing Violation	( '-', '0', '-', '-', '-', '-', '0', '1' ),  -- async. clear (active low)	( '-', '1', '0', '-', '-', '-', 'S', 'S' ),  -- clock disabled	( '-', '1', '1', '/', '1', '-', '1', '0' ),  -- high d->q on rising edge ck	( '-', '1', '1', '/', '0', '-', '0', '1' ),  -- low d->q on rising edge ck	( '-', '1', '1', '/', 'X', '-', 'X', 'X' ),  -- clock an x if d is x        ( '-', '1', 'X', '/', '-', '-', 'X', 'X' ),  -- ce is x on rising edge of ck	( '-', '1', '-', 'B', '-', '-', 'S', 'S' ) );  -- non-x clock (e.g. falling) preserve q	   -- timing check results    VARIABLE tviol_ck    : X01 := '0';   VARIABLE tviol_d     : X01 := '0';   VARIABLE tviol_sp    : X01 := '0';   VARIABLE d_ck_TimingDatash  : VitalTimingDataType;   VARIABLE sp_ck_TimingDatash : VitalTimingDataType;   VARIABLE periodcheckinfo_ck : VitalPeriodDataType;    -- functionality results    VARIABLE set_reset : std_logic := '1';   VARIABLE Violation   : X01 := '0';   VARIABLE prevdata    : std_logic_vector (0 to 5) := (others=>'X');   VARIABLE results     : std_logic_vector (1 to 2) := "01";   ALIAS q_zd 		: std_ulogic IS results(1);   VARIABLE tpd_gsr_q 	: VitalDelayType01 := (0.001 ns, 0.001 ns);   VARIABLE tpd_pur_q 	: VitalDelayType01 := (0.001 ns, 0.001 ns);    -- output glitch detection VARIABLEs   VARIABLE q_GlitchData     : VitalGlitchDataType;    BEGIN   ------------------------   --  timing check section   ------------------------     IF (timingcheckson) THEN        VitalSetupHoldCheck (	    TestSignal => d_ipd,             TestSignalname => "d", 	    RefSignal => ck_ipd,             RefSignalName => "ck", 	    SetupHigh => tsetup_d_ck_noedge_posedge,             SetupLow => tsetup_d_ck_noedge_posedge,            HoldHigh => thold_d_ck_noedge_posedge,             HoldLow => thold_d_ck_noedge_posedge,            CheckEnabled => (set_reset='1' AND sp_ipd='1'),            RefTransition => '/',             MsgOn => MsgOn,             XOn => XOn, 	    HeaderMsg => InstancePath,             TimingData => d_ck_timingdatash, 	    Violation => tviol_d,             MsgSeverity => Warning);        VitalSetupHoldCheck (	    TestSignal => sp_ipd,             TestSignalname => "sp", 	    RefSignal => ck_ipd,             RefSignalName => "ck", 	    SetupHigh => tsetup_sp_ck_noedge_posedge,             SetupLow => tsetup_sp_ck_noedge_posedge,            HoldHigh => thold_sp_ck_noedge_posedge,             HoldLow => thold_sp_ck_noedge_posedge,            CheckEnabled => (set_reset='1'),             RefTransition => '/', 	    MsgOn => MsgOn,             XOn => XOn, 	    HeaderMsg => InstancePath,             TimingData => sp_ck_timingdatash, 	    Violation => tviol_sp,             MsgSeverity => Warning);        VitalPeriodPulseCheck (	    TestSignal => ck_ipd,             TestSignalname => "ck", 	    Period => tperiod_ck,            PulseWidthHigh => tpw_ck_posedge, 	    PulseWidthLow => tpw_ck_negedge, 	    Perioddata => periodcheckinfo_ck,             Violation => tviol_ck, 	    MsgOn => MsgOn,             XOn => XOn, 	    HeaderMsg => InstancePath,             CheckEnabled => TRUE, 	    MsgSeverity => Warning);    END IF;     -----------------------------------    -- functionality section.    -----------------------------------    Violation := tviol_d OR tviol_sp OR tviol_ck;    IF (gsr = "DISABLED") THEN       set_reset := purnet;    ELSE       set_reset := purnet AND gsrnet;    END IF;     VitalStateTable (StateTable => ff_table,	    DataIn => (Violation, set_reset, sp_ipd, ck_ipd, d_ipd),	    Numstates => 1,	    Result =>results,	    PreviousDataIn => prevdata);    -----------------------------------    -- path delay section.    -----------------------------------    VitalPathDelay01 (      OutSignal => q,      OutSignalname => "q",      OutTemp => q_zd,      Paths => (0 => (InputChangeTime => ck_ipd'last_event, 	              PathDelay => tpd_ck_q, 		      PathCondition => TRUE),		1 => (sp_ipd'last_event, tpd_sp_q, TRUE),		2 => (gsrnet'last_event, tpd_gsr_q, TRUE),		3 => (purnet'last_event, tpd_pur_q, TRUE)),      GlitchData => q_GlitchData,      Mode => OnDetect,       XOn => XOn,       MsgOn => MsgOn); END PROCESS; END v;------- cell fd1p3ay -------LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.vital_timing.all;USE ieee.vital_primitives.all;USE work.global.gsrnet;USE work.global.purnet; ENTITY fd1p3ay IS    GENERIC (        gsr             : String  := "ENABLED";        timingcheckson  : boolean := TRUE;        XOn             : boolean := FALSE;        MsgOn           : boolean := TRUE;        InstancePath	: string := "fd1p3ay";        -- propagation delays        tpd_ck_q	: VitalDelayType01 := (0.001 ns, 0.001 ns);        tpd_sp_q	: VitalDelayType01 := (0.001 ns, 0.001 ns);        -- setup and hold constraints        tsetup_d_ck_noedge_posedge	: VitalDelayType := 0.0 ns;        thold_d_ck_noedge_posedge	: VitalDelayType := 0.0 ns;        tsetup_sp_ck_noedge_posedge	: VitalDelayType := 0.0 ns;        thold_sp_ck_noedge_posedge	: VitalDelayType := 0.0 ns;        -- input SIGNAL delays        tipd_d		: VitalDelayType01 := (0.0 ns, 0.0 ns);        tipd_sp		: VitalDelayType01 := (0.0 ns, 0.0 ns);        tipd_ck		: VitalDelayType01 := (0.0 ns, 0.0 ns);        -- pulse width constraints        tperiod_ck	: VitalDelayType := 0.001 ns;        tpw_ck_posedge		: VitalDelayType := 0.001 ns;        tpw_ck_negedge		: VitalDelayType := 0.001 ns);     PORT (        d               : IN std_logic;        sp              : IN std_logic;        ck              : IN std_logic;        q               : OUT std_logic);    ATTRIBUTE Vital_Level0 OF fd1p3ay : ENTITY IS TRUE;END fd1p3ay ; -- architecture body --ARCHITECTURE v OF fd1p3ay IS    ATTRIBUTE Vital_Level0 OF v : ARCHITECTURE IS TRUE;    SIGNAL d_ipd   : std_logic := '0';    SIGNAL ck_ipd  : std_logic := '0';    SIGNAL sp_ipd  : std_logic := '0'; BEGIN    ---------------------   --  input path delays   ---------------------    WireDelay : BLOCK    BEGIN       VitalWireDelay(d_ipd, d, tipd_d);       VitalWireDelay(ck_ipd, ck, tipd_ck);       VitalWireDelay(sp_ipd, sp, tipd_sp);    END BLOCK;   --------------------   --  behavior section   --------------------   VitalBehavior : PROCESS (d_ipd, sp_ipd, ck_ipd, gsrnet, purnet)   CONSTANT ff_table : VitalStateTableType (1 to 8, 1 to 8) := (      -- viol  pre  ce   ck    d    q  qnew qnnew	( 'X', '-', '-', '-', '-', '-', 'X', 'X' ),  -- timing Violation	( '-', '0', '-', '-', '-', '-', '1', '0' ),  -- async. preset (active low)	( '-', '1', '0', '-', '-', '-', 'S', 'S' ),  -- clock disabled	( '-', '1', '1', '/', '0', '-', '0', '1' ),  -- low d->q on rising edge ck	( '-', '1', '1', '/', '1', '-', '1', '0' ),  -- high d->q on rising edge ck	( '-', '1', '1', '/', 'X', '-', 'X', 'X' ),  -- clock an x if d is x        ( '-', '1', 'X', '/', '-', '-', 'X', 'X' ),  -- ce is x on rising edge of ck	( '-', '1', '-', 'B', '-', '-', 'S', 'S' ) );  -- non-x clock (e.g. falling) preserve q

⌨️ 快捷键说明

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