Hallo liebes Forum,
Ich habe eine Frage zu Timingconstraints.
Folgendes Szenario:
Ein DDR-Datensignal & entsprechendes Clk-Signal liegt am FPGA an
und soll eingelesen werden. Genutzt wird ein IDDR
Daten --> FPGA Pads --> IOBUFDS --> IDDR
Clk --> FPGA Pads --> IOBUFDS --> BUFR --> IDDR
Das Post Place & Route Static timing (.twx) ergibt Folgendes:
1 | --------------------------------------------------------------------------------
|
2 |
|
3 | Hold Paths: TIMEGRP "RXA_SIGS" OFFSET = IN 1.75 ns VALID 3.5 ns BEFORE COMP "CLKAB_P"
|
4 | "RISING";
|
5 | --------------------------------------------------------------------------------
|
6 |
|
7 | Paths for end point Inst_FMC104_ADC_PHY/GEN_IDDR_A[5].IDDR_inst (ILOGIC_X0Y143.DDLY), 2 paths
|
8 | --------------------------------------------------------------------------------
|
9 | Slack (hold path): 0.089ns (requirement - (clock path + clock arrival + uncertainty - data path))
|
10 | Source: CHA_P<5> (PAD)
|
11 | Destination: Inst_FMC104_ADC_PHY/GEN_IDDR_A[5].IDDR_inst (FF)
|
12 | Destination Clock: CLKAB_OUT rising at 0.000ns
|
13 | Requirement: 1.750ns
|
14 | Data Path Delay: 5.638ns (Levels of Logic = 1)
|
15 | Clock Path Delay: 7.274ns (Levels of Logic = 2)
|
16 | Clock Uncertainty: 0.025ns
|
Frage: Das Constraint wird zwar noch erfüllt, aber ich wollte mal Fragen
ob es Möglichkeiten gibt den Slack zu verbessern (größer werden lassen)
indem man die Daten über ein IODelay schickt.
Mir stechen dabei diese beiden Zeilen ins Auge:
1 | Data Path Delay: 5.638ns (Levels of Logic = 1)
|
2 | Clock Path Delay: 7.274ns (Levels of Logic = 2)
|
Da müsste doch eigentlich "nur" der Data Path verzögert werden?!
Wie geht man hier am Besten vor um die Werte zu optimieren. Gibt es da
einen Ansatz im .UCF File entsprechend zu optimieren oder fügt man ein
IO-Delay ein...?
Gruß
Abel