Dalam antarmuka output yang sinkron sumber, FPGA sumber clock untuk perangkat tujuan. Dalam antarmuka sinkron sumber yang diselaraskan pusat, transisi clock terjadi di tengah jendela data yang valid. Gambar 1 menunjukkan antarmuka output sampel yang sinkron sumber.
Gunakan langkah-langkah berikut untuk membatasi antarmuka keluaran sinkron sumber yang diselaraskan pusat:
- Membuat clock dasar dan yang dihasilkan
- Tambahkan batasan penundaan output
- Tambahkan pengecualian jalur palsu untuk mengecualikan jalur yang tidak valid dari analisis waktu dan pelaporan
Untuk detail lebih lanjut tentang salah satu langkah ini, atau perhitungan dan batasan yang dijelaskan di bawah ini, lihat AN 433: Membatasi dan Menganalisis Antarmuka Sinkron Sumber (PDF).
Jam
Clock dasar diperlukan pada port input FPGA.
Clock yang dihasilkan diperlukan pada semua keluaran phase-locked loop (PLL). Output sinkron yang diselaraskan pusat data ganda mengubah clock output sebesar 90 derajat, dibandingkan dengan clock data.
Clock yang dihasilkan diperlukan pada port clock keluaran FPGA. Clock yang dihasilkan adalah referensi clock untuk nilai penundaan output untuk bus data.
Batasan Penundaan Output
Anda dapat menggunakan spesifikasi sate maksimum untuk menghitung nilai tunda output. Spesifikasi skew maksimum mengindikasikan variasi waktu yang diizinkan untuk setiap bit bus data untuk meninggalkan FPGA.
Nilai keterlambatan maksimum output adalah (interval unit /2) - nilai skew maksimum.
Nilai keterlambatan minimum output adalah nilai skew maksimum - (1,5 * interval unit).
Pengecualian Jalur Palsu
Dalam contoh yang diselaraskan pusat ini, data ditransfer pada transisi clock clock rise-rise and fall-fall serta. Gunakan pengecualian jalur palsu untuk mengurangi transisi clock rise-fall dan fall-rise, karena data tidak ditransfer pada transisi clock edge yang berlawanan.
Contoh File SDC
# Create a base clock on the input port of the FPGA, with a 10 ns period
create_clock -name input_clock -period 10 [get_ports clk_in]
# Create generated clocks on the PLL outputs
# Output clk[0] drives the data register
# Output clk[1] drives the output clock port with a 90 degree shift
create_generated_clock -name data_clock -source [get_pins pll|inclk[0]] \
[get_pins pll|clk[0]]
create_generated_clock -name clock_clock -phase 90 -source [get_pins pll|inclk[0] \
[get_pins pll|clk[1]]
# Create the generated clock on the output clock port of the FPGA
create_generated_clock -name output_clock -source [get_pins pll|clk[1]] \
[get_ports clk_out]
# Add maximum and minimum output delay constraints
# assuming a skew requirement of +/- 250ps
# Use the equations for the output delay values listed above
set_output_delay -max -clock output_clock [expr { (5 / 2) - 0.250 }] \
[get_ports data_out*]
set_output_delay -max -clock output_clock -clock_fall \
[expr { (5 / 2) - 0.250 }] [get_ports data_out*] -add
set_output_delay -min -clock output_clock [expr { (0.250 - (1.5 * 5) }] \
[get_ports data_out*]
set_output_delay -min -clock output_clock -clock_fall \
[expr { (0.250 - ( 1.5 * 5 ) }] [get_ports data_out*] -add
# Add false path exceptions for cross-clock transfers
set_false_path -setup -end -rise_from [get_clocks data_clock] \
-fall_to [get_clocks output_clock]
set_false_path -setup -end -fall_from [get_clocks data_clock] \
-rise_to [get_clocks output_clock]
set_false_path -hold -end -rise_from [get_clocks data_clock] \
-fall_to [get_clocks output_clock]
set_false_path -hold -end -fall_from [get_clocks data_clock] \
-rise_to [get_clocks output_clock]