📄 orca_io.vhd
字号:
-- ---------------------------------------------------------------------- >>>>>>>>>>>>>>>>>>>>>>>>> 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: /home/dmsys/pvcs/RCSMigTest/rcs/vhdl/pkg/vhdsclibs/data/orca5mg/src/RCS/ORCA_IO.vhd,v 1.4 2005/05/19 20:36:59 pradeep Exp $ -- ------- cell tsall -------LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.vital_timing.all;USE ieee.vital_primitives.all;USE work.global.tsallnet; -- entity declaration --ENTITY tsall IS GENERIC( TimingChecksOn : boolean := FALSE; XOn : boolean := FALSE; MsgOn : boolean := FALSE; InstancePath : string := "tsall"); PORT( tsall : IN std_logic := 'Z');END tsall; -- architecture body --ARCHITECTURE v OF tsall IS BEGIN --------------------- -- input path delays --------------------- WireDelay : BLOCK BEGIN -- empty END BLOCK; -------------------- -- behavior section -------------------- tsallnet <= tsall; END v; ------- cell bb -------LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.vital_timing.all;USE ieee.vital_primitives.all;USE work.global.tsallnet;-- entity declaration --ENTITY bb IS GENERIC( TimingChecksOn : boolean := TRUE; XOn : boolean := FALSE; MsgOn : boolean := TRUE; InstancePath : string := "bb"; tpd_i_b : VitalDelayType01z := (0.001 ns, 0.001 ns, 0.001 ns, 0.001 ns, 0.001 ns, 0.001 ns); tpd_t_b : VitalDelayType01z := (0.001 ns, 0.001 ns, 0.001 ns, 0.001 ns, 0.001 ns, 0.001 ns); tpd_b_o : VitalDelayType01 := (0.001 ns, 0.001 ns); tipd_b : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_i : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_t : VitalDelayType01 := (0.0 ns, 0.0 ns)); PORT( b : INOUT std_logic; i : IN std_logic; t : IN std_logic; o : OUT std_logic); ATTRIBUTE Vital_Level0 OF bb : ENTITY IS TRUE; END bb;-- architecture body --ARCHITECTURE v OF bb IS ATTRIBUTE Vital_Level0 OF v : ARCHITECTURE IS TRUE; SIGNAL b_ipd : std_logic := 'X'; SIGNAL i_ipd : std_logic := 'X'; SIGNAL t_ipd : std_logic := 'X';BEGIN --------------------- -- input path delays --------------------- WireDelay : BLOCK BEGIN VitalWireDelay (b_ipd, b, tipd_b); VitalWireDelay (i_ipd, i, tipd_i); VitalWireDelay (t_ipd, t, tipd_t); END BLOCK; -------------------- -- behavior section -------------------- VitalBehavior : PROCESS (b_ipd, i_ipd, t_ipd, tsallnet) -- functionality results VARIABLE results : std_logic_vector(1 to 2) := (others => 'X'); ALIAS b_zd : std_ulogic IS results(1); ALIAS o_zd : std_ulogic IS results(2); VARIABLE tri : std_logic := 'X'; VARIABLE tpd_tsall_b : VitalDelayType01z := (0.001 ns, 0.001 ns, 0.001 ns, 0.001 ns, 0.001 ns, 0.001 ns); -- output glitch detection VARIABLEs VARIABLE b_GlitchData : VitalGlitchDataType; VARIABLE o_GlitchData : VitalGlitchDataType; BEGIN ------------------------- -- functionality section ------------------------- tri := VitalOR2 (a => NOT(tsallnet), b => t_ipd); b_zd := VitalBUFIF0 (data => i_ipd, enable => tri); o_zd := VitalBUF(b_ipd); ---------------------- -- path delay section ---------------------- VitalPathDelay01z ( OutSignal => b, OutSignalName => "b", OutTemp => b_zd, Paths => (0 => (i_ipd'last_event, tpd_i_b, TRUE), 1 => (t_ipd'last_event, tpd_t_b, TRUE), 2 => (tsallnet'last_event, tpd_tsall_b, TRUE)), GlitchData => b_GlitchData, Mode => OnDetect, XOn => XOn, MsgOn => MsgOn); VitalPathDelay01 ( OutSignal => o, OutSignalName => "o", OutTemp => o_zd, Paths => (0 => (b_ipd'last_event, tpd_b_o, TRUE)), GlitchData => o_GlitchData, Mode => OnDetect, XOn => XOn, MsgOn => MsgOn);END PROCESS;END v;------- cell bbpd -------LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.vital_timing.all;USE ieee.vital_primitives.all;USE work.global.tsallnet;-- entity declaration --ENTITY bbpd IS GENERIC( TimingChecksOn : boolean := TRUE; XOn : boolean := FALSE; MsgOn : boolean := TRUE; InstancePath : string := "bbpd"; tpd_i_b : VitalDelayType01z := (0.001 ns, 0.001 ns, 0.001 ns, 0.001 ns, 0.001 ns, 0.001 ns); tpd_t_b : VitalDelayType01z := (0.001 ns, 0.001 ns, 0.001 ns, 0.001 ns, 0.001 ns, 0.001 ns); tpd_b_o : VitalDelayType01 := (0.001 ns, 0.001 ns); tipd_b : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_i : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_t : VitalDelayType01 := (0.0 ns, 0.0 ns)); PORT( b : INOUT std_logic; i : IN std_logic; t : IN std_logic; o : OUT std_logic); ATTRIBUTE Vital_Level0 OF bbpd : ENTITY IS TRUE; END bbpd;-- architecture body --ARCHITECTURE v OF bbpd IS ATTRIBUTE Vital_Level0 OF v : ARCHITECTURE IS TRUE; SIGNAL b_ipd : std_logic := 'X'; SIGNAL i_ipd : std_logic := 'X'; SIGNAL t_ipd : std_logic := 'X';BEGIN --------------------- -- input path delays --------------------- WireDelay : BLOCK BEGIN VitalWireDelay (b_ipd, b, tipd_b); VitalWireDelay (i_ipd, i, tipd_i); VitalWireDelay (t_ipd, t, tipd_t); END BLOCK; -------------------- -- behavior section -------------------- VitalBehavior : PROCESS (b_ipd, i_ipd, t_ipd, tsallnet) -- functionality results VARIABLE b_ipd2 : std_ulogic := 'X'; VARIABLE results : std_logic_vector(1 to 2) := (others => 'X'); ALIAS b_zd : std_ulogic IS results(1); ALIAS o_zd : std_ulogic IS results(2); VARIABLE tri : std_logic := 'X'; VARIABLE tpd_tsall_b : VitalDelayType01z := (0.001 ns, 0.001 ns, 0.001 ns, 0.001 ns, 0.001 ns, 0.001 ns); -- output glitch detection VARIABLEs VARIABLE b_GlitchData : VitalGlitchDataType; VARIABLE o_GlitchData : VitalGlitchDataType; BEGIN ------------------------- -- functionality section ------------------------- b_ipd2 := VitalIDENT (data => b_ipd, resultmap => ('U','X','0','1','L')); tri := VitalOR2 (a => NOT(tsallnet), b => t_ipd); b_zd := VitalBUFIF0 (data => i_ipd, enable => tri, resultmap => ('U','X','0','1','L')); o_zd := VitalBUF(b_ipd2); ---------------------- -- path delay section ---------------------- VitalPathDelay01z ( OutSignal => b, OutSignalName => "b", OutTemp => b_zd, Paths => (0 => (i_ipd'last_event, tpd_i_b, TRUE), 1 => (t_ipd'last_event, tpd_t_b, TRUE), 2 => (tsallnet'last_event, tpd_tsall_b, TRUE)), GlitchData => b_GlitchData, Mode => OnDetect, XOn => XOn, MsgOn => MsgOn); VitalPathDelay01 ( OutSignal => o, OutSignalName => "o", OutTemp => o_zd, Paths => (0 => (b_ipd'last_event, tpd_b_o, TRUE)), GlitchData => o_GlitchData, Mode => OnDetect, XOn => XOn, MsgOn => MsgOn);END PROCESS;END v;------- cell bbpu -------LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.vital_timing.all;USE ieee.vital_primitives.all;USE work.global.tsallnet;-- entity declaration --ENTITY bbpu IS GENERIC( TimingChecksOn : boolean := TRUE; XOn : boolean := FALSE; MsgOn : boolean := TRUE; InstancePath : string := "bbpu"; tpd_i_b : VitalDelayType01z := (0.001 ns, 0.001 ns, 0.001 ns, 0.001 ns, 0.001 ns, 0.001 ns); tpd_t_b : VitalDelayType01z := (0.001 ns, 0.001 ns, 0.001 ns, 0.001 ns, 0.001 ns, 0.001 ns); tpd_b_o : VitalDelayType01 := (0.001 ns, 0.001 ns); tipd_b : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_i : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_t : VitalDelayType01 := (0.0 ns, 0.0 ns)); PORT( b : INOUT std_logic; i : IN std_logic; t : IN std_logic; o : OUT std_logic); ATTRIBUTE Vital_Level0 OF bbpu : ENTITY IS TRUE; END bbpu;-- architecture body --ARCHITECTURE v OF bbpu IS ATTRIBUTE Vital_Level0 OF v : ARCHITECTURE IS TRUE; SIGNAL b_ipd : std_logic := 'X'; SIGNAL i_ipd : std_logic := 'X'; SIGNAL t_ipd : std_logic := 'X';BEGIN --------------------- -- input path delays --------------------- WireDelay : BLOCK BEGIN VitalWireDelay (b_ipd, b, tipd_b); VitalWireDelay (i_ipd, i, tipd_i); VitalWireDelay (t_ipd, t, tipd_t); END BLOCK; -------------------- -- behavior section -------------------- VitalBehavior : PROCESS (b_ipd, i_ipd, t_ipd, tsallnet) -- functionality results VARIABLE b_ipd2 : std_ulogic := 'X'; VARIABLE results : std_logic_vector(1 to 2) := (others => 'X'); ALIAS b_zd : std_ulogic IS results(1); ALIAS o_zd : std_ulogic IS results(2); VARIABLE tri : std_logic := 'X'; VARIABLE tpd_tsall_b : VitalDelayType01z := (0.001 ns, 0.001 ns, 0.001 ns, 0.001 ns, 0.001 ns, 0.001 ns); -- output glitch detection VARIABLEs VARIABLE b_GlitchData : VitalGlitchDataType; VARIABLE o_GlitchData : VitalGlitchDataType; BEGIN
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -