📄 k7a163600a.vhd
字号:
HoldLow => thold_WEANeg_CLK, CheckEnabled => (ZZIn ='0'), RefTransition => '/', HeaderMsg => InstancePath & PartID, TimingData => TD_WEDN_CLK, XOn => XOn, MsgOn => MsgOn, Violation => Tviol_WEDN_CLK ); VitalSetupHoldCheck ( TestSignal => WECNIn, TestSignalName => "WEC", RefSignal => CLKIn, RefSignalName => "CLK", SetupHigh => tsetup_WEANeg_CLK, SetupLow => tsetup_WEANeg_CLK, HoldHigh => thold_WEANeg_CLK, HoldLow => thold_WEANeg_CLK, CheckEnabled => (ZZIn ='0'), RefTransition => '/', HeaderMsg => InstancePath & PartID, TimingData => TD_WECN_CLK, XOn => XOn, MsgOn => MsgOn, Violation => Tviol_WECN_CLK ); VitalSetupHoldCheck ( TestSignal => WEBNIn, TestSignalName => "WEB", RefSignal => CLKIn, RefSignalName => "CLK", SetupHigh => tsetup_WEANeg_CLK, SetupLow => tsetup_WEANeg_CLK, HoldHigh => thold_WEANeg_CLK, HoldLow => thold_WEANeg_CLK, CheckEnabled => (ZZIn ='0'), RefTransition => '/', HeaderMsg => InstancePath & PartID, TimingData => TD_WEBN_CLK, XOn => XOn, MsgOn => MsgOn, Violation => Tviol_WEBN_CLK ); VitalSetupHoldCheck ( TestSignal => WEANIn, TestSignalName => "WEA", RefSignal => CLKIn, RefSignalName => "CLK", SetupHigh => tsetup_WEANeg_CLK, SetupLow => tsetup_WEANeg_CLK, HoldHigh => thold_WEANeg_CLK, HoldLow => thold_WEANeg_CLK, CheckEnabled => (ZZIn ='0'), RefTransition => '/', HeaderMsg => InstancePath & PartID, TimingData => TD_WEAN_CLK, XOn => XOn, MsgOn => MsgOn, Violation => Tviol_WEAN_CLK ); VitalSetupHoldCheck ( TestSignal => ADVNIn, TestSignalName => "ADV", RefSignal => CLKIn, RefSignalName => "CLK", SetupHigh => tsetup_ADVNeg_CLK, SetupLow => tsetup_ADVNeg_CLK, HoldHigh => thold_ADVNeg_CLK, HoldLow => thold_ADVNeg_CLK, CheckEnabled => (ZZIn ='0'), RefTransition => '/', HeaderMsg => InstancePath & PartID, TimingData => TD_ADVNIn_CLK, XOn => XOn, MsgOn => MsgOn, Violation => Tviol_ADVNIn_CLK ); VitalSetupHoldCheck ( TestSignal => ADSPNIn, TestSignalName => "ADSP", RefSignal => CLKIn, RefSignalName => "CLK", SetupHigh => tsetup_ADSCNeg_CLK, SetupLow => tsetup_ADSCNeg_CLK, HoldHigh => thold_ADSCNeg_CLK, HoldLow => thold_ADSCNeg_CLK, CheckEnabled => (ZZIn ='0'), RefTransition => '/', HeaderMsg => InstancePath & PartID, TimingData => TD_ADSPNIn_CLK, XOn => XOn, MsgOn => MsgOn, Violation => Tviol_ADSPNIn_CLK ); VitalSetupHoldCheck ( TestSignal => ADSCNIn, TestSignalName => "ADSC", RefSignal => CLKIn, RefSignalName => "CLK", SetupHigh => tsetup_ADSCNeg_CLK, SetupLow => tsetup_ADSCNeg_CLK, HoldHigh => thold_ADSCNeg_CLK, HoldLow => thold_ADSCNeg_CLK, CheckEnabled => (ZZIn ='0'), RefTransition => '/', HeaderMsg => InstancePath & PartID, TimingData => TD_ADSCNIn_CLK, XOn => XOn, MsgOn => MsgOn, Violation => Tviol_ADSCNIn_CLK ); VitalSetupHoldCheck ( TestSignal => CS1NegIn, TestSignalName => "CS1Neg", RefSignal => CLKIn, RefSignalName => "CLK", SetupHigh => tsetup_CS2_CLK, SetupLow => tsetup_CS2_CLK, HoldHigh => thold_CS2_CLK, HoldLow => thold_CS2_CLK, CheckEnabled => (ZZIn ='0'), RefTransition => '/', HeaderMsg => InstancePath & PartID, TimingData => TD_CS1NegIn_CLK, XOn => XOn, MsgOn => MsgOn, Violation => Tviol_CS1NegIn_CLK ); VitalSetupHoldCheck ( TestSignal => CS2NegIn, TestSignalName => "CS2Neg", RefSignal => CLKIn, RefSignalName => "CLK", SetupHigh => tsetup_CS2_CLK, SetupLow => tsetup_CS2_CLK, HoldHigh => thold_CS2_CLK, HoldLow => thold_CS2_CLK, CheckEnabled => (ZZIn ='0'), RefTransition => '/', HeaderMsg => InstancePath & PartID, TimingData => TD_CS2NegIn_CLK, XOn => XOn, MsgOn => MsgOn, Violation => Tviol_CS2NegIn_CLK ); VitalSetupHoldCheck ( TestSignal => CS2In, TestSignalName => "CS2", RefSignal => CLKIn, RefSignalName => "CLK", SetupHigh => tsetup_CS2_CLK, SetupLow => tsetup_CS2_CLK, HoldHigh => thold_CS2_CLK, HoldLow => thold_CS2_CLK, CheckEnabled => (ZZIn ='0'), RefTransition => '/', HeaderMsg => InstancePath & PartID, TimingData => TD_CS2In_CLK, XOn => XOn, MsgOn => MsgOn, Violation => Tviol_CS2In_CLK ); VitalPeriodPulseCheck ( TestSignal => CLKIn, TestSignalName => "CLK", Period => tperiod_CLK_posedge, PulseWidthLow => tpw_CLK_negedge, PulseWidthHigh => tpw_CLK_posedge, PeriodData => PD_CLK, XOn => XOn, MsgOn => MsgOn, Violation => Pviol_CLK, HeaderMsg => InstancePath & PartID, CheckEnabled => (ZZIn ='0') ); Violation := Pviol_CLK OR Tviol_DatAIn_CLK OR Tviol_DatBIn_CLK OR Tviol_DatCIn_CLK OR Tviol_DatDIn_CLK OR Tviol_AddressIn_CLK OR Tviol_ADSCNIn_CLK OR Tviol_CS2In_CLK OR Tviol_CS2NegIn_CLK OR Tviol_CS1NegIn_CLK OR Tviol_ADVNIn_CLK OR Tviol_ADSPNIn_CLK OR Tviol_WEAN_CLK OR Tviol_WEBN_CLK OR Tviol_WECN_CLK OR Tviol_WEDN_CLK OR Tviol_BWEN_CLK OR Tviol_GWN_CLK; ASSERT Violation = '0' REPORT InstancePath & partID & ": simulation may be" & " inaccurate due to timing violations" SEVERITY SeverityMode; END IF; ---------------------------------------------------------------------------- -- Functional Section ---------------------------------------------------------------------------- IF rising_edge(CLKIn) AND (ZZIn = '0') AND zz_reset AND PoweredUp THEN ASSERT (not(Is_X(WEANIn))) REPORT InstancePath & partID & ": Unusable value for WEAN" SEVERITY SeverityMode; ASSERT (not(Is_X(WEBNIn))) REPORT InstancePath & partID & ": Unusable value for WEBN" SEVERITY SeverityMode; ASSERT (not(Is_X(WECNIn))) REPORT InstancePath & partID & ": Unusable value for WECN" SEVERITY SeverityMode; ASSERT (not(Is_X(WEDNIn))) REPORT InstancePath & partID & ": Unusable value for WEDN" SEVERITY SeverityMode; ASSERT (not(Is_X(GWNIn))) REPORT InstancePath & partID & ": Unusable value for GWN" SEVERITY SeverityMode; ASSERT (not(Is_X(BWENIn))) REPORT InstancePath & partID & ": Unusable value for BWEN" SEVERITY SeverityMode; ASSERT (not(Is_X(ADVNIn))) REPORT InstancePath & partID & ": Unusable value for ADVN" SEVERITY SeverityMode; ASSERT (not(Is_X(ADSPNIn))) REPORT InstancePath & partID & ": Unusable value for ADSPN" SEVERITY SeverityMode; ASSERT (not(Is_X(ADSCNIn))) REPORT InstancePath & partID & ": Unusable value for ADSCN" SEVERITY SeverityMode; ASSERT (not(Is_X(CS2In))) REPORT InstancePath & partID & ": Unusable value for CS2" SEVERITY SeverityMode; ASSERT (not(Is_X(CS1NegIn))) REPORT InstancePath & partID & ": Unusable value for CS1Neg" SEVERITY SeverityMode; ASSERT (not(Is_X(CS2NegIn))) REPORT InstancePath & partID & ": Unusable value for CS2Neg" SEVERITY SeverityMode; ASSERT (not(Is_X(LBONIn))) REPORT InstancePath & partID & ": Unusable value for LBONeg" SEVERITY SeverityMode; -- Command Decode IF (GWNIn = '1' AND (BWENIn = '1' OR (BWENIn = '0' AND WEANIn = '1' AND WEBNIn = '1' AND WECNIn = '1' AND WEDNIn = '1'))) THEN R := '1'; ELSE R := '0'; END IF; IF ((CS2NegIn = '1' AND CS1NegIn = '0') AND (ADSPNIn = '0' OR ADSCNIn = '0')) OR (CS1NegIn = '1' AND ADSCNIn = '0') OR ((CS2In = '0' AND CS1NegIn = '0') AND (ADSPNIn = '0' OR ADSCNIn = '0')) THEN command := ds; ELSIF ((CS2NegIn = '0' AND CS2In = '1' AND CS1NegIn = '0') AND (ADSPNIn = '0' OR (ADSPNIn = '1' AND ADSCNIn = '0' AND R = '1'))) THEN command := begin_rw; ELSIF (ADSCNIn = '1' AND (ADSPNIn = '1' OR CS1NegIn = '1') AND R = '1') THEN IF ADVNIn = '0' THEN command := read_burst; ELSE command := read_susp; END IF; ELSIF (ADSCNIn = '1' AND (ADSPNIn = '1' OR CS1NegIn = '1') AND R = '0') THEN IF ADVNIn = '0' THEN command := SPwr_burst; ELSE command := SPwr_susp; END IF; ELSIF (CS2NegIn = '0' AND CS2In = '1' AND CS1NegIn = '0' AND ADSPNIn = '1' AND ADSCNIn = '0' AND R = '0') THEN command := SCwr; ELSE ASSERT false REPORT InstancePath & partID & ": Could not decode "
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -