Forum: FPGA, VHDL & Co. DE0-Board - SDRAM - SDC Constraint File.


von Holger K. (holgerkraehe)


Lesenswert?

Hallo zusammen

Ich würde gerne das SDRAM auf dem DE0 Board mittels Whishbone Interface 
an einen NEO430 anschliessen und einen gewissen Bereich des RAMs als VGA 
Buffer verwenden.

Der NEO430 soll selbst kein RAM des SDRAMs verwenden sondern nur 
Blockram.
Daher soll das SDRAM lediglich als VGA speicher dienen.

Nun die frage:

Ich habe das ganze mal aufgesetzt mit eigenem Controller fürs RAM und 
mit einer PLL mit 180° Phase Shift für den SDRAM Takt. Scheint zu 
funktionieren, soweit ich dies bisher getestet habe (hab bisher nur das 
Memory an sich getestet. Ohne Whishbone etc. )

Kann mir jemand etwas behilflich sein, was die constraints anbelangt?
Ich habe mir schon einige Dokumente und Videos zum Thema angeschaut aber 
bisher noch nicht so richtig herausgefunden, wass ich genau angeben 
muss. Der Hintergrund habe ich jedoch verstanden mit den Setup and Hold 
Zeiten.

In einem anderen Thread wird dazu geraten als minimum folgenden Eintrag 
zu verwenden:
1
create_clock -name {CLOCK_50} -period 20.000 [get_ports {CLOCK_50}]
2
derive_pll_clocks

Soll offenbar die Abhängigkeiten der PLL zum Grundtakt sicherstellen?

Wenn ich es richtig verstanden habe, dann sieht meine Übertragung ja wie 
folgt aus:

FPGA -> CLK, CAS, RAS etc. (Delay 1) -> RAM ->  Data Out etc. (Delay 2) 
-> FPGA

Also eigentlich die Laufzeit der Leitungen auf dem Board *2
Wobei das Timing ja eigentlich unterschiedlich ist.
Wenn ich nur Daten ans RAM sende also z.B. Speichern, dann ist es nur 
Delay 1. Wenn ich Daten auslese dann ist es Delay 1 + Delay 2.

Nun stellt sich mir die Frage, wie ich dies im SDC abbilden kann/soll?

An dieser Stelle wäre ich froh um Hilfe.

Danke schonmal.

von Holger K. (holgerkraehe)


Lesenswert?

Ich mache mal einen dezenten Push ^^

von Markus F. (mfro)


Lesenswert?


von Holger K. (holgerkraehe)


Lesenswert?

Markus F. schrieb:
> Kennst Du das:
>
> 
https://fpgawiki.intel.com/uploads/archive/3/3f/20101209192054%21TimeQuest_User_Guide.pdf
> ?

Danke

Mein SDC File sieht nun so aus:
1
set_time_format -unit ns -decimal_places 3
2
3
create_clock -name {clk_50MHz} -period 20.000 -waveform { 0.000 10.000 } [get_ports {clk}]
4
5
derive_pll_clocks -create_base_clocks
6
derive_clock_uncertainty
7
8
set sys_clk {pll|altpll_component|auto_generated|pll1|clk[0]}
9
set ram_clk {pll|altpll_component|auto_generated|pll1|clk[1]}
10
11
set maxInpDelay 0
12
set minInpDelay 0
13
14
set sdram_tsu       1.5
15
set sdram_th        0.8
16
set sdram_tco_min   2.7
17
set sdram_tco_max   6.5
18
19
# FPGA timing constraints
20
set sdram_input_delay_min        $sdram_tco_min
21
set sdram_input_delay_max        $sdram_tco_max
22
set sdram_output_delay_min      -$sdram_th
23
set sdram_output_delay_max       $sdram_tsu
24
25
26
# FPGA Inputs
27
set sdram_inputs [get_ports {
28
  sdData*
29
}]
30
set_input_delay \
31
  -clock $ram_clk \
32
  -min $sdram_input_delay_min \
33
  $sdram_inputs
34
set_input_delay \
35
  -clock $ram_clk \
36
  -max $sdram_input_delay_max \
37
  $sdram_inputs
38
39
set_input_delay -clock $sys_clk -max $maxInpDelay {UART_RX}
40
set_input_delay -clock $sys_clk -min $minInpDelay {UART_RX}
41
42
set maxOutDelay 0.1
43
set minOutDelay 0.0
44
45
set sdram_outputs [get_ports {
46
  sdAddr*
47
  sdCke*
48
  sdData*
49
  sdDq*
50
  sdBs*
51
  sdCas*
52
  sdWe*
53
  sd_clk*
54
  sdRas*
55
}] 
56
57
set_output_delay \
58
  -clock $ram_clk \
59
  -min $sdram_output_delay_min \
60
  $sdram_outputs
61
set_output_delay \
62
  -clock $ram_clk \
63
  -max $sdram_output_delay_max \
64
  $sdram_outputs
65
  
66
67
set_output_delay -clock $sys_clk -max $maxOutDelay {LED*}
68
set_output_delay -clock $sys_clk -min $minOutDelay {LED*}
69
70
set_output_delay -clock $sys_clk -max $maxOutDelay {UART_TX}
71
set_output_delay -clock $sys_clk -min $minOutDelay {UART_TX}
72
73
set_output_delay -clock $sys_clk -max $maxOutDelay {*LED}
74
set_output_delay -clock $sys_clk -min $minOutDelay {*LED}

Brauche ich für mein SDRAM einen multicycle pfad?

von Holger K. (holgerkraehe)


Lesenswert?

Ich bekomme die Meldung:
1
limit due to minimum period restriction (tmin)

Bei fmax summary.
Weis jemand, woher die kommen kann?

Ist scheinbar auf 10MHz begrenzt.
Ich weiss nichts von tmin.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.