📄 orca_cmb.vhd
字号:
tpd_b1_s1 : VitalDelayType01 := (0.01 ns, 0.01 ns); tpd_ci_s0 : VitalDelayType01 := (0.01 ns, 0.01 ns); tpd_ci_s1 : 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; s0 : OUT std_logic; s1 : OUT std_logic; cout0 : OUT std_logic; cout1 : OUT std_logic); ATTRIBUTE Vital_Level0 OF fadd2 : ENTITY IS TRUE;END fadd2;-- architecture body --LIBRARY ieee;USE ieee.vital_primitives.all;ARCHITECTURE v OF fadd2 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 results1 : std_logic_vector(1 to 2) := (others => 'X'); VARIABLE results2 : std_logic_vector(1 to 2) := (others => 'X'); ALIAS cout0_zd : std_ulogic IS results1(1); ALIAS s0_zd : std_ulogic IS results1(2); ALIAS cout1_zd : std_ulogic IS results2(1); ALIAS s1_zd : std_ulogic IS results2(2); -- output glitch detection VARIABLEs VARIABLE cout0_GlitchData : VitalGlitchDataType; VARIABLE s0_GlitchData : VitalGlitchDataType; VARIABLE cout1_GlitchData : VitalGlitchDataType; VARIABLE s1_GlitchData : VitalGlitchDataType; constant add_table : vitaltruthtabletype := ( -------------------------------------------- -- a b ci | co s -------------------------------------------- ( '0', '0', '0', '0', '0'), ( '1', '0', '0', '0', '1'), ( '0', '1', '0', '0', '1'), ( '1', '1', '0', '1', '0'), ( '0', '0', '1', '0', '1'), ( '1', '0', '1', '1', '0'), ( '0', '1', '1', '1', '0'), ( '1', '1', '1', '1', '1')); BEGIN ------------------------- -- functionality section ------------------------- results1 := vitaltruthtable ( truthtable => add_table, datain => (a0_ipd, b0_ipd, ci_ipd) ); results2 := vitaltruthtable ( truthtable => add_table, datain => (a1_ipd, b1_ipd, cout0_zd) ); ---------------------- -- path delay section ---------------------- VitalPathDelay01 ( OutSignal => cout0, OutSignalName => "cout0", OutTemp => cout0_zd, Paths => (0 => (a0_ipd'last_event, tpd_a0_cout0, TRUE), 1 => (a1_ipd'last_event, tpd_a1_cout0, TRUE), 2 => (b0_ipd'last_event, tpd_b0_cout0, TRUE), 3 => (b1_ipd'last_event, tpd_b1_cout0, TRUE), 4 => (ci_ipd'last_event, tpd_ci_cout0, TRUE)), GlitchData => cout0_GlitchData, Mode => OnDetect, XOn => XOn, MsgOn => MsgOn); VitalPathDelay01 ( OutSignal => s0, OutSignalName => "s0", OutTemp => s0_zd, Paths => (0 => (a0_ipd'last_event, tpd_a0_s0, TRUE), 1 => (a1_ipd'last_event, tpd_a1_s0, TRUE), 2 => (b0_ipd'last_event, tpd_b0_s0, TRUE), 3 => (b1_ipd'last_event, tpd_b1_s0, TRUE), 4 => (ci_ipd'last_event, tpd_ci_s0, TRUE)), GlitchData => s0_GlitchData, Mode => OnDetect, XOn => XOn, MsgOn => MsgOn); VitalPathDelay01 ( OutSignal => s1, OutSignalName => "s1", OutTemp => s1_zd, Paths => (0 => (a0_ipd'last_event, tpd_a0_s1, TRUE), 1 => (a1_ipd'last_event, tpd_a1_s1, TRUE), 2 => (b0_ipd'last_event, tpd_b0_s1, TRUE), 3 => (b1_ipd'last_event, tpd_b1_s1, TRUE), 4 => (ci_ipd'last_event, tpd_ci_s1, TRUE)), GlitchData => s1_GlitchData, Mode => OnDetect, XOn => XOn, MsgOn => MsgOn); VitalPathDelay01 ( OutSignal => cout1, OutSignalName => "cout1", OutTemp => cout1_zd, Paths => (0 => (a0_ipd'last_event, tpd_a0_cout1, TRUE), 1 => (a1_ipd'last_event, tpd_a1_cout1, TRUE), 2 => (b0_ipd'last_event, tpd_b0_cout1, TRUE), 3 => (b1_ipd'last_event, tpd_b1_cout1, TRUE), 4 => (ci_ipd'last_event, tpd_ci_cout1, TRUE)), GlitchData => cout1_GlitchData, Mode => OnDetect, XOn => XOn, MsgOn => MsgOn);END PROCESS;END v;------- cell fsub2 -----LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.vital_timing.all;-- entity declaration --ENTITY fsub2 IS GENERIC( TimingChecksOn : boolean := TRUE; XOn : boolean := FALSE; MsgOn : boolean := TRUE; InstancePath : string := "fsub2"; tpd_a0_bout0 : VitalDelayType01 := (0.01 ns, 0.01 ns); tpd_a1_bout0 : VitalDelayType01 := (0.01 ns, 0.01 ns); tpd_b0_bout0 : VitalDelayType01 := (0.01 ns, 0.01 ns); tpd_b1_bout0 : VitalDelayType01 := (0.01 ns, 0.01 ns); tpd_bi_bout0 : VitalDelayType01 := (0.01 ns, 0.01 ns); tpd_a0_bout1 : VitalDelayType01 := (0.01 ns, 0.01 ns); tpd_a1_bout1 : VitalDelayType01 := (0.01 ns, 0.01 ns); tpd_b0_bout1 : VitalDelayType01 := (0.01 ns, 0.01 ns); tpd_b1_bout1 : VitalDelayType01 := (0.01 ns, 0.01 ns); tpd_bi_bout1 : VitalDelayType01 := (0.01 ns, 0.01 ns); tpd_a0_s0 : VitalDelayType01 := (0.01 ns, 0.01 ns); tpd_a1_s0 : VitalDelayType01 := (0.01 ns, 0.01 ns); tpd_b0_s0 : VitalDelayType01 := (0.01 ns, 0.01 ns); tpd_b1_s0 : VitalDelayType01 := (0.01 ns, 0.01 ns); tpd_bi_s0 : VitalDelayType01 := (0.01 ns, 0.01 ns); tpd_a0_s1 : VitalDelayType01 := (0.01 ns, 0.01 ns); tpd_a1_s1 : VitalDelayType01 := (0.01 ns, 0.01 ns); tpd_b0_s1 : VitalDelayType01 := (0.01 ns, 0.01 ns); tpd_b1_s1 : VitalDelayType01 := (0.01 ns, 0.01 ns); tpd_bi_s1 : 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_bi : VitalDelayType01 := (0.0 ns, 0.0 ns)); PORT( a0 : IN std_logic; a1 : IN std_logic; b0 : IN std_logic; b1 : IN std_logic; bi : IN std_logic; bout0 : OUT std_logic; bout1 : OUT std_logic; s0 : OUT std_logic; s1 : OUT std_logic); ATTRIBUTE Vital_Level0 OF fsub2 : ENTITY IS TRUE;END fsub2;-- architecture body --LIBRARY ieee;USE ieee.vital_primitives.all;ARCHITECTURE v OF fsub2 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 bi_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 (bi_ipd, bi, tipd_bi); END BLOCK; -------------------- -- behavior section -------------------- VitalBehavior : PROCESS (a0_ipd, a1_ipd, b0_ipd, b1_ipd, bi_ipd) -- functionality results VARIABLE results1 : std_logic_vector(1 to 2) := (others => 'X'); VARIABLE results2 : std_logic_vector(1 to 2) := (others => 'X'); ALIAS bout0_zd : std_ulogic IS results1(1); ALIAS s0_zd : std_ulogic IS results1(2); ALIAS bout1_zd : std_ulogic IS results2(1); ALIAS s1_zd : std_ulogic IS results2(2); -- output glitch detection VARIABLEs VARIABLE bout0_GlitchData : VitalGlitchDataType; VARIABLE s0_GlitchData : VitalGlitchDataType; VARIABLE bout1_GlitchData : VitalGlitchDataType; VARIABLE s1_GlitchData : VitalGlitchDataType; constant sub_table : vitaltruthtabletype := ( -------------------------------------------- -- a b bi | bo s -------------------------------------------- ( '0', '0', '0', '0', '1'), ( '1', '0', '0', '1', '0'), ( '0', '1', '0', '0', '0'), ( '1', '1', '0', '0', '1'), ( '0', '0', '1', '1', '0'), ( '1', '0', '1', '1', '1'), ( '0', '1', '1', '0', '1'), ( '1', '1', '1', '1', '0')); BEGIN ------------------------- -- functionality section ------------------------- results1 := vitaltruthtable ( truthtable => sub_table, datain => (a0_ipd, b0_ipd, bi_ipd) ); results2 := vitaltruthtable ( truthtable => sub_table, datain => (a1_ipd, b1_ipd, bout0_zd) ); ---------------------- -- path delay section ---------------------- VitalPathDelay01 ( OutSignal => bout0, OutSignalName => "bout0", OutTemp => bout0_zd, Paths => (0 => (a0_ipd'last_event, tpd_a0_bout0, TRUE), 1 => (a1_ipd'last_event, tpd_a1_bout0, TRUE), 2 => (b0_ipd'last_event, tpd_b0_bout0, TRUE), 3 => (b1_ipd'last_event, tpd_b1_bout0, TRUE), 4 => (bi_ipd'last_event, tpd_bi_bout0, TRUE)), GlitchData => bout0_GlitchData, Mode => OnDetect, XOn => XOn, MsgOn => MsgOn); VitalPathDelay01 ( OutSignal => s0, OutSignalName => "s0", OutTemp => s0_zd, Paths => (0 => (a0_ipd'last_event, tpd_a0_s0, TRUE), 1 => (a1_ipd'last_event, tpd_a1_s0, TRUE), 2 => (b0_ipd'last_event, tpd_b0_s0, TRUE), 3 => (b1_ipd'last_event, tpd_b1_s0, TRUE), 4 => (bi_ipd'last_event, tpd_bi_s0, TRUE)), GlitchData => s0_GlitchData, Mode => OnDetect, XOn => XOn, MsgOn => MsgOn); VitalPathDelay01 ( OutSignal => s1, OutSignalName => "s1", OutTemp => s1_zd, Paths => (0 => (a0_ipd'last_event, tpd_a0_s1, TRUE), 1 => (a1_ipd'last_event, tpd_a1_s1, TRUE), 2 => (b0_ipd'last_event, tpd_b0_s1, TRUE), 3 => (b1_ipd'last_event, tpd_b1_s1, TRUE), 4 => (bi_ipd'last_event, tpd_bi_s1, TRUE)), GlitchData => s1_GlitchData, Mode => OnDetect, XOn => XOn, MsgOn => MsgOn); VitalPathDelay01 ( OutSignal => bout1, OutSignalName => "bout1", OutTemp => bout1_zd, Paths => (0 => (a0_ipd'last_event, tpd_a0_bout1, TRUE), 1 => (a1_ipd'last_event, tpd_a1_bout1, TRUE), 2 => (b0_ipd'last_event, tpd_b0_bout1, TRUE), 3 => (b1_ipd'last_event, tpd_b1_bout1, TRUE), 4 => (bi_ipd'last_event, tpd_bi_bout1, TRUE)), GlitchData => bout1_GlitchData, Mode => OnDetect, XOn => XOn, MsgOn => MsgOn); END PROCESS;END v;----- cell fadsu2 -----LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.vital_timing.all;-- entity declaration --ENTITY fadsu2 IS GENERIC( TimingChecksOn : boolean := TRUE; XOn : boolean := FALSE; MsgOn : boolean := TRUE; InstancePath : string := "fadsu2"; tpd_a0_bco : VitalDelayType01 := (0.001 ns, 0.001 ns); tpd_a1_bco : VitalDelayType01 := (0.001 ns, 0.001 ns); tpd_b0_bco : VitalDelayType01 := (0.001 ns, 0.001 ns); tpd_b1_bco : VitalDelayType01 := (0.001 ns, 0.001 ns); tpd_bci_bco : VitalDelayType01 := (0.001 ns, 0.001 ns); tpd_con_bco : VitalDelayType01 := (0.001 ns, 0.001 ns); tpd_a0_s0 : VitalDelayType01 := (0.001 ns, 0.001 ns); tpd_a0_s1 : VitalDelayType01 := (0.001 ns, 0.001 ns); tpd_a1_s0 : VitalDelayType01 := (0.001 ns, 0.001 ns); tpd_a1_s1 : VitalDelayType01 := (0.001 ns, 0.001 ns); tpd_a1_s2 : VitalDelayType01 := (0.001 ns, 0.001 ns); tpd_b0_s0 : VitalDelayType01 := (0.001 ns, 0.001 ns); tpd_b0_s1 : VitalDelayType01 := (0.001 ns, 0.001 ns); tpd_b1_s0 : VitalDelayType01 := (0.001 ns, 0.001 ns); tpd_b1_s1 : VitalDelayType01 := (0.001 ns, 0.001 ns); tpd_bci_s0 : VitalDelayType01 := (0.001 ns, 0.001 ns); tpd_bci_s1 : VitalDelayType01 := (0.001 ns, 0.001 ns); tpd_con_s0 : VitalDelayType01 := (0.001 ns, 0.001 ns); tpd_con_s1 : VitalDelayType01 := (0.001 ns, 0.001 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_bci : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_con : VitalDelayType01 := (0.0 ns, 0.0 ns)); PORT( a0 : IN std_logic; a1 : IN std_logic; b0 : IN std_logic; b1 : IN std_logic; bci : IN std_logic; con : IN std_logic; bco : OUT std_logic; s0 : OUT std_logic; s1 : OUT std_logic); ATTRIBUTE Vital_Level0 OF fadsu2 : ENTITY IS TRUE;END fadsu2;-- architecture body --LIBRARY ieee;USE ieee.vital_primitives.all;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -