📄 orca_io.vhd
字号:
------------------------- -- functionality section ------------------------- b_ipd2 := VitalIDENT (data => b_ipd, resultmap => ('U','X','0','1','H')); tri := VitalOR2 (a => NOT(tsallnet), b => t_ipd); b_zd := VitalBUFIF0 (data => i_ipd, enable => tri, resultmap => ('U','X','0','1','H')); 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 bbw -------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 bbw IS GENERIC( Keepermode : boolean := FALSE; TimingChecksOn : boolean := TRUE; XOn : boolean := FALSE; MsgOn : boolean := TRUE; InstancePath : string := "bbw"; 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 bbw : ENTITY IS TRUE;END bbw;-- architecture body --ARCHITECTURE v OF bbw IS ATTRIBUTE Vital_Level0 OF v : ARCHITECTURE IS TRUE; SIGNAL b_int : std_logic := 'L'; 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 -------------------- KEEP : PROCESS (b) BEGIN IF (b'event) THEN IF (b = '1') THEN b_int <= 'H'; ELSIF (b = '0') THEN b_int <= 'L'; END IF; END IF; END PROCESS; b <= b_int; 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 ib -------LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.vital_timing.all;USE ieee.vital_primitives.all;-- entity declaration --ENTITY ib IS GENERIC( TimingChecksOn : boolean := TRUE; XOn : boolean := FALSE; MsgOn : boolean := TRUE; InstancePath : string := "ib"; tpd_i_o : VitalDelayType01 := (0.001 ns, 0.001 ns); tipd_i : VitalDelayType01 := (0.0 ns, 0.0 ns)); PORT( i : IN std_logic; o : OUT std_logic); ATTRIBUTE Vital_Level0 OF ib : ENTITY IS TRUE; END ib;-- architecture body --ARCHITECTURE v OF ib IS ATTRIBUTE Vital_Level0 OF v : ARCHITECTURE IS TRUE; SIGNAL i_ipd : std_logic := 'X';BEGIN --------------------- -- input path delays --------------------- WireDelay : BLOCK BEGIN VitalWireDelay (i_ipd, i, tipd_i); END BLOCK; -------------------- -- behavior section -------------------- VitalBehavior : PROCESS (i_ipd) -- functionality results VARIABLE results : std_logic_vector(1 to 1) := (others => 'X'); ALIAS o_zd : std_ulogic IS results(1); -- output glitch detection VARIABLEs VARIABLE o_GlitchData : VitalGlitchDataType; BEGIN ------------------------- -- functionality section ------------------------- o_zd := VitalBUF(i_ipd); ---------------------- -- path delay section ---------------------- VitalPathDelay01 ( OutSignal => o, OutSignalName => "o", OutTemp => o_zd, Paths => (0 => (i_ipd'last_event, (tpd_i_o), TRUE)), GlitchData => o_GlitchData, Mode => OnDetect, XOn => XOn, MsgOn => MsgOn);END PROCESS;END v;------- cell ibpd -------LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.vital_timing.all;USE ieee.vital_primitives.all;-- entity declaration --ENTITY ibpd IS GENERIC( TimingChecksOn : boolean := TRUE; XOn : boolean := FALSE; MsgOn : boolean := TRUE; InstancePath : string := "ibpd"; tpd_i_o : VitalDelayType01 := (0.001 ns, 0.001 ns); tipd_i : VitalDelayType01 := (0.0 ns, 0.0 ns)); PORT( i : IN std_logic; o : OUT std_logic); ATTRIBUTE Vital_Level0 OF ibpd : ENTITY IS TRUE; END ibpd;-- architecture body --ARCHITECTURE v OF ibpd IS ATTRIBUTE Vital_Level0 OF v : ARCHITECTURE IS TRUE; SIGNAL i_ipd : std_logic := 'X';BEGIN --------------------- -- input path delays --------------------- WireDelay : BLOCK BEGIN VitalWireDelay (i_ipd, i, tipd_i); END BLOCK; -------------------- -- behavior section -------------------- VitalBehavior : PROCESS (i_ipd) -- functionality results VARIABLE i_ipd2 : std_ulogic := 'X'; VARIABLE results : std_logic_vector(1 to 1) := (others => 'X'); ALIAS o_zd : std_ulogic IS results(1); -- output glitch detection VARIABLEs VARIABLE o_GlitchData : VitalGlitchDataType; BEGIN ------------------------- -- functionality section ------------------------- i_ipd2 := VitalIDENT (data => i_ipd, resultmap => ('U','X','0','1','L')); o_zd := VitalBUF(i_ipd2); ---------------------- -- path delay section ---------------------- VitalPathDelay01 ( OutSignal => o, OutSignalName => "o", OutTemp => o_zd, Paths => (0 => (i_ipd'last_event, (tpd_i_o), TRUE)), GlitchData => o_GlitchData, Mode => OnDetect, XOn => XOn, MsgOn => MsgOn);END PROCESS;END v;------- cell ibpu -------LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.vital_timing.all;USE ieee.vital_primitives.all;-- entity declaration --ENTITY ibpu IS GENERIC( TimingChecksOn : boolean := TRUE; XOn : boolean := FALSE; MsgOn : boolean := TRUE; InstancePath : string := "ibpu"; tpd_i_o : VitalDelayType01 := (0.001 ns, 0.001 ns); tipd_i : VitalDelayType01 := (0.0 ns, 0.0 ns)); PORT( i : IN std_logic; o : OUT std_logic); ATTRIBUTE Vital_Level0 OF ibpu : ENTITY IS TRUE; END ibpu;-- architecture body --ARCHITECTURE v OF ibpu IS ATTRIBUTE Vital_Level0 OF v : ARCHITECTURE IS TRUE; SIGNAL i_ipd : std_logic := 'X';BEGIN --------------------- -- input path delays --------------------- WireDelay : BLOCK BEGIN VitalWireDelay (i_ipd, i, tipd_i);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -