📄 cy7c1360.vhd
字号:
HeaderMsg => InstancePath & PartID, TimingData => TD_BWEN_CLK, XOn => XOn, MsgOn => MsgOn, Violation => Tviol_BWEN_CLK ); VitalSetupHoldCheck ( TestSignal => BWDNIn, TestSignalName => "BWD", RefSignal => CLKIn, RefSignalName => "CLK", SetupHigh => tsetup_BWANeg_CLK, SetupLow => tsetup_BWANeg_CLK, HoldHigh => thold_BWANeg_CLK, HoldLow => thold_BWANeg_CLK, CheckEnabled => (ZZIn ='0'), RefTransition => '/', HeaderMsg => InstancePath & PartID, TimingData => TD_BWDN_CLK, XOn => XOn, MsgOn => MsgOn, Violation => Tviol_BWDN_CLK ); VitalSetupHoldCheck ( TestSignal => BWCNIn, TestSignalName => "BWC", RefSignal => CLKIn, RefSignalName => "CLK", SetupHigh => tsetup_BWANeg_CLK, SetupLow => tsetup_BWANeg_CLK, HoldHigh => thold_BWANeg_CLK, HoldLow => thold_BWANeg_CLK, CheckEnabled => (ZZIn ='0'), RefTransition => '/', HeaderMsg => InstancePath & PartID, TimingData => TD_BWCN_CLK, XOn => XOn, MsgOn => MsgOn, Violation => Tviol_BWCN_CLK ); VitalSetupHoldCheck ( TestSignal => BWBNIn, TestSignalName => "BWB", RefSignal => CLKIn, RefSignalName => "CLK", SetupHigh => tsetup_BWANeg_CLK, SetupLow => tsetup_BWANeg_CLK, HoldHigh => thold_BWANeg_CLK, HoldLow => thold_BWANeg_CLK, CheckEnabled => (ZZIn ='0'), RefTransition => '/', HeaderMsg => InstancePath & PartID, TimingData => TD_BWBN_CLK, XOn => XOn, MsgOn => MsgOn, Violation => Tviol_BWBN_CLK ); VitalSetupHoldCheck ( TestSignal => BWANIn, TestSignalName => "BWA", RefSignal => CLKIn, RefSignalName => "CLK", SetupHigh => tsetup_BWANeg_CLK, SetupLow => tsetup_BWANeg_CLK, HoldHigh => thold_BWANeg_CLK, HoldLow => thold_BWANeg_CLK, CheckEnabled => (ZZIn ='0'), RefTransition => '/', HeaderMsg => InstancePath & PartID, TimingData => TD_BWAN_CLK, XOn => XOn, MsgOn => MsgOn, Violation => Tviol_BWAN_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 => CE1NegIn, TestSignalName => "CE1Neg", RefSignal => CLKIn, RefSignalName => "CLK", SetupHigh => tsetup_CE2_CLK, SetupLow => tsetup_CE2_CLK, HoldHigh => thold_CE2_CLK, HoldLow => thold_CE2_CLK, CheckEnabled => (ZZIn ='0'), RefTransition => '/', HeaderMsg => InstancePath & PartID, TimingData => TD_CE1NegIn_CLK, XOn => XOn, MsgOn => MsgOn, Violation => Tviol_CE1NegIn_CLK ); VitalSetupHoldCheck ( TestSignal => CE3NegIn, TestSignalName => "CE3Neg", RefSignal => CLKIn, RefSignalName => "CLK", SetupHigh => tsetup_CE2_CLK, SetupLow => tsetup_CE2_CLK, HoldHigh => thold_CE2_CLK, HoldLow => thold_CE2_CLK, CheckEnabled => (ZZIn ='0'), RefTransition => '/', HeaderMsg => InstancePath & PartID, TimingData => TD_CE3NegIn_CLK, XOn => XOn, MsgOn => MsgOn, Violation => Tviol_CE3NegIn_CLK ); VitalSetupHoldCheck ( TestSignal => CE2In, TestSignalName => "CE2", RefSignal => CLKIn, RefSignalName => "CLK", SetupHigh => tsetup_CE2_CLK, SetupLow => tsetup_CE2_CLK, HoldHigh => thold_CE2_CLK, HoldLow => thold_CE2_CLK, CheckEnabled => (ZZIn ='0'), RefTransition => '/', HeaderMsg => InstancePath & PartID, TimingData => TD_CE2In_CLK, XOn => XOn, MsgOn => MsgOn, Violation => Tviol_CE2In_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_CE2In_CLK OR Tviol_CE3NegIn_CLK OR Tviol_CE1NegIn_CLK OR Tviol_ADVNIn_CLK OR Tviol_ADSPNIn_CLK OR Tviol_BWAN_CLK OR Tviol_BWBN_CLK OR Tviol_BWCN_CLK OR Tviol_BWDN_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 THEN ASSERT (not(Is_X(BWANIn))) REPORT InstancePath & partID & ": Unusable value for BWAN" SEVERITY SeverityMode; ASSERT (not(Is_X(BWBNIn))) REPORT InstancePath & partID & ": Unusable value for BWBN" SEVERITY SeverityMode; ASSERT (not(Is_X(BWCNIn))) REPORT InstancePath & partID & ": Unusable value for BWCN" SEVERITY SeverityMode; ASSERT (not(Is_X(BWDNIn))) REPORT InstancePath & partID & ": Unusable value for BWDN" 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(CE2In))) REPORT InstancePath & partID & ": Unusable value for CE2" SEVERITY SeverityMode; ASSERT (not(Is_X(CE1NegIn))) REPORT InstancePath & partID & ": Unusable value for CE1Neg" SEVERITY SeverityMode; ASSERT (not(Is_X(CE3NegIn))) REPORT InstancePath & partID & ": Unusable value for CE3Neg" SEVERITY SeverityMode; -- Command Decode IF (GWNIn = '1' AND (BWENIn = '1' OR (BWENIn = '0' AND BWANIn = '1' AND BWBNIn = '1' AND BWCNIn = '1' AND BWDNIn = '1'))) THEN R := '1'; ELSE R := '0'; END IF; IF ((CE3NegIn = '1' AND CE1NegIn = '0') AND (ADSPNIn = '0' OR ADSCNIn = '0')) OR (CE1NegIn = '1' AND ADSCNIn = '0') OR ((CE2In = '0' AND CE1NegIn = '0') AND (ADSPNIn = '0' OR ADSCNIn = '0')) THEN command := ds; ELSIF (CE3NegIn = '0' AND CE2In = '1' AND CE1NegIn = '0' AND ADSPNIn = '0') THEN command := begin_rw; ELSIF (CE3NegIn = '0' AND CE2In = '1' AND CE1NegIn = '0' AND ADSPNIn = '1' AND ADSCNIn = '0' AND R = '1') THEN command := SCrd; ELSIF (ADSCNIn = '1' AND (ADSPNIn = '1' OR CE1NegIn = '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 CE1NegIn = '1') AND R = '0') THEN IF ADVNIn = '0' THEN command := SPwr_burst; ELSE command := SPwr_susp; END IF; ELSIF (CE3NegIn = '0' AND CE2In = '1' AND CE1NegIn = '0' AND ADSPNIn = '1' AND ADSCNIn = '0' AND R = '0') THEN command := SCwr; ELSE ASSERT false REPORT InstancePath & partID & ": Could not decode " & "command." SEVERITY SeverityMode;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -