📄 idt72132.vhd
字号:
XINeg_nwv := To_UX01 (s => XINeg_ipd); FLNeg_nwv := To_UX01 (s => FLNeg_ipd); RNeg_nwv := To_UX01 (s => RNeg_ipd); OENeg_nwv := To_UX01 (s => OENeg_ipd); SIX_nwv := To_UX01 (s => SIX_ipd); SI_nwv := To_UX01 (s => SI_ipd); ---------------------------------------------------------------------------- -- Timing Check Section ---------------------------------------------------------------------------- IF (TimingChecksOn) THEN VitalSetupHoldCheck ( TestSignal => SI_ipd, TestSignalName => "SI", RefSignal => SICP_ipd, RefSignalName => "SICP", SetupHigh => tsetup_SI_SICP, SetupLow => tsetup_SI_SICP, HoldHigh => thold_SI_SICP, HoldLow => thold_SI_SICP, CheckEnabled => TRUE, RefTransition => '/', HeaderMsg => InstancePath & PartID, TimingData => TD_SI_SICP, XOn => XOn, MsgOn => MsgOn, Violation => Tviol_SI_SICP ); VitalSetupHoldCheck ( TestSignal => SIX_ipd, TestSignalName => "SIX", RefSignal => SICP_ipd, RefSignalName => "SICP", SetupHigh => tsetup_SIX_SICP, SetupLow => tsetup_SIX_SICP, CheckEnabled => TRUE, RefTransition => '/', HeaderMsg => InstancePath & PartID, TimingData => TD_SIX_SICP, XOn => XOn, MsgOn => MsgOn, Violation => Tviol_SIX_SICP ); VitalSetupHoldCheck ( TestSignal => RNeg_ipd, TestSignalName => "RNeg", RefSignal => EFNeg_int, RefSignalName => "EFNeg", HoldLow => thold_RNeg_EFNeg, CheckEnabled => TRUE, RefTransition => '/', HeaderMsg => InstancePath & PartID, TimingData => TD_RNeg_EF, XOn => XOn, MsgOn => MsgOn, Violation => Tviol_RNeg_EF ); VitalSetupHoldCheck ( TestSignal => SICP_ipd, TestSignalName => "SICP", RefSignal => RSNeg_ipd, RefSignalName => "RSNeg", SetupLow => tsetup_SICP_RSNeg, HoldLow => thold_SICP_RSNeg, CheckEnabled => TRUE, RefTransition => '/', HeaderMsg => InstancePath & PartID, TimingData => TD_SICP_RSNeg, XOn => XOn, MsgOn => MsgOn, Violation => Tviol_SICP_RSNeg ); VitalSetupHoldCheck ( TestSignal => RNeg_ipd, TestSignalName => "RNeg", RefSignal => RSNeg_ipd, RefSignalName => "RSNeg", SetupHigh => tsetup_SICP_RSNeg, CheckEnabled => TRUE, RefTransition => '/', HeaderMsg => InstancePath & PartID, TimingData => TD_RNeg_RSNeg, XOn => XOn, MsgOn => MsgOn, Violation => Tviol_RNeg_RSNeg ); VitalSetupHoldCheck ( TestSignal => SICP_ipd, TestSignalName => "SICP", RefSignal => FLNeg_ipd, RefSignalName => "FLNeg", SetupLow => tsetup_SICP_FLNeg, HoldLow => thold_SICP_FLNeg, CheckEnabled => TRUE, RefTransition => '/', HeaderMsg => InstancePath & PartID, TimingData => TD_SICP_FLNeg, XOn => XOn, MsgOn => MsgOn, Violation => Tviol_SICP_FLNeg ); VitalSetupHoldCheck ( TestSignal => XINeg_ipd, TestSignalName => "XINeg", RefSignal => SICP_ipd, RefSignalName => "SICP", SetupLow => tsetup_RNeg_XINeg, CheckEnabled => TRUE, RefTransition => '/', HeaderMsg => InstancePath & PartID, TimingData => TD_XINeg_SICP, XOn => XOn, MsgOn => MsgOn, Violation => Tviol_XINeg_SICP ); VitalSetupHoldCheck ( TestSignal => XINeg_ipd, TestSignalName => "XINeg", RefSignal => RNeg_ipd, RefSignalName => "RNeg", SetupLow => tsetup_RNeg_XINeg, CheckEnabled => TRUE, RefTransition => '\', HeaderMsg => InstancePath & PartID, TimingData => TD_XINeg_RNeg, XOn => XOn, MsgOn => MsgOn, Violation => Tviol_XINeg_RNeg ); VitalRecoveryRemovalCheck ( TestSignal => SICP_ipd, TestSignalName => "SICP", RefSignal => FFNeg_int, RefSignalName => "FFNeg", Recovery => trecovery_SICP_FFNeg, ActiveLow => TRUE, CheckEnabled => (FFNeg_int ='1'), RefTransition => '/', HeaderMsg => InstancePath & PartID, TimingData => TD_SICP_FFNeg, XOn => XOn, MsgOn => MsgOn, Violation => Rviol_SICP_FFNeg ); VitalPeriodPulseCheck ( TestSignal => RNeg_ipd, TestSignalName => "RNeg", Period => tperiod_RNeg_negedge, PulseWidthHigh => tpw_RNeg_posedge, PulseWidthLow => tpw_RNeg_negedge, HeaderMsg => InstancePath & PartID, CheckEnabled => TRUE, PeriodData => PD_RNeg, XOn => XOn, MsgOn => MsgOn, Violation => Pviol_RNeg ); VitalPeriodPulseCheck ( TestSignal => SICP_ipd, TestSignalName => "SICP", Period => tperiod_SICP_negedge, PulseWidthHigh => tpw_SICP_negedge, PulseWidthLow => tpw_SICP_negedge, HeaderMsg => InstancePath & PartID, CheckEnabled => TRUE, PeriodData => PD_SICP, XOn => XOn, MsgOn => MsgOn, Violation => Pviol_SICP ); VitalPeriodPulseCheck ( TestSignal => RSNeg_ipd, TestSignalName => "RSNeg", PulseWidthLow => tpw_RSNeg_negedge, HeaderMsg => InstancePath & PartID, CheckEnabled => TRUE, PeriodData => PD_RSNeg, XOn => XOn, MsgOn => MsgOn, Violation => Pviol_RSNeg ); VitalPeriodPulseCheck ( TestSignal => FLNeg_ipd, TestSignalName => "FLNeg", PulseWidthLow => tpw_FLNeg_negedge, HeaderMsg => InstancePath & PartID, CheckEnabled => TRUE, PeriodData => PD_FLNeg, XOn => XOn, MsgOn => MsgOn, Violation => Pviol_FLNeg ); VitalPeriodPulseCheck ( TestSignal => XINeg_ipd, TestSignalName => "XINeg", PulseWidthHigh => tpw_XINeg_posedge, PulseWidthLow => tpw_XINeg_negedge, HeaderMsg => InstancePath & PartID, CheckEnabled => TRUE, PeriodData => PD_XINeg, XOn => XOn, MsgOn => MsgOn, Violation => Pviol_XINeg ); END IF; ---------------------------------------------------------------------------- -- Functionality Section ---------------------------------------------------------------------------- Violation := Tviol_SI_SICP OR Tviol_SIX_SICP OR Tviol_RNeg_EF OR Tviol_SICP_RSNeg OR Tviol_RNeg_RSNeg OR Tviol_SICP_FLNeg OR Tviol_XINeg_SICP OR Tviol_XINeg_RNeg OR Rviol_SICP_FFNeg OR Pviol_RNeg OR Pviol_SICP OR Pviol_RSNeg OR Pviol_FLNeg OR Pviol_XINeg; -- reset IF falling_edge(RSNeg_ipd) THEN FFNeg_zd := '1'; XONeg_zd := '1'; EFNeg_zd := '0'; AEFNeg_zd := '0'; D8_zd := '0'; D7_zd := '0'; RDPoint := 0; WRPoint := 0; Count := 0; wr_inhibit := false; ELSIF rising_edge(RSNeg_ipd) THEN reset_done := true; IF XINeg_nwv = '0' THEN mode := single; rd_stat := act; wr_stat := act; ELSIF FLNeg_nwv = '0' THEN mode := first_exp; rd_stat := act; wr_stat := act; ELSE mode := other_exp; rd_stat := inact; wr_stat := inact; END IF; END IF; -- serial in IF rising_edge(SICP_ipd) AND SIX_nwv = '1' AND reset_done THEN IF wr_stat = act AND not wr_inhibit THEN in_reg(sicnt) := SI_nwv; IF sicnt = 0 THEN D7_zd := '0'; D8_zd := '0'; ELSIF sicnt = 1 AND Count = TotalLOC THEN FFNeg_zd := '0'; ELSIF sicnt = 7 THEN D7_zd := '1'; ELSIF sicnt = 8 THEN D8_zd := '1'; END IF; sicnt := sicnt + 1; END IF; ELSIF rising_edge(NWNeg_ipd) THEN -- load serial data IF wr_stat = act AND not wr_inhibit THEN MemData(WRPoint) := to_nat(in_reg); IF WRPoint < TotalLoc THEN WRPoint := WRPoint + 1; ELSE WRPoint := 0; END IF; EFNeg_zd := '1'; sicnt := 0; IF Count < TotalLOC THEN IF WRPoint >= RDPoint THEN Count := WRPoint - RDPoint; ELSE
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -