📄 orca_mem.vhd
字号:
port (ad0 : IN std_logic; ad1 : IN std_logic; ad2 : IN std_logic; ad3 : IN std_logic; ad4 : IN std_logic; ad5 : IN std_logic; do0 : OUT std_logic); ATTRIBUTE Vital_Level0 OF rom64x1 : ENTITY IS TRUE; END rom64x1; -- architecture body --ARCHITECTURE v OF rom64x1 IS ATTRIBUTE Vital_Level0 OF v : ARCHITECTURE IS TRUE; SIGNAL ad0_ipd : std_logic := 'X'; SIGNAL ad1_ipd : std_logic := 'X'; SIGNAL ad2_ipd : std_logic := 'X'; SIGNAL ad3_ipd : std_logic := 'X'; SIGNAL ad4_ipd : std_logic := 'X'; SIGNAL ad5_ipd : std_logic := 'X'; BEGIN ----------------------- -- input path delays ----------------------- WireDelay : BLOCK BEGIN VitalWireDelay(ad0_ipd, ad0, tipd_ad0); VitalWireDelay(ad1_ipd, ad1, tipd_ad1); VitalWireDelay(ad2_ipd, ad2, tipd_ad2); VitalWireDelay(ad3_ipd, ad3, tipd_ad3); VitalWireDelay(ad4_ipd, ad4, tipd_ad4); VitalWireDelay(ad5_ipd, ad5, tipd_ad5); END BLOCK; ----------------------- -- behavior section ----------------------- VitalBehavior : PROCESS (ad0_ipd, ad1_ipd, ad2_ipd, ad3_ipd, ad4_ipd, ad5_ipd) VARIABLE memory : std_logic_vector((2**6)-1 downto 0) := hex2bin(initval); -- functionality results VARIABLE do0_zd : std_logic :='X'; -- output glitch results VARIABLE do0_GlitchData : VitalGlitchDataType;BEGIN ------------------------ -- functionality section ------------------------ do0_zd := VitalMUX (data => memory, dselect => (ad5_ipd, ad4_ipd, ad3_ipd, ad2_ipd, ad1_ipd, ad0_ipd)); ------------------------ -- path delay section ------------------------ VitalPathDelay01 ( OutSignal => do0, OutSignalName => "do0", OutTemp => do0_zd, Paths => (0 => (ad0_ipd'last_event, tpd_ad0_do0, TRUE), 1 => (ad1_ipd'last_event, tpd_ad1_do0, TRUE), 2 => (ad2_ipd'last_event, tpd_ad2_do0, TRUE), 3 => (ad3_ipd'last_event, tpd_ad3_do0, TRUE), 4 => (ad4_ipd'last_event, tpd_ad4_do0, TRUE), 5 => (ad5_ipd'last_event, tpd_ad5_do0, TRUE)), GlitchData => do0_glitchdata, Mode => ondetect, XOn => XOn, MsgOn => MsgOn); end process; end V; ------- cell rom32x1 -------LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_unsigned.all;USE ieee.vital_timing.all;USE ieee.vital_primitives.all;USE work.mem2.all; -- entity declaration --ENTITY rom32x1 IS GENERIC ( initval : string := "0x00000000"; -- miscellaneous vital GENERICs TimingChecksOn : boolean := FALSE; XOn : boolean := FALSE; MsgOn : boolean := FALSE; InstancePath : string := "rom32x1"; -- input SIGNAL delays tipd_ad0 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_ad1 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_ad2 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_ad3 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_ad4 : VitalDelayType01 := (0.0 ns, 0.0 ns); -- propagation delays tpd_ad0_do0 : VitalDelayType01 := (0.01 ns, 0.01 ns); tpd_ad1_do0 : VitalDelayType01 := (0.01 ns, 0.01 ns); tpd_ad2_do0 : VitalDelayType01 := (0.01 ns, 0.01 ns); tpd_ad3_do0 : VitalDelayType01 := (0.01 ns, 0.01 ns); tpd_ad4_do0 : VitalDelayType01 := (0.01 ns, 0.01 ns)); port (ad0 : IN std_logic; ad1 : IN std_logic; ad2 : IN std_logic; ad3 : IN std_logic; ad4 : IN std_logic; do0 : OUT std_logic); ATTRIBUTE Vital_Level0 OF rom32x1 : ENTITY IS TRUE; END rom32x1; -- architecture body --ARCHITECTURE v OF rom32x1 IS ATTRIBUTE Vital_Level0 OF v : ARCHITECTURE IS TRUE; SIGNAL ad0_ipd : std_logic := 'X'; SIGNAL ad1_ipd : std_logic := 'X'; SIGNAL ad2_ipd : std_logic := 'X'; SIGNAL ad3_ipd : std_logic := 'X'; SIGNAL ad4_ipd : std_logic := 'X'; BEGIN ----------------------- -- input path delays ----------------------- WireDelay : BLOCK BEGIN VitalWireDelay(ad0_ipd, ad0, tipd_ad0); VitalWireDelay(ad1_ipd, ad1, tipd_ad1); VitalWireDelay(ad2_ipd, ad2, tipd_ad2); VitalWireDelay(ad3_ipd, ad3, tipd_ad3); VitalWireDelay(ad4_ipd, ad4, tipd_ad4); END BLOCK; ----------------------- -- behavior section ----------------------- VitalBehavior : PROCESS (ad0_ipd, ad1_ipd, ad2_ipd, ad3_ipd, ad4_ipd) VARIABLE memory : std_logic_vector((2**5)-1 downto 0) := hex2bin(initval); -- functionality results VARIABLE do0_zd : std_logic :='X'; -- output glitch results VARIABLE do0_GlitchData : VitalGlitchDataType;BEGIN ------------------------ -- functionality section ------------------------ do0_zd := VitalMUX (data => memory, dselect => (ad4_ipd, ad3_ipd, ad2_ipd, ad1_ipd, ad0_ipd)); ------------------------ -- path delay section ------------------------ VitalPathDelay01 ( OutSignal => do0, OutSignalName => "do0", OutTemp => do0_zd, Paths => (0 => (ad0_ipd'last_event, tpd_ad0_do0, TRUE), 1 => (ad1_ipd'last_event, tpd_ad1_do0, TRUE), 2 => (ad2_ipd'last_event, tpd_ad2_do0, TRUE), 3 => (ad3_ipd'last_event, tpd_ad3_do0, TRUE), 4 => (ad4_ipd'last_event, tpd_ad4_do0, TRUE)), GlitchData => do0_glitchdata, Mode => ondetect, XOn => XOn, MsgOn => MsgOn); end process; end V; ------- cell rom16x1 -------LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_unsigned.all;USE ieee.vital_timing.all;USE ieee.vital_primitives.all;USE work.mem2.all; -- entity declaration --ENTITY rom16x1 IS GENERIC ( initval : string := "0x0000"; -- miscellaneous vital GENERICs TimingChecksOn : boolean := TRUE; XOn : boolean := FALSE; MsgOn : boolean := TRUE; InstancePath : string := "rom16x1"; -- input SIGNAL delays tipd_ad0 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_ad1 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_ad2 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_ad3 : VitalDelayType01 := (0.0 ns, 0.0 ns); -- propagation delays tpd_ad0_do0 : VitalDelayType01 := (0.01 ns, 0.01 ns); tpd_ad1_do0 : VitalDelayType01 := (0.01 ns, 0.01 ns); tpd_ad2_do0 : VitalDelayType01 := (0.01 ns, 0.01 ns); tpd_ad3_do0 : VitalDelayType01 := (0.01 ns, 0.01 ns)); port (ad0 : IN std_logic; ad1 : IN std_logic; ad2 : IN std_logic; ad3 : IN std_logic; do0 : OUT std_logic); ATTRIBUTE Vital_Level0 OF rom16x1 : ENTITY IS TRUE; END rom16x1;-- architecture body --ARCHITECTURE v OF rom16x1 IS ATTRIBUTE Vital_Level0 OF v : ARCHITECTURE IS TRUE; SIGNAL ad0_ipd : std_logic := 'X'; SIGNAL ad1_ipd : std_logic := 'X'; SIGNAL ad2_ipd : std_logic := 'X'; SIGNAL ad3_ipd : std_logic := 'X'; BEGIN ----------------------- -- input path delays ----------------------- WireDelay : BLOCK BEGIN VitalWireDelay(ad0_ipd, ad0, tipd_ad0); VitalWireDelay(ad1_ipd, ad1, tipd_ad1); VitalWireDelay(ad2_ipd, ad2, tipd_ad2); VitalWireDelay(ad3_ipd, ad3, tipd_ad3); END BLOCK; ----------------------- -- behavior section ----------------------- VitalBehavior : PROCESS (ad0_ipd, ad1_ipd, ad2_ipd, ad3_ipd) VARIABLE memory : std_logic_vector((2**4)-1 downto 0) := hex2bin(initval); -- functionality results VARIABLE do0_zd : std_logic :='X'; -- output glitch results VARIABLE do0_GlitchData : VitalGlitchDataType; BEGIN ------------------------ -- functionality section ------------------------ do0_zd := VitalMUX (data => memory, dselect => (ad3_ipd, ad2_ipd, ad1_ipd, ad0_ipd)); ------------------------ -- path delay section ------------------------ VitalPathDelay01 ( OutSignal => do0, OutSignalName => "do0", OutTemp => do0_zd, Paths => (0 => (ad0_ipd'last_event, tpd_ad0_do0, TRUE), 1 => (ad1_ipd'last_event, tpd_ad1_do0, TRUE), 2 => (ad2_ipd'last_event, tpd_ad2_do0, TRUE), 3 => (ad3_ipd'last_event, tpd_ad3_do0, TRUE)), GlitchData => do0_glitchdata, Mode => ondetect, XOn => XOn, MsgOn => MsgOn); end process; end V;----- cell dpr16x2b -------LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_unsigned.all;USE ieee.vital_timing.all;USE ieee.vital_primitives.all;USE work.mem1.all;-- entity declaration --ENTITY dpr16x2b IS GENERIC ( -- miscellaneous vital GENERICs TimingChecksOn : boolean := TRUE; XOn : boolean := FALSE; MsgOn : boolean := TRUE; InstancePath : string := "dpr16x2b"; -- input SIGNAL delays tipd_rad0 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_rad1 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_rad2 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_rad3 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_wad0 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_wad1 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_wad2 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_wad3 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_di0 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_di1 : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_wre : VitalDelayType01 := (0.0 ns, 0.0 ns); tipd_wck : VitalDelayType01 := (0.0 ns, 0.0 ns); -- setup and hold constraints tsetup_wad0_wck_noedge_posedge : VitalDelayType := 0.0 ns; tsetup_wad1_wck_noedge_posedge : VitalDelayType := 0.0 ns; tsetup_wad2_wck_noedge_posedge : VitalDelayType := 0.0 ns; tsetup_wad3_wck_noedge_posedge : VitalDelayType := 0.0 ns; tsetup_wre_wck_noedge_posedge : VitalDelayType := 0.0 ns; tsetup_di0_wck_noedge_posedge : VitalDelayType := 0.0 ns; tsetup_di1_wck_noedge_posedge : VitalDelayType := 0.0 ns; thold_wad0_wck_noedge_posedge : VitalDelayType := 0.0 ns; thold_wad1_wck_noedge_posedge : VitalDelayType := 0.0 ns; thold_wad2_wck_noedge_posedge : VitalDelayType := 0.0 ns; thold_wad3_wck_noedge_posedge : VitalDelayType := 0.0 ns; thold_wre_wck_noedge_posedge : VitalDelayType := 0.0 ns; thold_di0_wck_noedge_posedge : VitalDelayType := 0.0 ns; thold_di1_wck_noedge_posedge : VitalDelayType := 0.0 ns; -- pulse width constraints tperiod_wre : VitalDelayType := 0.001 ns; tpw_wre_posedge : VitalDelayType := 0.001 ns; tpw_wre_negedge : VitalDelayType := 0.001 ns; tperiod_wck : VitalDelayType := 0.001 ns; tpw_wck_posedge : VitalDelayType := 0.001 ns; tpw_wck_negedge : VitalDelayType := 0.001 ns; -- propagation delays tpd_wck_wdo0 : VitalDelayType01 := (0.001 ns, 0.001 ns); tpd_wck_wdo1 : VitalDelayType01 := (0.001 ns, 0.001 ns); tpd_rad0_rdo0 : VitalDelayType01 := (0.001 ns, 0.001 ns); tpd_rad1_rdo0 : VitalDelayType01 := (0.001 ns, 0.001 ns); tpd_rad2_rdo0 : VitalDelayType01 := (0.001 ns, 0.001 ns); tpd_rad3_rdo0 : VitalDelayType01 := (0.001 ns, 0.001 ns); tpd_rad0_rdo1 : VitalDelayType01 := (0.001 ns, 0.001 ns); tpd_rad1_rdo1 : VitalDelayType01 := (0.001 ns, 0.001 ns); tpd_rad2_rdo1 : VitalDelayType01 := (0.001 ns, 0.001 ns); tpd_rad3_rdo1 : VitalDelayType01 := (0.001 ns, 0.001 ns)); port (di0 : IN std_logic; di1 : IN std_logic; wck : IN std_logic; wre : IN std_logic; rad0 : IN std_logic; rad1 : IN std_logic; rad2 : IN std_logic; rad3 : IN std_logic; wad0 : IN std_logic; wad1 : IN std_logic;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -