📄 idt723642.vhd
字号:
HeaderMsg => InstancePath & partID, TimingData => TD_RST1Neg_CLKA, XOn => XOn, MsgOn => MsgOn, Violation => Tviol_RST1Neg_CLKA); -- RST2Neg/CLKB setup/hold time check VitalSetupHoldCheck ( TestSignal => RST2Neg, TestSignalName => "RST2Neg", RefSignal => CLKB, RefSignalName => "CLKB", SetupHigh => tsetup_RST2Neg_CLKB, SetupLow => tsetup_RST2Neg_CLKB, HoldHigh => thold_RST2Neg_CLKB, HoldLow => thold_RST2Neg_CLKB, CheckEnabled => True, RefTransition => '/', HeaderMsg => InstancePath & partID, TimingData => TD_RST2Neg_CLKB, XOn => XOn, MsgOn => MsgOn, Violation => Tviol_RST2Neg_CLKB); -- RST1Neg/CLKB setup/hold time check VitalSetupHoldCheck ( TestSignal => RST1Neg, TestSignalName => "RST1Neg", RefSignal => CLKB, RefSignalName => "CLKB", SetupHigh => tsetup_RST1Neg_CLKB, SetupLow => tsetup_RST1Neg_CLKB, HoldHigh => thold_RST1Neg_CLKB, HoldLow => thold_RST1Neg_CLKB, CheckEnabled => True, RefTransition => '/', HeaderMsg => InstancePath & partID, TimingData => TD_RST1Neg_CLKB, XOn => XOn, MsgOn => MsgOn, Violation => Tviol_RST1Neg_CLKB); --------------------------------------------------------------------------- -- FS0/RST1Neg setup/hold time check VitalSetupHoldCheck ( TestSignal => FS0, TestSignalName => "FS0", RefSignal => RST1Neg, RefSignalName => "RST1Neg", SetupHigh => tsetup_FS0_RST1Neg, SetupLow => tsetup_FS0_RST1Neg, HoldHigh => thold_FS0_RST1Neg, HoldLow => thold_FS0_RST1Neg, CheckEnabled => True, RefTransition => '/', HeaderMsg => InstancePath & partID, TimingData => TD_FS0_RST1Neg, XOn => XOn, MsgOn => MsgOn, Violation => Tviol_FS0_RST1Neg); -- FS1/RST1Neg setup/hold time check VitalSetupHoldCheck ( TestSignal => FS1, TestSignalName => "FS1", RefSignal => RST1Neg, RefSignalName => "RST1Neg", SetupHigh => tsetup_FS1_RST1Neg, SetupLow => tsetup_FS1_RST1Neg, HoldHigh => thold_FS1_RST1Neg, HoldLow => thold_FS1_RST1Neg, CheckEnabled => True, RefTransition => '/', HeaderMsg => InstancePath & partID, TimingData => TD_FS1_RST1Neg, XOn => XOn, MsgOn => MsgOn, Violation => Tviol_FS1_RST1Neg); -- FS0/RST2Neg setup/hold time check VitalSetupHoldCheck ( TestSignal => FS0, TestSignalName => "FS0", RefSignal => RST2Neg, RefSignalName => "RST2Neg", SetupHigh => tsetup_FS0_RST2Neg, SetupLow => tsetup_FS0_RST2Neg, HoldHigh => thold_FS0_RST2Neg, HoldLow => thold_FS0_RST2Neg, CheckEnabled => True, RefTransition => '/', HeaderMsg => InstancePath & partID, TimingData => TD_FS0_RST2Neg, XOn => XOn, MsgOn => MsgOn, Violation => Tviol_FS0_RST2Neg); -- FS1/RST2Neg setup/hold time check VitalSetupHoldCheck ( TestSignal => FS1, TestSignalName => "FS1", RefSignal => RST2Neg, RefSignalName => "RST2Neg", SetupHigh => tsetup_FS1_RST2Neg, SetupLow => tsetup_FS1_RST2Neg, HoldHigh => thold_FS1_RST2Neg, HoldLow => thold_FS1_RST2Neg, CheckEnabled => True, RefTransition => '/', HeaderMsg => InstancePath & partID, TimingData => TD_FS1_RST2Neg, XOn => XOn, MsgOn => MsgOn, Violation => Tviol_FS1_RST2Neg); Violation := Pviol_CLKA OR Pviol_CLKB OR Tviol_A0_CLKA OR Tviol_B0_CLKB OR Tviol_CSANeg_CLKA OR Tviol_CSBNeg_CLKB OR Tviol_WRA_CLKA OR Tviol_WRB_CLKB OR Tviol_ENA_CLKA OR Tviol_ENB_CLKB OR Tviol_MBA_CLKA OR Tviol_MBB_CLKB OR Tviol_RST1Neg_CLKA OR Tviol_RST2Neg_CLKA OR Tviol_RST1Neg_CLKB OR Tviol_RST2Neg_CLKB OR Tviol_FS0_RST1Neg OR Tviol_FS1_RST1Neg OR Tviol_FS0_RST2Neg OR Tviol_FS1_RST2Neg; ASSERT Violation = '0' REPORT InstancePath & partID & " : signal values may be" & " incorret due timing violation(s)" SEVERITY Warning; END IF; END PROCESS TimingChecks;---------------------------------------------------------------------------------- Functionality Section---------------------------------------------------------------------------------- Chosing programming method and setting value 0ffset registers X1int,X2int, Y1int,Y2int---------------------------------------------------------------------------------- Master reset prepare------------------------------------------------------------------------- Rst1OrRst2<=RST1Neg OR RST2Neg; Rst1AndRst2<=RST1Neg AND RST2Neg;----------------------------------------------------- -------------------------- -- Master RESET in state 0 at the simultaneuos RST1Neg,RST2Neg=0------------------------------------------------------------------------------- Master_RESET : PROCESS (Rst1OrRst2,Rst1AndRst2 ) BEGIN IF (Rst1OrRst2'Event AND Rst1OrRst2='0') THEN MasterResetWase <='1'; END IF; END PROCESS; MasterReset <= RST1Neg; ----------------------------------------------------------------------------- -- Programming offset register Y1int ( for almost empty flag port BA, AFANeg) ---------------------------------------------------------------------------- Story_Almost_Flags_Offs_Y1int: PROCESS (CLKA,RST1Neg ) VARIABLE FS: std_logic_vector(1 DOWNTO 0); BEGIN IF RST1Neg ='0'THEN Y1int <=0; ELSIF RST1Neg'Event AND RST1Neg = '1' -- AND MasterResetWase ='1' THEN FS := (FS1 & FS0); CASE FS IS WHEN "00" => NULL; WHEN "01" => Y1int <= 8; WHEN "10" => Y1int <= 16; WHEN "11" => Y1int <= 64; WHEN OTHERS => NULL; END CASE; ELSIF CLKA'EVENT AND CLKA = '1' THEN IF (IRA_zd = '1') AND (ENA = '1') AND (CSANeg = '0') AND (ProgrOffsetint= '1' ) AND (MBA = '0') AND (WRA = '1') AND (CountWrCLKAint= 0)THEN Y1int<= to_nat( A_ipd(FIFOPOWER-1 downto 0)) ; ----- convert t0 natural, length variable!! END IF; END IF; END PROCESS; ------------------------------------------------------------------------ -- Programming offset register X1int ( for almost empty flagport B, AEBNeg) ---------------------------------------------------------------------------- Story_Almost_Flags_Offs_X1int: PROCESS (CLKA,RST1Neg ) VARIABLE FS: std_logic_vector(1 DOWNTO 0); BEGIN IF RST1Neg ='0'THEN X1int <=0; ELSIF RST1Neg'Event AND RST1Neg = '1' -- AND MasterResetWase ='1' THEN FS := (FS1 & FS0); CASE FS IS WHEN "00" => NULL; WHEN "01" => X1int <= 8; WHEN "10" => X1int <= 16; WHEN "11" => X1int <= 64; WHEN OTHERS => NULL; END CASE; ELSIF CLKA'EVENT AND CLKA = '1' THEN IF (IRA_zd = '1') AND (ENA = '1') AND (CSANeg = '0') AND (ProgrOffsetint= '1' )AND (MBA = '0') AND (WRA = '1')AND(CountWrCLKAint= 1)THEN X1int<= to_nat( A_ipd(FIFOPOWER-1 downto 0)); ----- convert, length variable!! END IF; END IF; END PROCESS; ---------------------------------------------------------------------- -- Programming offset register Y2int ( for almost empty flag port BA, AFANeg) ---------------------------------------------------------------------------- Story_Almost_Flags_Offs_Y2int: PROCESS (CLKA,RST2Neg) --,RST1Neg) VARIABLE FS: std_logic_vector(1 DOWNTO 0); BEGIN IF RST2Neg='0' THEN Y2int <=0; ELSIF (RST2Neg'Event AND RST2Neg = '1') THEN FS := (FS1 & FS0); CASE FS IS WHEN "00" => NULL; WHEN "01" => Y2int <= 8; WHEN "10" => Y2int <= 16; WHEN "11" => Y2int <= 64; WHEN OTHERS => NULL; END CASE; ELSIF CLKA'EVENT AND CLKA = '1' THEN IF (IRA_zd = '1') AND (ENA = '1') AND (CSANeg = '0') AND (ProgrOffsetint= '1' )AND (MBA = '0') AND (WRA = '1')AND(CountWrCLKAint= 2)THEN Y2int<= to_nat( A_ipd(FIFOPOWER-1 downto 0)); ----- to convert, length variable!! END IF; END IF; END PROCESS; ------------------------------------------------------------------------------- -- Programming offset register X2int ( for almost empty flag port A, AEANeg) ---------------------------------------------------------------------------- Story_Almost_Flags_Offs_X2int: PROCESS (CLKA,RST2Neg) --,RST1Neg) VARIABLE FS: std_logic_vector(1 DOWNTO 0); BEGIN IF RST2Neg='0' THEN X2int <=0; ELSIF (RST2Neg'Event AND RST2Neg = '1' ) THEN FS := (FS1 & FS0); CASE FS IS WHEN "00" => NULL; WHEN "01" => X2int <= 8; WHEN "10" => X2int <= 16; WHEN "11" => X2int <= 64; WHEN OTHERS => NULL; END CASE; ELSIF CLKA'EVENT AND CLKA = '1' THEN IF (IRA_zd = '1') AND (ENA = '1') AND (CSANeg = '0') AND (ProgrOffsetint= '1' )AND (MBA = '0') AND (WRA = '1')AND(CountWrCLKAint= 3)THEN X2int<= to_nat( A_ipd(FIFOPOWER-1 downto 0)); ----- it need to convert, length variable!! END IF; END IF; END PROCESS;-------------------------------------------------------------------------Drive Programming offset regime inicator ProgrOffsetint------------------------------------------------------------------ Drive_ProgrOffsetint:PROCESS (CountWrCLKAint, MasterReset, MasterResetWase) VARIABLE FS: std_logic_vector(1 DOWNTO 0); BEGIN IF MasterResetWase'event AND MasterResetWase='1' THEN ProgrOffsetint<= '0'; ELSIF MasterReset'EVENT AND MasterReset='1' THEN FS := (FS1 & FS0); IF FS="00" THEN ProgrOffsetint<= '1'; END IF; ELSIF CountWrCLKAint>= 4 THEN ProgrOffsetint<= '0'; END IF; END PROCESS; ----------------------------------------------------------------------- -- CountWrCLKAint -after Master Reset and (FS1,FS0)=00------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -