📄 orca_cmb.vhd
字号:
-- architecture body --LIBRARY ieee;USE ieee.vital_primitives.all;ARCHITECTURE v OF and2 IS ATTRIBUTE Vital_Level0 OF v : ARCHITECTURE IS TRUE; SIGNAL a_ipd : std_logic := 'X'; SIGNAL b_ipd : std_logic := 'X';BEGIN --------------------- -- input path delays --------------------- WireDelay : BLOCK BEGIN VitalWireDelay (a_ipd, a, tipd_a); VitalWireDelay (b_ipd, b, tipd_b); END BLOCK; -------------------- -- behavior section -------------------- VitalBehavior : PROCESS (a_ipd, b_ipd) -- functionality results VARIABLE results : std_logic_vector(1 to 1) := (others => 'X'); ALIAS z_zd : std_ulogic IS results(1); -- output glitch detection VARIABLEs VARIABLE z_GlitchData : VitalGlitchDataType; BEGIN IF (TimingChecksOn) THEN ----------------------------------- -- no timing checks for a comb gate ----------------------------------- END IF; ------------------------- -- functionality section ------------------------- z_zd := (a_ipd AND b_ipd); ---------------------- -- path delay section ---------------------- VitalPathDelay01 ( OutSignal => z, OutSignalName => "z", OutTemp => z_zd, Paths => (0 => (a_ipd'last_event, tpd_a_z, TRUE), 1 => (b_ipd'last_event, tpd_b_z, TRUE)), GlitchData => z_GlitchData, Mode => OnDetect, XOn => XOn, MsgOn => MsgOn);END PROCESS;END v;------- cell and3 -----LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.vital_timing.all;-- entity declaration --ENTITY and3 IS GENERIC( TimingChecksOn : boolean := TRUE; XOn : boolean := FALSE; MsgOn : boolean := TRUE; InstancePath : string := "and3"; tpd_a_z : VitalDelayType01 := (0.01 ns, 0.01 ns); tpd_b_z : VitalDelayType01 := (0.01 ns, 0.01 ns); tpd_c_z : VitalDelayType01 := (0.01 ns, 0.01 ns); tipd_a : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_b : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_c : VitalDelayType01 := (0.0 ns, 0.0 ns)); PORT( a : IN std_logic; b : IN std_logic; c : IN std_logic; z : OUT std_logic); ATTRIBUTE Vital_Level0 OF and3 : ENTITY IS TRUE;END and3;-- architecture body --LIBRARY ieee;USE ieee.vital_primitives.all;ARCHITECTURE v OF and3 IS ATTRIBUTE Vital_Level0 OF v : ARCHITECTURE IS TRUE; SIGNAL a_ipd : std_logic := 'X'; SIGNAL b_ipd : std_logic := 'X'; SIGNAL c_ipd : std_logic := 'X';BEGIN --------------------- -- input path delays --------------------- WireDelay : BLOCK BEGIN VitalWireDelay (a_ipd, a, tipd_a); VitalWireDelay (b_ipd, b, tipd_b); VitalWireDelay (c_ipd, c, tipd_c); END BLOCK; -------------------- -- behavior section -------------------- VitalBehavior : PROCESS (a_ipd, b_ipd, c_ipd) -- functionality results VARIABLE results : std_logic_vector(1 to 1) := (others => 'X'); ALIAS z_zd : std_ulogic IS results(1); -- output glitch detection VARIABLEs VARIABLE z_GlitchData : VitalGlitchDataType; BEGIN IF (TimingChecksOn) THEN ----------------------------------- -- no timing checks for a comb gate ----------------------------------- END IF; ------------------------- -- functionality section ------------------------- z_zd := (a_ipd AND b_ipd AND c_ipd); ---------------------- -- path delay section ---------------------- VitalPathDelay01 ( OutSignal => z, OutSignalName => "z", OutTemp => z_zd, Paths => (0 => (a_ipd'last_event, tpd_a_z, TRUE), 1 => (b_ipd'last_event, tpd_b_z, TRUE), 2 => (c_ipd'last_event, tpd_c_z, TRUE)), GlitchData => z_GlitchData, Mode => OnDetect, XOn => XOn, MsgOn => MsgOn);END PROCESS;END v;------- cell and4 -----LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.vital_timing.all;-- entity declaration --ENTITY and4 IS GENERIC( TimingChecksOn : boolean := TRUE; XOn : boolean := FALSE; MsgOn : boolean := TRUE; InstancePath : string := "and4"; tpd_a_z : VitalDelayType01 := (0.01 ns, 0.01 ns); tpd_b_z : VitalDelayType01 := (0.01 ns, 0.01 ns); tpd_c_z : VitalDelayType01 := (0.01 ns, 0.01 ns); tpd_d_z : VitalDelayType01 := (0.01 ns, 0.01 ns); tipd_a : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_b : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_c : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_d : VitalDelayType01 := (0.0 ns, 0.0 ns)); PORT( a : IN std_logic; b : IN std_logic; c : IN std_logic; d : IN std_logic; z : OUT std_logic); ATTRIBUTE Vital_Level0 OF and4 : ENTITY IS TRUE;END and4;-- architecture body --LIBRARY ieee;USE ieee.vital_primitives.all;ARCHITECTURE v OF and4 IS ATTRIBUTE Vital_Level0 OF v : ARCHITECTURE IS TRUE; SIGNAL a_ipd : std_logic := 'X'; SIGNAL b_ipd : std_logic := 'X'; SIGNAL c_ipd : std_logic := 'X'; SIGNAL d_ipd : std_logic := 'X';BEGIN --------------------- -- input path delays --------------------- WireDelay : BLOCK BEGIN VitalWireDelay (a_ipd, a, tipd_a); VitalWireDelay (b_ipd, b, tipd_b); VitalWireDelay (c_ipd, c, tipd_c); VitalWireDelay (d_ipd, d, tipd_d); END BLOCK; -------------------- -- behavior section -------------------- VitalBehavior : PROCESS (a_ipd, b_ipd, c_ipd, d_ipd) -- functionality results VARIABLE results : std_logic_vector(1 to 1) := (others => 'X'); ALIAS z_zd : std_ulogic IS results(1); -- output glitch detection VARIABLEs VARIABLE z_GlitchData : VitalGlitchDataType; BEGIN IF (TimingChecksOn) THEN ----------------------------------- -- no timing checks for a comb gate ----------------------------------- END IF; ------------------------- -- functionality section ------------------------- z_zd := (a_ipd AND b_ipd AND c_ipd AND d_ipd); ---------------------- -- path delay section ---------------------- VitalPathDelay01 ( OutSignal => z, OutSignalName => "z", OutTemp => z_zd, Paths => (0 => (a_ipd'last_event, tpd_a_z, TRUE), 1 => (b_ipd'last_event, tpd_b_z, TRUE), 2 => (c_ipd'last_event, tpd_c_z, TRUE), 3 => (d_ipd'last_event, tpd_d_z, TRUE)), GlitchData => z_GlitchData, Mode => OnDetect, XOn => XOn, MsgOn => MsgOn);END PROCESS;END v;------- cell and5 -----LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.vital_timing.all;-- entity declaration --ENTITY and5 IS GENERIC( TimingChecksOn : boolean := TRUE; XOn : boolean := FALSE; MsgOn : boolean := TRUE; InstancePath : string := "and5"; tpd_a_z : VitalDelayType01 := (0.01 ns, 0.01 ns); tpd_b_z : VitalDelayType01 := (0.01 ns, 0.01 ns); tpd_c_z : VitalDelayType01 := (0.01 ns, 0.01 ns); tpd_d_z : VitalDelayType01 := (0.01 ns, 0.01 ns); tpd_e_z : VitalDelayType01 := (0.01 ns, 0.01 ns); tipd_a : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_b : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_c : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_d : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_e : VitalDelayType01 := (0.0 ns, 0.0 ns)); PORT( a : IN std_logic; b : IN std_logic; c : IN std_logic; d : IN std_logic; e : IN std_logic; z : OUT std_logic); ATTRIBUTE Vital_Level0 OF and5 : ENTITY IS TRUE;END and5;-- architecture body --LIBRARY ieee;USE ieee.vital_primitives.all;ARCHITECTURE v OF and5 IS ATTRIBUTE Vital_Level0 OF v : ARCHITECTURE IS TRUE; SIGNAL a_ipd : std_logic := 'X'; SIGNAL b_ipd : std_logic := 'X'; SIGNAL c_ipd : std_logic := 'X'; SIGNAL d_ipd : std_logic := 'X'; SIGNAL e_ipd : std_logic := 'X';BEGIN --------------------- -- input path delays --------------------- WireDelay : BLOCK BEGIN VitalWireDelay (a_ipd, a, tipd_a); VitalWireDelay (b_ipd, b, tipd_b); VitalWireDelay (c_ipd, c, tipd_c); VitalWireDelay (d_ipd, d, tipd_d); VitalWireDelay (e_ipd, e, tipd_e); END BLOCK; -------------------- -- behavior section -------------------- VitalBehavior : PROCESS (a_ipd, b_ipd, c_ipd, d_ipd, e_ipd) -- functionality results VARIABLE results : std_logic_vector(1 to 1) := (others => 'X'); ALIAS z_zd : std_ulogic IS results(1); -- output glitch detection VARIABLEs VARIABLE z_GlitchData : VitalGlitchDataType; BEGIN IF (TimingChecksOn) THEN ----------------------------------- -- no timing checks for a comb gate ----------------------------------- END IF; ------------------------- -- functionality section ------------------------- z_zd := (a_ipd AND b_ipd AND c_ipd AND d_ipd AND e_ipd); ---------------------- -- path delay section ---------------------- VitalPathDelay01 ( OutSignal => z, OutSignalName => "z", OutTemp => z_zd, Paths => (0 => (a_ipd'last_event, tpd_a_z, TRUE), 1 => (b_ipd'last_event, tpd_b_z, TRUE), 2 => (c_ipd'last_event, tpd_c_z, TRUE), 3 => (d_ipd'last_event, tpd_d_z, TRUE), 4 => (e_ipd'last_event, tpd_e_z, TRUE)), GlitchData => z_GlitchData, Mode => OnDetect, XOn => XOn, MsgOn => MsgOn);END PROCESS;END v;------- cell fadd2 -----LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.vital_timing.all;-- entity declaration --ENTITY fadd2 IS GENERIC( TimingChecksOn : boolean := TRUE; XOn : boolean := FALSE; MsgOn : boolean := TRUE; InstancePath : string := "fadd2"; tpd_a0_cout0 : VitalDelayType01 := (0.01 ns, 0.01 ns); tpd_a1_cout0 : VitalDelayType01 := (0.01 ns, 0.01 ns); tpd_b0_cout0 : VitalDelayType01 := (0.01 ns, 0.01 ns); tpd_b1_cout0 : VitalDelayType01 := (0.01 ns, 0.01 ns); tpd_ci_cout0 : VitalDelayType01 := (0.01 ns, 0.01 ns); tpd_a0_cout1 : VitalDelayType01 := (0.01 ns, 0.01 ns); tpd_a1_cout1 : VitalDelayType01 := (0.01 ns, 0.01 ns); tpd_b0_cout1 : VitalDelayType01 := (0.01 ns, 0.01 ns); tpd_b1_cout1 : VitalDelayType01 := (0.01 ns, 0.01 ns); tpd_ci_cout1 : VitalDelayType01 := (0.01 ns, 0.01 ns); tpd_a0_s0 : VitalDelayType01 := (0.01 ns, 0.01 ns); tpd_a0_s1 : VitalDelayType01 := (0.01 ns, 0.01 ns); tpd_a1_s0 : VitalDelayType01 := (0.01 ns, 0.01 ns); tpd_a1_s1 : VitalDelayType01 := (0.01 ns, 0.01 ns); tpd_b0_s0 : VitalDelayType01 := (0.01 ns, 0.01 ns); tpd_b0_s1 : VitalDelayType01 := (0.01 ns, 0.01 ns); tpd_b1_s0 : VitalDelayType01 := (0.01 ns, 0.01 ns);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -