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

📄 orca.vhd

📁 free hardware ip core about sparcv8,a soc cpu in vhdl
💻 VHD
📖 第 1 页 / 共 5 页
字号:
	   -- 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) := "10";   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 fd1p3bx -------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 fd1p3bx IS    GENERIC (        gsr             : String  := "ENABLED";        timingcheckson  : boolean := TRUE;        XOn             : boolean := FALSE;        MsgOn           : boolean := TRUE;        InstancePath	: string := "fd1p3bx";        -- propagation delays        tpd_ck_q	: VitalDelayType01 := (0.001 ns, 0.001 ns);        tpd_pd_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);        tipd_pd         : 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;        tperiod_pd      	: VitalDelayType := 0.001 ns;        tpw_pd_posedge		: VitalDelayType := 0.001 ns;        tpw_pd_negedge		: VitalDelayType := 0.001 ns);     PORT (        d               : IN std_logic;        sp              : IN std_logic;        pd              : IN std_logic;        ck              : IN std_logic;        q               : OUT std_logic);    ATTRIBUTE Vital_Level0 OF fd1p3bx : ENTITY IS TRUE;END fd1p3bx ; -- architecture body --ARCHITECTURE v OF fd1p3bx 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';    SIGNAL pd_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);       VitalWireDelay(pd_ipd, pd, tipd_pd);    END BLOCK;   --------------------   --  behavior section   --------------------   VitalBehavior : PROCESS (d_ipd, sp_ipd, ck_ipd, pd_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	( '-', '1', '-', '-', '-', '-', '1', '0' ),  -- async. preset 	( '-', '0', '0', '-', '-', '-', 'S', 'S' ),  -- clock disabled	( '-', '0', '1', '/', '0', '-', '0', '1' ),  -- low d->q on rising edge ck	( '-', '0', '1', '/', '1', '-', '1', '0' ),  -- high d->q on rising edge ck	( '-', '0', '1', '/', 'X', '-', 'X', 'X' ),  -- clock an x if d is x        ( '-', '0', 'X', '/', '-', '-', 'X', 'X' ),  -- ce is x on rising edge of ck	( '-', '0', '-', '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 tviol_pd    : X01 := '0';   VARIABLE d_ck_TimingDatash  : VitalTimingDataType;   VARIABLE sp_ck_TimingDatash : VitalTimingDataType;   VARIABLE periodcheckinfo_ck : VitalPeriodDataType;   VARIABLE periodcheckinfo_pd : 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) := "10";   ALIAS q_zd 		: std_ulogic IS results(1);   VARIABLE preset      : std_logic := 'X';   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 pd_ipd='0' 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' AND pd_ipd='0'),             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);        VitalPeriodPulseCheck (	    TestSignal => pd_ipd,             TestSignalname => "pd", 	    Period => tperiod_pd,            PulseWidthHigh => tpw_pd_posedge, 	    PulseWidthLow => tpw_pd_negedge, 	    Perioddata => periodcheckinfo_pd,             Violation => tviol_pd, 	    MsgOn => MsgOn,             XOn => XOn, 	    HeaderMsg => InstancePath,             CheckEnabled => TRUE, 	    MsgSeverity => Warning);    END IF;     -----------------------------------    -- functionality section.    -----------------------------------    Violation := tviol_d OR tviol_sp OR tviol_ck OR tviol_pd;    IF (gsr = "DISABLED") THEN       set_reset := purnet;    ELSE       set_reset := purnet AND gsrnet;    END IF;     preset := VitalOR2 (a => not(set_reset), b => pd_ipd);      VitalStateTable (StateTable => ff_table,	    DataIn => (Violation, preset, 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 => (pd_ipd'last_event, tpd_pd_q, TRUE),		3 => (gsrnet'last_event, tpd_gsr_q, TRUE),		4 => (purnet'last_event, tpd_pur_q, TRUE)),      GlitchData => q_GlitchData,      Mode => OnDetect,       XOn => XOn,       MsgOn => MsgOn);END PROCESS; END v;------- cell fd1p3dx -------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 fd1p3dx IS    GENERIC (        gsr             : String  := "ENABLED";        timingcheckson	: boolean := TRUE;        XOn             : boolean := FALSE;        MsgOn           : boolean := TRUE;        InstancePath	: string := "fd1p3dx";        -- propagation delays        tpd_ck_q	: VitalDelayType01 := (0.001 ns, 0.001 ns);        tpd_cd_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);        tipd_cd         : 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;        tperiod_cd      	: VitalDelayType := 0.001 ns;        tpw_cd_posedge		: VitalDelayType := 0.001 ns;        tpw_cd_negedge		: VitalDelayType := 0.001 ns);     PORT (        d               : IN std_logic;        sp              : IN std_logic;        cd              : IN std_logic;        ck              : IN std_logic;        q               : OUT std_logic);

⌨️ 快捷键说明

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