📄 idt71v65903.vhd
字号:
w_37 : VitalWireDelay (DQB7_ipd, DQB7, tipd_DQB7); w_38 : VitalWireDelay (DQB8_ipd, DQB8, tipd_DQB8); w_39 : VitalWireDelay (ADV_ipd, ADV, tipd_ADV); w_40 : VitalWireDelay (R_ipd, R, tipd_R); w_41 : VitalWireDelay (CLKENNeg_ipd, CLKENNeg, tipd_CLKENNeg); w_42 : VitalWireDelay (BWBNeg_ipd, BWBNeg, tipd_BWBNeg); w_43 : VitalWireDelay (BWANeg_ipd, BWANeg, tipd_BWANeg); w_44 : VitalWireDelay (CE1Neg_ipd, CE1Neg, tipd_CE1Neg); w_45 : VitalWireDelay (CE2Neg_ipd, CE2Neg, tipd_CE2Neg); w_46 : VitalWireDelay (CE2_ipd, CE2, tipd_CE2); w_47 : VitalWireDelay (CLK_ipd, CLK, tipd_CLK); w_48 : VitalWireDelay (ZZ_ipd, ZZ, tipd_ZZ); w_49 : VitalWireDelay (LBONeg_ipd, LBONeg, tipd_LBONeg); w_50 : VitalWireDelay (OENeg_ipd, OENeg, tipd_OENeg); END BLOCK; ---------------------------------------------------------------------------- -- Main Behavior Block ---------------------------------------------------------------------------- Behavior: BLOCK PORT ( BWBNIn : IN std_ulogic := 'U'; BWANIn : IN std_ulogic := 'U'; DatBIn : IN std_logic_vector(HiDbit downto 0); DatAIn : IN std_logic_vector(HiDbit downto 0); DataOut : OUT std_logic_vector(17 downto 0) := (others => 'Z'); CLKIn : IN std_ulogic := 'U'; CKENIn : IN std_ulogic := 'U'; AddressIn : IN std_logic_vector(HiAbit downto 0); OENegIn : IN std_ulogic := 'U'; RIn : IN std_ulogic := 'U'; ADVIn : IN std_ulogic := 'U'; CE2In : IN std_ulogic := 'U'; LBONegIn : IN std_ulogic := '1'; ZZIn : IN std_ulogic := 'U'; CE1NegIn : IN std_ulogic := 'U'; CE2NegIn : IN std_ulogic := 'U' ); PORT MAP ( BWBNIn => To_UX01(BWBNeg_ipd), BWANIn => To_UX01(BWANeg_ipd), CLKIn => CLK_ipd, CKENIn => To_UX01(CLKENNeg_ipd), OENegIn => To_UX01(OENeg_ipd), RIn => To_UX01(R_ipd), ZZIn => To_UX01(ZZ_ipd), ADVIn => To_UX01(ADV_ipd), CE2In => To_UX01(CE2_ipd), LBONegIn => To_UX01(LBONeg_ipd), CE1NegIn => To_UX01(CE1Neg_ipd), CE2NegIn => To_UX01(CE2Neg_ipd), DataOut(0) => DQA0, DataOut(1) => DQA1, DataOut(2) => DQA2, DataOut(3) => DQA3, DataOut(4) => DQA4, DataOut(5) => DQA5, DataOut(6) => DQA6, DataOut(7) => DQA7, DataOut(8) => DQA8, DataOut(9) => DQB0, DataOut(10) => DQB1, DataOut(11) => DQB2, DataOut(12) => DQB3, DataOut(13) => DQB4, DataOut(14) => DQB5, DataOut(15) => DQB6, DataOut(16) => DQB7, DataOut(17) => DQB8, DatAIn(0) => DQA0_ipd, DatAIn(1) => DQA1_ipd, DatAIn(2) => DQA2_ipd, DatAIn(3) => DQA3_ipd, DatAIn(4) => DQA4_ipd, DatAIn(5) => DQA5_ipd, DatAIn(6) => DQA6_ipd, DatAIn(7) => DQA7_ipd, DatAIn(8) => DQA8_ipd, DatBIn(0) => DQB0_ipd, DatBIn(1) => DQB1_ipd, DatBIn(2) => DQB2_ipd, DatBIn(3) => DQB3_ipd, DatBIn(4) => DQB4_ipd, DatBIn(5) => DQB5_ipd, DatBIn(6) => DQB6_ipd, DatBIn(7) => DQB7_ipd, DatBIn(8) => DQB8_ipd, AddressIn(0) => A0_ipd, AddressIn(1) => A1_ipd, AddressIn(2) => A2_ipd, AddressIn(3) => A3_ipd, AddressIn(4) => A4_ipd, AddressIn(5) => A5_ipd, AddressIn(6) => A6_ipd, AddressIn(7) => A7_ipd, AddressIn(8) => A8_ipd, AddressIn(9) => A9_ipd, AddressIn(10) => A10_ipd, AddressIn(11) => A11_ipd, AddressIn(12) => A12_ipd, AddressIn(13) => A13_ipd, AddressIn(14) => A14_ipd, AddressIn(15) => A15_ipd, AddressIn(16) => A16_ipd, AddressIn(17) => A17_ipd, AddressIn(18) => A18_ipd ); -- Type definition for state machine TYPE mem_state IS (desel, begin_rd, begin_wr, burst_rd, burst_wr ); SIGNAL state : mem_state; SIGNAL next_state : mem_state := desel; TYPE sequence IS ARRAY (0 to 3) OF INTEGER RANGE -3 to 3; TYPE seqtab IS ARRAY (0 to 3) OF sequence; CONSTANT il0 : sequence := (0, 1, 2, 3); 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); SIGNAL Burst_Seq : seqtab; SIGNAL D_zd : std_logic_vector(17 DOWNTO 0); BEGIN state <= next_state; Burst_Setup : PROCESS BEGIN IF (LBONegIn = '1') THEN Burst_Seq <= il; ELSE Burst_Seq <= ln; END IF; WAIT; -- Mode can be set only during power up END PROCESS Burst_Setup; ---------------------------------------------------------------------------- -- Main Behavior Process ---------------------------------------------------------------------------- Behavior : PROCESS (BWBNIn, BWANIn, DatBIn, DatAIn, CLKIn, CKENIn, AddressIn, RIn, OENegIn, ADVIn, CE2In, CE1NegIn, CE2NegIn, ZZIn, LoadMem) -- Type definition for commands TYPE command_type is (ds, burst, read, write ); -- Timing Check Variables VARIABLE Tviol_BWBN_CLK : X01 := '0'; VARIABLE TD_BWBN_CLK : VitalTimingDataType; VARIABLE Tviol_BWAN_CLK : X01 := '0'; VARIABLE TD_BWAN_CLK : VitalTimingDataType; VARIABLE Tviol_CKENIn_CLK : X01 := '0'; VARIABLE TD_CKENIn_CLK : VitalTimingDataType; VARIABLE Tviol_ADVIn_CLK : X01 := '0'; VARIABLE TD_ADVIn_CLK : VitalTimingDataType; VARIABLE Tviol_CE1NegIn_CLK : X01 := '0'; VARIABLE TD_CE1NegIn_CLK : VitalTimingDataType; VARIABLE Tviol_CE2NegIn_CLK : X01 := '0'; VARIABLE TD_CE2NegIn_CLK : VitalTimingDataType; VARIABLE Tviol_CE2In_CLK : X01 := '0'; VARIABLE TD_CE2In_CLK : VitalTimingDataType; VARIABLE Tviol_RIn_CLK : X01 := '0'; VARIABLE TD_RIn_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_AddressIn_CLK : X01 := '0'; VARIABLE TD_AddressIn_CLK : VitalTimingDataType; VARIABLE Pviol_CLK : X01 := '0'; VARIABLE PD_CLK : VitalPeriodDataType := VitalPeriodDataInit; -- Memory array declaration TYPE MemStore IS ARRAY (0 to TotalLOC) OF INTEGER RANGE -2 TO MaxData; FILE mem_file : text IS mem_file_name; VARIABLE MemDataA : MemStore; VARIABLE MemDataB : MemStore; VARIABLE ind : NATURAL := 0; VARIABLE buf : line; VARIABLE MemAddr : NATURAL RANGE 0 TO TotalLOC; VARIABLE MemAddr1 : NATURAL RANGE 0 TO TotalLOC; VARIABLE startaddr : NATURAL RANGE 0 TO TotalLOC; 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 BWB1 : UX01; VARIABLE BWA1 : UX01; VARIABLE BWB2 : UX01; VARIABLE BWA2 : UX01; VARIABLE wr1 : boolean := false; VARIABLE wr2 : boolean := false; -- Functionality Results Variables VARIABLE Violation : X01 := '0'; VARIABLE OBuf1 : std_logic_vector(17 DOWNTO 0) := (OTHERS => 'Z'); BEGIN -------------------------------------------------------------------- -- Timing Check Section -------------------------------------------------------------------- IF (TimingChecksOn) THEN 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 => (CKENIn ='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 => (CKENIn ='0'), RefTransition => '/', HeaderMsg => InstancePath & PartID, TimingData => TD_BWAN_CLK, XOn => XOn, MsgOn => MsgOn,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -