📄 k7a163600a.vhd
字号:
CONSTANT il1 : sequence := (0, -1, 2, 1); CONSTANT il2 : sequence := (0, 1, -2, -1); CONSTANT il3 : sequence := (0, -1, -2, -3); CONSTANT il : seqtab := (il0, il1, il2, il3); CONSTANT ln0 : sequence := (0, 1, 2, 3); CONSTANT ln1 : sequence := (0, 1, 2, -1); CONSTANT ln2 : sequence := (0, 1, -2, -1); CONSTANT ln3 : sequence := (0, -3, -2, -1); CONSTANT ln : seqtab := (ln0, ln1, ln2, ln3); CONSTANT MemSize : INTEGER := 16#7FFFF#; -- 512K CONSTANT MaxData : INTEGER := 16#1FF#; -- 511 -- Memory array declaration TYPE MemStore IS ARRAY (0 to MemSize) OF INTEGER RANGE -2 TO MaxData; SHARED VARIABLE MemDataA : MemStore; SHARED VARIABLE MemDataB : MemStore; SHARED VARIABLE MemDataC : MemStore; SHARED VARIABLE MemDataD : MemStore; SIGNAL Burst_Seq : seqtab := ln; SIGNAL D_zd : std_logic_vector(35 DOWNTO 0); BEGIN ---------------------------------------------------------------------------- -- Power Up time ---------------------------------------------------------------------------- PoweredUp <= TRUE AFTER tdevice_tPOW; Burst_Setup : PROCESS (LBONIn) BEGIN IF (LBONIn = '1') THEN Burst_Seq <= il; -- interleaved burst ELSIF (LBONIn = '0') THEN Burst_Seq <= ln; -- linear burst END IF; END PROCESS Burst_Setup; ---------------------------------------------------------------------------- -- Main Behavior Process ---------------------------------------------------------------------------- Behavior : PROCESS (WEANIn, WEBNIn, WECNIn, WEDNIn, DatAIn, DatBIn, DatCIn, DatDIN, CLKIn, AddressIn, GWNIn, BWENIn, OENegIn, ADVNIn, ADSPNIn, ADSCNIn, CS2In, CS1NegIn, CS2NegIn, ZZIn) -- Type definition for commands TYPE command_type is (ds, SPwr_burst, SPwr_susp, SCwr, begin_rw, read_burst, read_susp ); -- Timing Check Variables VARIABLE Tviol_AddressIn_CLK : X01 := '0'; VARIABLE TD_AddressIn_CLK : VitalTimingDataType; VARIABLE Tviol_DatDIn_CLK : X01 := '0'; VARIABLE TD_DatDIn_CLK : VitalTimingDataType; VARIABLE Tviol_DatCIn_CLK : X01 := '0'; VARIABLE TD_DatCIn_CLK : VitalTimingDataType; VARIABLE Tviol_DatBIn_CLK : X01 := '0'; VARIABLE TD_DatBIn_CLK : VitalTimingDataType; VARIABLE Tviol_DatAIn_CLK : X01 := '0'; VARIABLE TD_DatAIn_CLK : VitalTimingDataType; VARIABLE Tviol_WEDN_CLK : X01 := '0'; VARIABLE TD_WEDN_CLK : VitalTimingDataType; VARIABLE Tviol_WECN_CLK : X01 := '0'; VARIABLE TD_WECN_CLK : VitalTimingDataType; VARIABLE Tviol_WEBN_CLK : X01 := '0'; VARIABLE TD_WEBN_CLK : VitalTimingDataType; VARIABLE Tviol_WEAN_CLK : X01 := '0'; VARIABLE TD_WEAN_CLK : VitalTimingDataType; VARIABLE Tviol_BWEN_CLK : X01 := '0'; VARIABLE TD_BWEN_CLK : VitalTimingDataType; VARIABLE Tviol_GWN_CLK : X01 := '0'; VARIABLE TD_GWN_CLK : VitalTimingDataType; VARIABLE Tviol_ADVNIn_CLK : X01 := '0'; VARIABLE TD_ADVNIn_CLK : VitalTimingDataType; VARIABLE Tviol_ADSCNIn_CLK : X01 := '0'; VARIABLE TD_ADSCNIn_CLK : VitalTimingDataType; VARIABLE Tviol_ADSPNIn_CLK : X01 := '0'; VARIABLE TD_ADSPNIn_CLK : VitalTimingDataType; VARIABLE Tviol_CS1NegIn_CLK : X01 := '0'; VARIABLE TD_CS1NegIn_CLK : VitalTimingDataType; VARIABLE Tviol_CS2NegIn_CLK : X01 := '0'; VARIABLE TD_CS2NegIn_CLK : VitalTimingDataType; VARIABLE Tviol_CS2In_CLK : X01 := '0'; VARIABLE TD_CS2In_CLK : VitalTimingDataType; VARIABLE Pviol_CLK : X01 := '0'; VARIABLE PD_CLK : VitalPeriodDataType := VitalPeriodDataInit; VARIABLE MemAddr : NATURAL RANGE 0 TO MemSize; VARIABLE startaddr : NATURAL RANGE 0 TO MemSize; VARIABLE Burst_Cnt : NATURAL RANGE 0 TO 4 := 0; VARIABLE memstart : NATURAL RANGE 0 TO 3 := 0; VARIABLE offset : INTEGER RANGE -3 TO 3 := 0; VARIABLE command : command_type; VARIABLE R : std_logic; VARIABLE zz_set : BOOLEAN := false; VARIABLE zz_reset : BOOLEAN := true; VARIABLE zz_cnt : INTEGER RANGE 0 TO 2 := 0; -- Functionality Results Variables VARIABLE Violation : X01 := '0'; VARIABLE OBuf1 : std_logic_vector(35 DOWNTO 0) := (OTHERS => 'Z'); VARIABLE OBuf2 : std_logic_vector(35 DOWNTO 0) := (OTHERS => 'Z'); BEGIN -------------------------------------------------------------------- -- Timing Check Section -------------------------------------------------------------------- IF (TimingChecksOn) THEN VitalSetupHoldCheck ( TestSignal => AddressIn, TestSignalName => "Address", RefSignal => CLKIn, RefSignalName => "CLK", SetupHigh => tsetup_A0_CLK, SetupLow => tsetup_A0_CLK, HoldHigh => thold_A0_CLK, HoldLow => thold_A0_CLK, CheckEnabled => (ZZIn = '0'), RefTransition => '/', HeaderMsg => InstancePath & PartID, TimingData => TD_AddressIn_CLK, XOn => XOn, MsgOn => MsgOn, Violation => Tviol_AddressIn_CLK ); VitalSetupHoldCheck ( TestSignal => DatDIn, TestSignalName => "DatD", RefSignal => CLKIn, RefSignalName => "CLK", SetupHigh => tsetup_DQA0_CLK, SetupLow => tsetup_DQA0_CLK, HoldHigh => thold_DQA0_CLK, HoldLow => thold_DQA0_CLK, CheckEnabled => (ZZIn ='0'), RefTransition => '/', HeaderMsg => InstancePath & PartID, TimingData => TD_DatDIn_CLK, XOn => XOn, MsgOn => MsgOn, Violation => Tviol_DatDIn_CLK ); VitalSetupHoldCheck ( TestSignal => DatCIn, TestSignalName => "DatC", RefSignal => CLKIn, RefSignalName => "CLK", SetupHigh => tsetup_DQA0_CLK, SetupLow => tsetup_DQA0_CLK, HoldHigh => thold_DQA0_CLK, HoldLow => thold_DQA0_CLK, CheckEnabled => (ZZIn ='0'), RefTransition => '/', HeaderMsg => InstancePath & PartID, TimingData => TD_DatCIn_CLK, XOn => XOn, MsgOn => MsgOn, Violation => Tviol_DatCIn_CLK ); VitalSetupHoldCheck ( TestSignal => DatBIn, TestSignalName => "DatB", RefSignal => CLKIn, RefSignalName => "CLK", SetupHigh => tsetup_DQA0_CLK, SetupLow => tsetup_DQA0_CLK, HoldHigh => thold_DQA0_CLK, HoldLow => thold_DQA0_CLK, CheckEnabled => (ZZIn ='0'), RefTransition => '/', HeaderMsg => InstancePath & PartID, TimingData => TD_DatBIn_CLK, XOn => XOn, MsgOn => MsgOn, Violation => Tviol_DatBIn_CLK ); VitalSetupHoldCheck ( TestSignal => DatAIn, TestSignalName => "DatA", RefSignal => CLKIn, RefSignalName => "CLK", SetupHigh => tsetup_DQA0_CLK, SetupLow => tsetup_DQA0_CLK, HoldHigh => thold_DQA0_CLK, HoldLow => thold_DQA0_CLK, CheckEnabled => (ZZIn ='0'), RefTransition => '/', HeaderMsg => InstancePath & PartID, TimingData => TD_DatAIn_CLK, XOn => XOn, MsgOn => MsgOn, Violation => Tviol_DatAIn_CLK ); VitalSetupHoldCheck ( TestSignal => GWNIn, TestSignalName => "GW", 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_GWN_CLK, XOn => XOn, MsgOn => MsgOn, Violation => Tviol_GWN_CLK ); VitalSetupHoldCheck ( TestSignal => BWENIn, TestSignalName => "BWE", 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_BWEN_CLK, XOn => XOn, MsgOn => MsgOn, Violation => Tviol_BWEN_CLK ); VitalSetupHoldCheck ( TestSignal => WEDNIn, TestSignalName => "WED", RefSignal => CLKIn, RefSignalName => "CLK", SetupHigh => tsetup_WEANeg_CLK, SetupLow => tsetup_WEANeg_CLK, HoldHigh => thold_WEANeg_CLK,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -