⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ecp2_mem.vhd

📁 porting scintilla to qt
💻 VHD
📖 第 1 页 / 共 5 页
字号:
   ------------------------   VitalPathDelay01 (     OutSignal => do0,     OutSignalName => "do0",     OutTemp => do0_zd,     Paths => (0 => (rad0_ipd'last_event, tpd_rad0_do0, TRUE),               1 => (rad1_ipd'last_event, tpd_rad1_do0, TRUE),               2 => (rad2_ipd'last_event, tpd_rad2_do0, TRUE),               3 => (rad3_ipd'last_event, tpd_rad3_do0, TRUE)),      GlitchData => do0_glitchdata,      Mode => ondetect,      XOn => XOn, MsgOn => MsgOn);   VitalPathDelay01 (     OutSignal => do1,     OutSignalName => "do1",     OutTemp => do1_zd,     Paths => (0 => (rad0_ipd'last_event, tpd_rad0_do1, TRUE),               1 => (rad1_ipd'last_event, tpd_rad1_do1, TRUE),               2 => (rad2_ipd'last_event, tpd_rad2_do1, TRUE),               3 => (rad3_ipd'last_event, tpd_rad3_do1, TRUE)),      GlitchData => do1_glitchdata,      Mode => ondetect,      XOn => XOn, MsgOn => MsgOn);   VitalPathDelay01 (     OutSignal => do2,     OutSignalName => "do2",     OutTemp => do2_zd,     Paths => (0 => (rad0_ipd'last_event, tpd_rad0_do2, TRUE),               1 => (rad1_ipd'last_event, tpd_rad1_do2, TRUE),               2 => (rad2_ipd'last_event, tpd_rad2_do2, TRUE),               3 => (rad3_ipd'last_event, tpd_rad3_do2, TRUE)),      GlitchData => do2_glitchdata,      Mode => ondetect,      XOn => XOn, MsgOn => MsgOn);   VitalPathDelay01 (     OutSignal => do3,     OutSignalName => "do3",     OutTemp => do3_zd,     Paths => (0 => (rad0_ipd'last_event, tpd_rad0_do3, TRUE),               1 => (rad1_ipd'last_event, tpd_rad1_do3, TRUE),               2 => (rad2_ipd'last_event, tpd_rad2_do3, TRUE),               3 => (rad3_ipd'last_event, tpd_rad3_do3, TRUE)),      GlitchData => do3_glitchdata,      Mode => ondetect,      XOn => XOn, MsgOn => MsgOn);   END PROCESS;END v;------- cell spr16x4a -------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 spr16x4a IS  GENERIC (        -- miscellaneous vital GENERICs        TimingChecksOn  : boolean := TRUE;        XOn             : boolean := FALSE;        MsgOn           : boolean := TRUE;        InstancePath    : string  := "spr16x4a";        -- 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_di0  : VitalDelayType01 := (0.0 ns, 0.0 ns);        tipd_di1  : VitalDelayType01 := (0.0 ns, 0.0 ns);        tipd_di2  : VitalDelayType01 := (0.0 ns, 0.0 ns);        tipd_di3  : VitalDelayType01 := (0.0 ns, 0.0 ns);        tipd_wre  : VitalDelayType01 := (0.0 ns, 0.0 ns);        tipd_ck  : VitalDelayType01 := (0.0 ns, 0.0 ns);        -- setup and hold constraints        tsetup_ad0_ck_noedge_posedge  : VitalDelayType := 0.0 ns;        tsetup_ad1_ck_noedge_posedge  : VitalDelayType := 0.0 ns;        tsetup_ad2_ck_noedge_posedge  : VitalDelayType := 0.0 ns;        tsetup_ad3_ck_noedge_posedge  : VitalDelayType := 0.0 ns;        tsetup_wre_ck_noedge_posedge  : VitalDelayType := 0.0 ns;        tsetup_di0_ck_noedge_posedge  : VitalDelayType := 0.0 ns;        tsetup_di1_ck_noedge_posedge  : VitalDelayType := 0.0 ns;        tsetup_di2_ck_noedge_posedge  : VitalDelayType := 0.0 ns;        tsetup_di3_ck_noedge_posedge  : VitalDelayType := 0.0 ns;        thold_ad0_ck_noedge_posedge  : VitalDelayType := 0.0 ns;        thold_ad1_ck_noedge_posedge  : VitalDelayType := 0.0 ns;        thold_ad2_ck_noedge_posedge  : VitalDelayType := 0.0 ns;        thold_ad3_ck_noedge_posedge  : VitalDelayType := 0.0 ns;        thold_wre_ck_noedge_posedge   : VitalDelayType := 0.0 ns;        thold_di0_ck_noedge_posedge   : VitalDelayType := 0.0 ns;        thold_di1_ck_noedge_posedge   : VitalDelayType := 0.0 ns;        thold_di2_ck_noedge_posedge   : VitalDelayType := 0.0 ns;        thold_di3_ck_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_ck              : VitalDelayType := 0.001 ns;        tpw_ck_posedge         : VitalDelayType := 0.001 ns;        tpw_ck_negedge         : VitalDelayType := 0.001 ns;        -- propagation delays        tpd_ad0_do0    : VitalDelayType01 := (0.001 ns, 0.001 ns);        tpd_ad1_do0    : VitalDelayType01 := (0.001 ns, 0.001 ns);        tpd_ad2_do0    : VitalDelayType01 := (0.001 ns, 0.001 ns);        tpd_ad3_do0    : VitalDelayType01 := (0.001 ns, 0.001 ns);        tpd_ad0_do1    : VitalDelayType01 := (0.001 ns, 0.001 ns);        tpd_ad1_do1    : VitalDelayType01 := (0.001 ns, 0.001 ns);        tpd_ad2_do1    : VitalDelayType01 := (0.001 ns, 0.001 ns);        tpd_ad3_do1    : VitalDelayType01 := (0.001 ns, 0.001 ns);        tpd_ad0_do2    : VitalDelayType01 := (0.001 ns, 0.001 ns);        tpd_ad1_do2    : VitalDelayType01 := (0.001 ns, 0.001 ns);        tpd_ad2_do2    : VitalDelayType01 := (0.001 ns, 0.001 ns);        tpd_ad3_do2    : VitalDelayType01 := (0.001 ns, 0.001 ns);        tpd_ad0_do3    : VitalDelayType01 := (0.001 ns, 0.001 ns);        tpd_ad1_do3    : VitalDelayType01 := (0.001 ns, 0.001 ns);        tpd_ad2_do3    : VitalDelayType01 := (0.001 ns, 0.001 ns);        tpd_ad3_do3    : VitalDelayType01 := (0.001 ns, 0.001 ns));  port (di0  : IN std_logic;        di1  : IN std_logic;        di2  : IN std_logic;        di3  : IN std_logic;        ck  : IN std_logic;        wre  : IN std_logic;        ad0 : IN std_logic;        ad1 : IN std_logic;        ad2 : IN std_logic;        ad3 : IN std_logic;        do0 : OUT std_logic;        do1 : OUT std_logic;        do2 : OUT std_logic;        do3 : OUT std_logic);    ATTRIBUTE Vital_Level0 OF spr16x4a : ENTITY IS TRUE;END spr16x4a;-- architecture body --ARCHITECTURE v OF spr16x4a IS    ATTRIBUTE Vital_Level0 OF v : ARCHITECTURE IS TRUE;   SIGNAL di0_ipd  : std_logic := 'X';   SIGNAL di1_ipd  : std_logic := 'X';   SIGNAL di2_ipd  : std_logic := 'X';   SIGNAL di3_ipd  : std_logic := 'X';   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 wre_ipd  : std_logic := 'X';   SIGNAL ck_ipd  : std_logic := 'X';BEGIN   -----------------------   -- input path delays   -----------------------   WireDelay : BLOCK   BEGIN   VitalWireDelay(di0_ipd, di0, tipd_di0);   VitalWireDelay(di1_ipd, di1, tipd_di1);   VitalWireDelay(di2_ipd, di2, tipd_di2);   VitalWireDelay(di3_ipd, di3, tipd_di3);   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(wre_ipd, wre, tipd_wre);   VitalWireDelay(ck_ipd, ck, tipd_ck);   END BLOCK;   -----------------------   -- behavior section   -----------------------   VitalBehavior : PROCESS (ck_ipd, wre_ipd, ad0_ipd, ad1_ipd, ad2_ipd,     ad3_ipd, di0_ipd, di1_ipd, di2_ipd, di3_ipd)      VARIABLE memory : mem_type_4 ((2**4)-1 downto 0);     VARIABLE radr_reg, wadr_reg : std_logic_vector(3 downto 0) := "0000";     VARIABLE din_reg : std_logic_vector(3 downto 0) := "0000";     VARIABLE wre_reg : std_logic := '0';     VARIABLE rindex, windex : integer := 0;     VARIABLE set_reset : std_logic := '1';     -- timing check results     VARIABLE tviol_di0   : x01 := '0';     VARIABLE tviol_di1   : x01 := '0';     VARIABLE tviol_di2   : x01 := '0';     VARIABLE tviol_di3   : x01 := '0';     VARIABLE tviol_ad0  : x01 := '0';     VARIABLE tviol_ad1  : x01 := '0';     VARIABLE tviol_ad2  : x01 := '0';     VARIABLE tviol_ad3  : x01 := '0';     VARIABLE tviol_wre  : x01 := '0';     VARIABLE tsviol_wre : x01 := '0';     VARIABLE tviol_ck    : x01 := '0';     VARIABLE PeriodCheckInfo_wre : VitalPeriodDataType;     VARIABLE PeriodCheckInfo_ck   : VitalPeriodDataType;     VARIABLE ad0_ck_TimingDatash : VitalTimingDataType;     VARIABLE ad1_ck_TimingDatash : VitalTimingDataType;     VARIABLE ad2_ck_TimingDatash : VitalTimingDataType;     VARIABLE ad3_ck_TimingDatash : VitalTimingDataType;     VARIABLE wre_ck_TimingDatash : VitalTimingDataType;     VARIABLE di0_ck_TimingDatash  : VitalTimingDataType;     VARIABLE di1_ck_TimingDatash  : VitalTimingDataType;     VARIABLE di2_ck_TimingDatash  : VitalTimingDataType;     VARIABLE di3_ck_TimingDatash  : VitalTimingDataType;     -- functionality results     VARIABLE violation : x01 := '0';     VARIABLE results   : std_logic_vector (3 downto 0) := (others => 'X');     ALIAS do0_zd       : std_ulogic IS results(0);     ALIAS do1_zd       : std_ulogic IS results(1);     ALIAS do2_zd       : std_ulogic IS results(2);     ALIAS do3_zd       : std_ulogic IS results(3);     -- output glitch results     VARIABLE do0_GlitchData  : VitalGlitchDataType;     VARIABLE do1_GlitchData  : VitalGlitchDataType;     VARIABLE do2_GlitchData  : VitalGlitchDataType;     VARIABLE do3_GlitchData  : VitalGlitchDataType;   BEGIN   -----------------------   -- timing check section   -----------------------        IF (TimingChecksOn) THEN           -- setup and hold checks on the write address lines           VitalSetupHoldCheck (                TestSignal => ad0_ipd,                TestSignalName => "ad0",                RefSignal => ck_ipd,                RefSignalName => "ck",                SetupHigh => tsetup_ad0_ck_noedge_posedge,                setuplow => tsetup_ad0_ck_noedge_posedge,                HoldHigh => thold_ad0_ck_noedge_posedge,                HoldLow => thold_ad0_ck_noedge_posedge,                CheckEnabled => (set_reset='1'),                RefTransition => '/',                MsgOn => MsgOn, XOn => XOn,                HeaderMsg => InstancePath,                TimingData => ad0_ck_timingdatash,                Violation => tviol_ad0,                MsgSeverity => warning);           VitalSetupHoldCheck (                TestSignal => ad1_ipd,                TestSignalName => "ad1",                RefSignal => ck_ipd,                RefSignalName => "ck",                SetupHigh => tsetup_ad1_ck_noedge_posedge,                setuplow => tsetup_ad1_ck_noedge_posedge,                HoldHigh => thold_ad1_ck_noedge_posedge,                HoldLow =>  thold_ad1_ck_noedge_posedge,                CheckEnabled => (set_reset='1'),                RefTransition => '/',                MsgOn => MsgOn, XOn => XOn,                HeaderMsg => InstancePath,                TimingData => ad1_ck_timingdatash,                Violation => tviol_ad1,                MsgSeverity => warning);           VitalSetupHoldCheck (                TestSignal => ad2_ipd,                TestSignalName => "ad2",                RefSignal => ck_ipd,                RefSignalName => "ck",                SetupHigh => tsetup_ad2_ck_noedge_posedge,                setuplow => tsetup_ad2_ck_noedge_posedge,                HoldHigh => thold_ad2_ck_noedge_posedge,                HoldLow => thold_ad2_ck_noedge_posedge,                CheckEnabled => (set_reset='1'),                RefTransition => '/',                MsgOn => MsgOn, XOn => XOn,                HeaderMsg => InstancePath,                TimingData => ad2_ck_timingdatash,                Violation => tviol_ad2,                MsgSeverity => warning);           VitalSetupHoldCheck (                TestSignal => ad3_ipd,                TestSignalName => "ad3",                RefSignal => ck_ipd,                RefSignalName => "ck",                SetupHigh => tsetup_ad3_ck_noedge_posedge,                setuplow => tsetup_ad3_ck_noedge_posedge,                HoldHigh => thold_ad3_ck_noedge_posedge,                HoldLow => thold_ad3_ck_noedge_posedge,                CheckEnabled => (set_reset='1'),                RefTransition => '/',                MsgOn => MsgOn, XOn => XOn,                HeaderMsg => InstancePath,                TimingData => ad3_ck_timingdatash,                Violation => tviol_ad3,                MsgSeverity => warning);           VitalSetupHoldCheck (                TestSignal => wre_ipd,                TestSignalName => "wre",                RefSignal => ck_ipd,                RefSignalName => "ck",                SetupHigh => tsetup_wre_ck_noedge_posedge,                setuplow => tsetup_wre_ck_noedge_posedge,                HoldHigh => thold_wre_ck_noedge_posedge,                HoldLow => thold_wre_ck_noedge_posedge,                CheckEnabled => (set_reset='1'),                RefTransition => '/',                MsgOn => MsgOn, XOn => XOn,                HeaderMsg => InstancePath,                TimingData => wre_ck_timingdatash,                Violation => tsviol_wre,                MsgSeverity => warning);           -- setup and hold checks on data           VitalSetupHoldCheck (                TestSignal => di0_ipd,                TestSignalName => "di0",                RefSignal => ck_ipd,                RefSignalName => "ck",                SetupHigh => tsetup_di0_ck_noedge_posedge,                setuplow => tsetup_di0_ck_noedge_posedge,                HoldHigh => thold_di0_ck_noedge_posedge,                HoldLow => thold_di0_ck_noedge_posedge,                CheckEnabled => (set_reset='1'),                RefTransition => '/',                MsgOn => MsgOn, XOn => XOn,                HeaderMsg => InstancePath,                TimingData => di0_ck_timingdatash,                Violation => tviol_di0,                MsgSeverity => warning);           VitalSetupHoldCheck (                TestSignal => di1_ipd,                TestSignalName => "di1",                RefSignal => ck_ipd,                RefSignalName => "ck",                SetupHigh => tsetup_di1_ck_noedge_posedge,                setuplow => tsetup_di1_ck_noedge_posedge,                HoldHigh => thold_di1_ck_noedge_posedge,                HoldLow => thold_di1_ck_noedge_posedge,                CheckEnabled => (set_reset='1'),                RefTransition => '/',                MsgOn => MsgOn, XOn => XOn,                HeaderMsg => InstancePath,                TimingData => di1_ck_timingdatash,                Violation => tviol_di1,                MsgSeverity => warning);           VitalSetupHoldCheck (                TestSignal => di2_ipd,                TestSignalName => "di2",                RefSignal => ck_ipd,                RefSignalName => "ck",                SetupHigh => tsetup_di2_ck_noedge_posedge,                setuplow => tsetup_di2_ck_noedge_posedge,                HoldHigh => thold_di2_ck_noedge_posedge,                HoldLow => thold_di2_ck_noedge_posedge,                CheckEnabled => (set_reset='1'),                RefTransition => '/',                MsgOn => MsgOn, XOn => XOn,                HeaderMsg => InstancePath,                TimingData => di2_ck_timingdatash,                Violation => tviol_di2,                MsgSeverity => warning);           VitalSetupHoldCheck (                TestSignal => di3_ipd,                TestSignalName => "di3",                RefSignal => ck_ipd,                RefSignalName => "ck",                SetupHigh => tsetup_di3_ck_noedge_posedge,                setuplow => tsetup_di3_ck_noedge_pose

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -