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

📄 orca_io.vhd

📁 porting scintilla to qt
💻 VHD
📖 第 1 页 / 共 5 页
字号:
   VARIABLE tviol_d     : X01 := '0';   VARIABLE tviol_sp    : X01 := '0';   VARIABLE tviol_cd    : X01 := '0';   VARIABLE d_sclk_TimingDatash  : VitalTimingDataType;   VARIABLE sp_sclk_TimingDatash : VitalTimingDataType;   VARIABLE periodcheckinfo_sclk : VitalPeriodDataType;   VARIABLE periodcheckinfo_cd   : VitalPeriodDataType;    -- functionality results    VARIABLE set_reset : std_logic := '1';   VARIABLE violation   : X01 := '0';   VARIABLE prevdata    : std_logic_vector (0 to 5) := (others=>'X');   VARIABLE results     : std_logic_vector (1 to 1) := "0";   ALIAS q_zd 		: std_ulogic IS results(1);   VARIABLE clear	: std_logic := 'X';   VARIABLE tpd_gsr_q   : VitalDelayType01 := (0.001 ns, 0.001 ns);   VARIABLE tpd_pur_q   : VitalDelayType01 := (0.001 ns, 0.001 ns);    -- output glitch detection VARIABLEs   VARIABLE q_GlitchData     : VitalGlitchDataType;    BEGIN   ------------------------   --  timing check section   ------------------------     IF (TimingChecksOn) THEN        VitalSetupHoldCheck (	    TestSignal => d_ipd, TestSignalName => "d", 	    RefSignal => sclk_ipd, RefSignalName => "sclk", 	    SetupHigh => tsetup_d_sclk_noedge_posedge,             SetupLow => tsetup_d_sclk_noedge_posedge,            HoldHigh => thold_d_sclk_noedge_posedge,             HoldLow => thold_d_sclk_noedge_posedge,            CheckEnabled => (set_reset='1' AND cd_ipd='0' AND sp_ipd='1'),            RefTransition => '/', MsgOn => MsgOn, XOn => XOn, 	    HeaderMsg => InstancePath, TimingData => d_sclk_timingdatash, 	    Violation => tviol_d, MsgSeverity => warning);        VitalSetupHoldCheck (	    TestSignal => sp_ipd, TestSignalName => "sp", 	    RefSignal => sclk_ipd, RefSignalName => "sclk", 	    SetupHigh => tsetup_sp_sclk_noedge_posedge,             SetupLow => tsetup_sp_sclk_noedge_posedge,            HoldHigh => thold_sp_sclk_noedge_posedge,             HoldLow => thold_sp_sclk_noedge_posedge,            CheckEnabled => (set_reset='1' AND cd_ipd='0'),             RefTransition => '/', MsgOn => MsgOn, XOn => XOn, 	    HeaderMsg => InstancePath, TimingData => sp_sclk_timingdatash, 	    Violation => tviol_sp, MsgSeverity => warning);        VitalPeriodPulseCheck (	    TestSignal => sclk_ipd, TestSignalName => "sclk", 	    Period => tperiod_sclk,            PulseWidthHigh => tpw_sclk_posedge, 	    PulseWidthLow => tpw_sclk_negedge, 	    PeriodData => periodcheckinfo_sclk, Violation => tviol_sclk, 	    MsgOn => MsgOn, XOn => XOn, 	    HeaderMsg => InstancePath, CheckEnabled => TRUE, 	    MsgSeverity => warning);        VitalPeriodPulseCheck (            TestSignal => cd_ipd, TestSignalName => "cd",            Period => tperiod_cd,            PulseWidthHigh => tpw_cd_posedge,            PulseWidthLow => tpw_cd_negedge,            PeriodData => periodcheckinfo_cd, Violation => tviol_cd,            MsgOn => MsgOn, XOn => XOn,            HeaderMsg => InstancePath, CheckEnabled => TRUE,            MsgSeverity => warning);    END IF;     -----------------------------------    -- functionality section.    -----------------------------------    violation := tviol_d or tviol_sp or tviol_sclk;    IF (gsr = "DISABLED") THEN       set_reset := purnet;    ELSE       set_reset := purnet AND gsrnet;    END IF;     clear := VitalOR2 (a => NOT(set_reset), b => cd_ipd);      vitalstatetable (statetable => ff_table,	    datain => (violation, clear, sp_ipd, sclk_ipd, d_ipd),	    numstates => 1,	    result => results,	    previousdatain => prevdata);    -----------------------------------    -- path delay section.    -----------------------------------    VitalPathDelay01 (      OutSignal => q,      OutSignalName => "q",      OutTemp => q_zd,      Paths => (0 => (inputchangetime => sclk_ipd'last_event, 	              pathdelay => tpd_sclk_q, 		      pathcondition => TRUE),		1 => (sp_ipd'last_event, tpd_sp_q, TRUE),		2 => (cd_ipd'last_event, tpd_cd_q, TRUE),		3 => (gsrnet'last_event, tpd_gsr_q, TRUE),		4 => (purnet'last_event, tpd_pur_q, TRUE)),      GlitchData => q_GlitchData,      Mode => OnDetect, XOn => XOn, MsgOn => MsgOn);END PROCESS; END v;------- cell ifs1p3ix -------LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.vital_timing.all;USE ieee.vital_primitives.all;USE work.global.gsrnet;USE work.global.purnet; ENTITY ifs1p3ix IS    GENERIC (        gsr             : String := "ENABLED";        TimingChecksOn	: boolean := TRUE;        XOn             : boolean := FALSE;        MsgOn           : boolean := TRUE;        InstancePath	: string := "ifs1p3ix";        -- propagation delays        tpd_sclk_q	: VitalDelayType01 := (0.001 ns, 0.001 ns);        tpd_sp_q	: VitalDelayType01 := (0.001 ns, 0.001 ns);        tpd_cd_q	: VitalDelayType01 := (0.001 ns, 0.001 ns);        -- setup and hold constraints        tsetup_d_sclk_noedge_posedge	: VitalDelayType := 0.0 ns;        thold_d_sclk_noedge_posedge	: VitalDelayType := 0.0 ns;        tsetup_cd_sclk_noedge_posedge	: VitalDelayType := 0.0 ns;        thold_cd_sclk_noedge_posedge	: VitalDelayType := 0.0 ns;        tsetup_sp_sclk_noedge_posedge	: VitalDelayType := 0.0 ns;        thold_sp_sclk_noedge_posedge	: VitalDelayType := 0.0 ns;        -- input SIGNAL delays        tipd_d		: VitalDelayType01 := (0.0 ns, 0.0 ns);        tipd_sp		: VitalDelayType01 := (0.0 ns, 0.0 ns);        tipd_sclk		: VitalDelayType01 := (0.0 ns, 0.0 ns);        tipd_cd         : VitalDelayType01 := (0.0 ns, 0.0 ns);        -- pulse width constraints        tperiod_sclk            : VitalDelayType := 0.001 ns;        tpw_sclk_posedge        : VitalDelayType := 0.001 ns;        tpw_sclk_negedge        : VitalDelayType := 0.001 ns;        tperiod_cd              : VitalDelayType := 0.001 ns;        tpw_cd_posedge          : VitalDelayType := 0.001 ns;        tpw_cd_negedge          : VitalDelayType := 0.001 ns);     PORT (        d               : IN std_logic;        sp              : IN std_logic;        sclk              : IN std_logic;        cd              : IN std_logic;        q               : OUT std_logic);    ATTRIBUTE Vital_Level0 OF ifs1p3ix : ENTITY IS TRUE;END ifs1p3ix ; -- architecture body --ARCHITECTURE v OF ifs1p3ix IS    ATTRIBUTE Vital_Level0 OF v : ARCHITECTURE IS TRUE;    SIGNAL d_ipd   : std_logic := '0';    SIGNAL sclk_ipd  : std_logic := '0';    SIGNAL sp_ipd  : std_logic := '0';    SIGNAL cd_ipd  : std_logic := '0'; BEGIN    ---------------------   --  input path delays   ---------------------    WireDelay : BLOCK    BEGIN       VitalWireDelay(d_ipd, d, tipd_d);       VitalWireDelay(sclk_ipd, sclk, tipd_sclk);       VitalWireDelay(sp_ipd, sp, tipd_sp);       VitalWireDelay(cd_ipd, cd, tipd_cd);    END BLOCK;   --------------------   --  behavior section   --------------------   VitalBehavior : PROCESS (d_ipd, sp_ipd, sclk_ipd, cd_ipd, gsrnet, purnet)   CONSTANT ff_table : VitalStateTableType (1 to 35, 1 to 8) := ( -- viol  clr  scl  ce   sclk  d    q  qnew	( 'X', '-', '-', '-', '-', '-', '-', 'X' ),  -- timing Violation	( '-', '0', '-', '-', '-', '-', '-', '0' ),  -- async. clear (active low)	( '-', '1', '0', '0', '-', '-', '-', 'S' ),  -- clock disabled	( '-', '1', '1', '-', '/', '-', '-', '0' ),  -- scl=1 on rising sclk => q=0	( '-', '1', '1', '-', 'A', '-', '0', 'S' ),  -- preserve q(=0) if scl=1 & sclk is (0->x or x->1)	( '-', '1', '1', '-', 'A', '-', '-', 'X' ),  -- q=(1 or x) => q=x	( '-', '1', 'X', '-', 'R', '0', '0', 'S' ),  -- preserve q if scl=x & sclk is any possible rising edge	( '-', '1', 'X', '0', 'R', '-', '0', 'S' ),  -- & either d & q are 0 or ce=0 & q=0	( '-', '1', 'X', '-', 'R', '-', '-', 'X' ),  -- otherwise => q=x	( '-', '1', '-', '1', '/', '0', '-', '0' ),  -- low d->q on rising sclk	( '-', '1', '0', '1', '/', '1', '-', '1' ),  -- high d->q on rising sclk	( '-', '1', '0', '1', '/', 'X', '-', 'X' ),  -- clock an x if d is x	( '-', '1', '0', '1', 'A', '0', '0', 'S' ),  -- if ce is 1 & sclk edge is (0->x or x->1), and	( '-', '1', '0', '1', 'A', '1', '1', 'S' ),  -- d & q are equal, then q remains the same	( '-', '1', '0', '1', 'A', '-', '-', 'X' ),  -- otherwise, q becomes x	( '-', '1', '0', 'X', 'R', '0', '0', 'S' ),  -- if ce is x on any pssible rising edge of sclk, and	( '-', '1', '0', 'X', 'R', '1', '1', 'S' ),  -- d & q are equal, then q remains the same	( '-', '1', '0', 'X', 'R', '-', '-', 'X' ),  -- otherwise, q becomes x	( '-', '1', '-', '-', 'F', '-', '-', 'S' ),  -- preserve q on any possible falling edge of sclk, or	( '-', '1', '-', '-', 'B', '-', '-', 'S' ),  -- a stable 0 or 1 clock, or	( '-', '1', '-', '-', 'X', '-', '-', 'S' ),  -- a stable x clock	( '-', 'X', '-', '-', '-', '0', '0', 'S' ),  -- when clr=x: preserve q(=0) if d & q are 0	( '-', 'X', '-', '0', '-', '-', '0', 'S' ),  -- also preservce q(=0) if ce=0 & q=0	( '-', 'X', '0', '0', '-', '-', '-', 'X' ),  -- scl=0 & ce=0 & q=(1 or x) => q=x	( '-', 'X', '1', '-', '/', '-', '-', '0' ),  -- scl=1 on rising sclk => q=0	( '-', 'X', '1', '-', 'A', '-', '0', 'S' ),  -- preserve q(=0) if scl=1 & sclk is (0->x or x->1)	( '-', 'X', '1', '-', 'A', '-', '-', 'X' ),  -- q=(1 or x) => q=x	( '-', 'X', 'X', '-', 'R', '-', '-', 'X' ),  -- scl=x on rising sclk & (d q != 0 0) & (ce q != 0 0) => q=x	( '-', 'X', '-', '1', '/', '0', '-', '0' ),  -- d=0 on rising sclk => q=0	( '-', 'X', '0', '1', 'A', '0', '-', 'X' ),  -- d=0 & q=(1 or x) on (0->x or x->1) sclk edge => q=x	( '-', 'X', '0', '1', 'R', '-', '-', 'X' ),  -- d=(1 or x) on any possible rising edge => q=x	( '-', 'X', '0', 'X', 'R', '-', '-', 'X' ),  -- ce=x on any possible rising edge (d q != 0 0) => q=x	( '-', 'X', '-', '-', 'F', '-', '0', 'S' ),  -- preserve q (=0) on any possible falling edge of sclk, or	( '-', 'X', '-', '-', 'B', '-', '0', 'S' ),  -- a stable 0 or 1 clock, or	( '-', 'X', '-', '-', 'X', '-', '0', 'S' ) );  -- a stable x clock	   -- timing check results    VARIABLE tviol_sclk    : X01 := '0';   VARIABLE tviol_d     : X01 := '0';   VARIABLE tviol_cd    : X01 := '0';   VARIABLE tsviol_cd    : X01 := '0';   VARIABLE tviol_sp    : X01 := '0';   VARIABLE d_sclk_TimingDatash  : VitalTimingDataType;   VARIABLE cd_sclk_TimingDatash : VitalTimingDataType;   VARIABLE sp_sclk_TimingDatash : VitalTimingDataType;   VARIABLE periodcheckinfo_sclk : VitalPeriodDataType;   VARIABLE periodcheckinfo_cd   : VitalPeriodDataType;    -- functionality results    VARIABLE set_reset : std_logic := '1';   VARIABLE violation   : X01 := '0';   VARIABLE prevdata    : std_logic_vector (0 to 5) := (others=>'X');   VARIABLE results     : std_logic_vector (1 to 1) := "0";   ALIAS q_zd 		: std_ulogic IS results(1);   VARIABLE tpd_gsr_q   : VitalDelayType01 := (0.001 ns, 0.001 ns);   VARIABLE tpd_pur_q   : VitalDelayType01 := (0.001 ns, 0.001 ns);    -- output glitch detection VARIABLEs   VARIABLE q_GlitchData     : VitalGlitchDataType;    BEGIN   ------------------------   --  timing check section   ------------------------     IF (TimingChecksOn) THEN        VitalSetupHoldCheck (	    TestSignal => d_ipd, TestSignalName => "d", 	    RefSignal => sclk_ipd, RefSignalName => "sclk", 	    SetupHigh => tsetup_d_sclk_noedge_posedge,             SetupLow => tsetup_d_sclk_noedge_posedge,            HoldHigh => thold_d_sclk_noedge_posedge,             HoldLow => thold_d_sclk_noedge_posedge,            CheckEnabled => (set_reset='1' AND cd_ipd='0' AND sp_ipd ='1'),            RefTransition => '/', MsgOn => MsgOn, XOn => XOn, 	    HeaderMsg => InstancePath, TimingData => d_sclk_timingdatash, 	    Violation => tviol_d, MsgSeverity => warning);        VitalSetupHoldCheck (            TestSignal => cd_ipd, TestSignalName => "cd",            RefSignal => sclk_ipd, RefSignalName => "sclk",            SetupHigh => tsetup_cd_sclk_noedge_posedge,             SetupLow => tsetup_cd_sclk_noedge_posedge,            HoldHigh => thold_cd_sclk_noedge_posedge,             HoldLow => thold_cd_sclk_noedge_posedge,            CheckEnabled => (set_reset='1'), RefTransition => '/',            MsgOn => MsgOn, XOn => XOn,            HeaderMsg => InstancePath, TimingData => cd_sclk_timingdatash,            Violation => tsviol_cd, MsgSeverity => warning);        VitalSetupHoldCheck (	    TestSignal => sp_ipd, TestSignalName => "sp", 	    RefSignal => sclk_ipd, RefSignalName => "sclk", 	    SetupHigh => tsetup_sp_sclk_noedge_posedge,             SetupLow => tsetup_sp_sclk_noedge_posedge,            HoldHigh => thold_sp_sclk_noedge_posedge,             HoldLow => thold_sp_sclk_noedge_posedge,            CheckEnabled => (set_reset='1'), RefTransition => '/', 	    MsgOn => MsgOn, XOn => XOn, 	    HeaderMsg => InstancePath, TimingData => sp_sclk_timingdatash, 	    Violation => tviol_sp, MsgSeverity => warning);        VitalPeriodPulseCheck (	    TestSignal => sclk_ipd, TestSignalName => "sclk", 	    Period => tperiod_sclk,            PulseWidthHigh => tpw_sclk_posedge, 	    PulseWidthLow => tpw_sclk_negedge, 	    PeriodData => periodcheckinfo_sclk, Violation => tviol_sclk, 	    MsgOn => MsgOn, XOn => XOn, 	    HeaderMsg => InstancePath, CheckEnabled => TRUE, 	    MsgSeverity => warning);        VitalPeriodPulseCheck (            TestSignal => cd_ipd, TestSignalName => "cd",            Period => tperiod_cd,            PulseWidthHigh => tpw_cd_posedge,            PulseWidthLow => tpw_cd_negedge,            PeriodData => periodcheckinfo_cd, Violation => tviol_cd,            MsgOn => MsgOn, XOn => XOn,            HeaderMsg => InstancePath, CheckEnabled => TRUE,            MsgSeverity => warning);    END IF;     -----------------------------------    -- functionality section.    -----------------------------------    violation := tviol_d or tviol_cd or tviol_sp or tviol_sclk;    IF (gsr = "DISABLED") THEN       set_reset := purnet;    ELSE       set_reset := purnet AND gsrnet;    END IF;     vitalstatetable (statetable => ff_table,	    datain => (violation, set_reset, cd_ipd, sp_ipd, sclk_ipd, d_ipd),	    numstates => 1,	    result => results,	    previousdatain => prevdata);    -----------------------------------    -- path delay section.    -----------------------------------    VitalPathDelay01 (      OutSignal => q,      OutSignalName => "q",      OutTemp => q_zd,      Paths => (0 => (inputchangetime => sclk_ipd'last_event, 	              pathdelay => tpd_sclk_q, 		      pathcondition => TRUE),		1 => (sp_ipd'last_event, tpd_sp_q, TRUE),		2 => (cd_ipd'last_event, tpd_cd_q, TRUE),		3 => (gsrnet'last_event, tpd_gsr_q, TRUE),		4 => (purnet'last_event, tpd_pur_q, TRUE)),      GlitchData => q_GlitchData,      Mode => OnDetect, XOn => XOn, MsgOn => MsgOn);END PROCESS; END v;------- cell ifs1p3jx -------LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.vital_timing.all;USE ieee.vital_primitives.all;USE work.global.gsrnet;USE work.global.purnet; ENTITY ifs1p3jx IS    GENERIC (        gsr             : String := "ENABLED";        TimingChecksOn	: boolean := TRUE;        XOn             : boolean := FALSE;        MsgOn           : boolean := TRUE;

⌨️ 快捷键说明

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