📄 orca_cmb.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/rel01/env5_1a.34/vhdl/pkg/vhdsclibs/data/orca5mg/src/RCS/ORCA_CMB.vhd,v 1.5 2005/05/19 20:36:59 pradeep Exp $ --------- cell ageb2 -----LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.vital_timing.all;-- entity declaration --ENTITY ageb2 IS GENERIC( TimingChecksOn : boolean := TRUE; XOn : boolean := FALSE; MsgOn : boolean := TRUE; InstancePath : string := "ageb4"; tpd_a0_ge : VitalDelayType01 := (0.01 ns, 0.01 ns); tpd_a1_ge : VitalDelayType01 := (0.01 ns, 0.01 ns); tpd_b0_ge : VitalDelayType01 := (0.01 ns, 0.01 ns); tpd_b1_ge : VitalDelayType01 := (0.01 ns, 0.01 ns); tpd_ci_ge : VitalDelayType01 := (0.01 ns, 0.01 ns); tipd_a0 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_a1 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_b0 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_b1 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_ci : VitalDelayType01 := (0.0 ns, 0.0 ns)); PORT( a0 : IN std_logic; a1 : IN std_logic; b0 : IN std_logic; b1 : IN std_logic; ci : IN std_logic := '1'; ge : OUT std_logic); ATTRIBUTE Vital_Level0 OF ageb2 : ENTITY IS TRUE;END ageb2;-- architecture body --LIBRARY ieee;USE ieee.vital_primitives.all;ARCHITECTURE v OF ageb2 IS ATTRIBUTE Vital_Level0 OF v : ARCHITECTURE IS TRUE; SIGNAL a0_ipd : std_logic := 'X'; SIGNAL a1_ipd : std_logic := 'X'; SIGNAL b0_ipd : std_logic := 'X'; SIGNAL b1_ipd : std_logic := 'X'; SIGNAL ci_ipd : std_logic := 'X';BEGIN --------------------- -- input path delays --------------------- WireDelay : BLOCK BEGIN VitalWireDelay (a0_ipd, a0, tipd_a0); VitalWireDelay (a1_ipd, a1, tipd_a1); VitalWireDelay (b0_ipd, b0, tipd_b0); VitalWireDelay (b1_ipd, b1, tipd_b1); VitalWireDelay (ci_ipd, ci, tipd_ci); END BLOCK; -------------------- -- behavior section -------------------- VitalBehavior : PROCESS (a0_ipd, a1_ipd, b0_ipd, b1_ipd, ci_ipd) -- functionality results VARIABLE results : std_logic_vector(1 to 1) := (others => 'X'); ALIAS ge_zd : std_ulogic IS results(1); VARIABLE a, b : std_logic_vector(0 to 1) := (others => 'X'); -- output glitch detection VARIABLEs VARIABLE ge_GlitchData : VitalGlitchDataType; BEGIN IF (TimingChecksOn) THEN ----------------------------------- -- no timing checks for a comb gate ----------------------------------- END IF; ------------------------- -- functionality section ------------------------- a := std_logic_vector'(a1_ipd, a0_ipd); b := std_logic_vector'(b1_ipd, b0_ipd); -- if a = b, then output carry-in (ge from the lower stage) -- note: carry-in on the first stage is tied high IF (a > b) THEN ge_zd := '1'; ELSIF (a = b) THEN ge_zd := ci_ipd; ELSE ge_zd := '0'; END IF; ---------------------- -- path delay section ---------------------- VitalPathDelay01 ( OutSignal => ge, OutSignalName => "ge", OutTemp => ge_zd, Paths => (0 => (a0_ipd'last_event, tpd_a0_ge, TRUE), 1 => (a1_ipd'last_event, tpd_a1_ge, TRUE), 2 => (b0_ipd'last_event, tpd_b0_ge, TRUE), 3 => (b1_ipd'last_event, tpd_b1_ge, TRUE), 4 => (ci_ipd'last_event, tpd_ci_ge, TRUE)), GlitchData => ge_GlitchData, Mode => OnDetect, XOn => XOn, MsgOn => MsgOn);END PROCESS;END v;------- cell aleb2 -----LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.vital_timing.all;-- entity declaration --ENTITY aleb2 IS GENERIC( TimingChecksOn : boolean := TRUE; XOn : boolean := FALSE; MsgOn : boolean := TRUE; InstancePath : string := "aleb4"; tpd_a0_le : VitalDelayType01 := (0.01 ns, 0.01 ns); tpd_a1_le : VitalDelayType01 := (0.01 ns, 0.01 ns); tpd_b0_le : VitalDelayType01 := (0.01 ns, 0.01 ns); tpd_b1_le : VitalDelayType01 := (0.01 ns, 0.01 ns); tpd_ci_le : VitalDelayType01 := (0.01 ns, 0.01 ns); tipd_a0 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_a1 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_b0 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_b1 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_ci : VitalDelayType01 := (0.0 ns, 0.0 ns)); PORT( a0, a1 : IN std_logic; b0, b1 : IN std_logic; ci : IN std_logic := '1'; le : OUT std_logic); ATTRIBUTE Vital_Level0 OF aleb2 : ENTITY IS TRUE;END aleb2;-- architecture body --LIBRARY ieee;USE ieee.vital_primitives.all;ARCHITECTURE v OF aleb2 IS ATTRIBUTE Vital_Level0 OF v : ARCHITECTURE IS TRUE; SIGNAL a0_ipd : std_logic := 'X'; SIGNAL a1_ipd : std_logic := 'X'; SIGNAL b0_ipd : std_logic := 'X'; SIGNAL b1_ipd : std_logic := 'X'; SIGNAL ci_ipd : std_logic := 'X';BEGIN --------------------- -- input path delays --------------------- WireDelay : BLOCK BEGIN VitalWireDelay (a0_ipd, a0, tipd_a0); VitalWireDelay (a1_ipd, a1, tipd_a1); VitalWireDelay (b0_ipd, b0, tipd_b0); VitalWireDelay (b1_ipd, b1, tipd_b1); VitalWireDelay (ci_ipd, ci, tipd_ci); END BLOCK; -------------------- -- behavior section -------------------- VitalBehavior : PROCESS (a0_ipd, a1_ipd, b0_ipd, b1_ipd, ci_ipd) -- functionality results VARIABLE results : std_logic_vector(1 to 1) := (others => 'X'); ALIAS le_zd : std_ulogic IS results(1); VARIABLE a, b : std_logic_vector(0 to 1) := (others => 'X'); -- output glitch detection VARIABLEs VARIABLE le_GlitchData : VitalGlitchDataType; BEGIN IF (TimingChecksOn) THEN ----------------------------------- -- no timing checks for a comb gate ----------------------------------- END IF; ------------------------- -- functionality section ------------------------- a := std_logic_vector'(a1_ipd, a0_ipd); b := std_logic_vector'(b1_ipd, b0_ipd); -- if a = b, then output carry-in (le from the lower stage) -- note: carry-in on the first stage is tied high IF (a < b) THEN le_zd := '1'; ELSIF (a = b) THEN le_zd := ci_ipd; ELSE le_zd := '0'; END IF; ---------------------- -- path delay section ---------------------- VitalPathDelay01 ( OutSignal => le, OutSignalName => "le", OutTemp => le_zd, Paths => (0 => (a0_ipd'last_event, tpd_a0_le, TRUE), 1 => (a1_ipd'last_event, tpd_a1_le, TRUE), 2 => (b0_ipd'last_event, tpd_b0_le, TRUE), 3 => (b1_ipd'last_event, tpd_b1_le, TRUE), 4 => (ci_ipd'last_event, tpd_ci_le, TRUE)), GlitchData => le_GlitchData, Mode => OnDetect, XOn => XOn, MsgOn => MsgOn);END PROCESS;END v;------- cell aneb2 -----LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.vital_timing.all;-- entity declaration --ENTITY aneb2 IS GENERIC( TimingChecksOn : boolean := TRUE; XOn : boolean := FALSE; MsgOn : boolean := TRUE; InstancePath : string := "aneb4"; tpd_a0_ne : VitalDelayType01 := (0.01 ns, 0.01 ns); tpd_a1_ne : VitalDelayType01 := (0.01 ns, 0.01 ns); tpd_b0_ne : VitalDelayType01 := (0.01 ns, 0.01 ns); tpd_b1_ne : VitalDelayType01 := (0.01 ns, 0.01 ns); tpd_ci_ne : VitalDelayType01 := (0.01 ns, 0.01 ns); tipd_a0 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_a1 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_b0 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_b1 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_ci : VitalDelayType01 := (0.0 ns, 0.0 ns)); PORT( a0 : IN std_logic; a1 : IN std_logic; b0 : IN std_logic; b1 : IN std_logic; ci : IN std_logic := '0'; ne : OUT std_logic); ATTRIBUTE Vital_Level0 OF aneb2 : ENTITY IS TRUE;END aneb2;-- architecture body --LIBRARY ieee;USE ieee.vital_primitives.all;ARCHITECTURE v OF aneb2 IS ATTRIBUTE Vital_Level0 OF v : ARCHITECTURE IS TRUE; SIGNAL a0_ipd : std_logic := 'X'; SIGNAL a1_ipd : std_logic := 'X'; SIGNAL b0_ipd : std_logic := 'X'; SIGNAL b1_ipd : std_logic := 'X'; SIGNAL ci_ipd : std_logic := 'X';BEGIN --------------------- -- input path delays --------------------- WireDelay : BLOCK BEGIN VitalWireDelay (a0_ipd, a0, tipd_a0); VitalWireDelay (a1_ipd, a1, tipd_a1); VitalWireDelay (b0_ipd, b0, tipd_b0); VitalWireDelay (b1_ipd, b1, tipd_b1); VitalWireDelay (ci_ipd, ci, tipd_ci); END BLOCK; -------------------- -- behavior section -------------------- VitalBehavior : PROCESS (a0_ipd, a1_ipd, b0_ipd, b1_ipd, ci_ipd) -- functionality results VARIABLE results : std_logic_vector(1 to 1) := (others => 'X'); ALIAS ne_zd : std_ulogic IS results(1); VARIABLE a, b : std_logic_vector(0 to 1) := (others => 'X'); -- output glitch detection VARIABLEs VARIABLE ne_GlitchData : VitalGlitchDataType; BEGIN IF (TimingChecksOn) THEN ----------------------------------- -- no timing checks for a comb gate ----------------------------------- END IF; ------------------------- -- functionality section ------------------------- a := std_logic_vector'(a1_ipd, a0_ipd); b := std_logic_vector'(b1_ipd, b0_ipd); -- IF a = b, THEN pass on carry-in input (ne from the previous stage) -- note: carry-in on the first stage is tied low IF (a = b) THEN ne_zd := ci_ipd; ELSE ne_zd := '1'; END IF; ---------------------- -- path delay section ---------------------- VitalPathDelay01 ( OutSignal => ne, OutSignalName => "ne", OutTemp => ne_zd, Paths => (0 => (a0_ipd'last_event, tpd_a0_ne, TRUE), 1 => (a1_ipd'last_event, tpd_a1_ne, TRUE), 2 => (b0_ipd'last_event, tpd_b0_ne, TRUE), 3 => (b1_ipd'last_event, tpd_b1_ne, TRUE), 4 => (ci_ipd'last_event, tpd_ci_ne, TRUE)), GlitchData => ne_GlitchData, Mode => OnDetect, XOn => XOn, MsgOn => MsgOn);END PROCESS;END v;------- cell and2 -----LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.vital_timing.all;-- entity declaration --ENTITY and2 IS GENERIC( TimingChecksOn : boolean := TRUE; XOn : boolean := FALSE; MsgOn : boolean := TRUE; InstancePath : string := "and2"; tpd_a_z : VitalDelayType01 := (0.01 ns, 0.01 ns); tpd_b_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)); PORT( a : IN std_logic; b : IN std_logic; z : OUT std_logic); ATTRIBUTE Vital_Level0 OF and2 : ENTITY IS TRUE;END and2;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -