Timing Analyzer menganggap pembagi clock, clock ripple, atau sirkuit yang mengubah atau mengubah karakteristik clock masuk atau host sebagai clock yang dihasilkan. Anda harus menentukan keluaran sirkuit ini sebagai clock yang dihasilkan. Definisi ini memungkinkan Penganalisis Waktu untuk menganalisis clock dan akun ini untuk setiap latensi jaringan yang terkait dengannya.
Anda dapat menggunakan perintah create_generated_clock untuk membuat clock yang dihasilkan. Daftar berikut menunjukkan perintah create_generated_clock dan opsi yang tersedia:
create_generated_clock [-name <clock name>] -source <host pin> [-edges <edge list>] [-edge_shift <shift list>] [-divide_by <factor>] [-multiply_by <factor>] [-duty_cycle <percent>] [-add] [-invert] [-host_clock <clock>] [-phase <phase>] [-offset <offset>] <source object>
Tabel 1 menguraikan opsi untuk perintah create_generated_clock.
Tabel 1. Deskripsi Opsi untuk Perintah create_generated_clock
Deskripsi Opsi | |
---|---|
-nama < namaclock> | Nama clock yang dihasilkan, misalnya, clk_x2. Jika Anda tidak menentukan nama clock, nama clock sama dengan node pertama yang ditetapkan. |
pin -source <host> | Pin <host> menentukan node dalam desain dari mana pengaturan clock berasal. |
-edge < daftar <> |-edge_shift <shift list> | Opsi -edges menentukan tepi baru yang naik dan turun sehubungan dengan kenaikan clock host dan tepi yang terjatuh. Tepi clock host naik dan turun bernomor 1..<n> dimulai dengan edge pertama yang naik, misalnya, edge 1. Tepi pertama yang terjatuh setelah itu adalah edge nomor 2, edge naik berikutnya nomor 3, dan sebagainya. Daftar <edge> harus meningkat urutannya. Edge yang sama dapat digunakan untuk dua entri untuk mengindikasikan pulsa clock yang terlepas dari siklus tugas bentuk gelombang asli. edge_shift menentukan jumlah peralihan untuk setiap edge dalam daftar <edge>. Opsi -invert dapat digunakan untuk menginversi clock setelah -edge dan -edge_shifts diterapkan. |
-divide_by <faktor>| -multiply_by<faktor> | Faktor divide_by dan multiply_by didasarkan pada kenaikan edge clock pertama, dan memperluas atau mengontrak bentuk gelombang berdasarkan faktor yang ditentukan. Misalnya, -divide_by 2 setara dengan -edge {1 3 5}. Untuk clock multiplied, siklus tugas juga dapat ditentukan. Penganalisis Waktu mendukung penunjukan faktor perkalian dan pembagi secara bersamaan. |
-duty_cycle<percent> | Menentukan siklus tugas dari clock yang dihasilkan. Siklus tugas diterapkan terakhir. |
-add | Memungkinkan Anda menentukan lebih dari satu clock pada pin yang sama. |
-invert | Inversi diterapkan pada output clock setelah semua modifikasi lain diterapkan, kecuali siklus tugas. |
-host_clock<clock> | host_clock digunakan untuk menentukan clock jika ada beberapa clock pada pin host. |
-phase<phase> | Menentukan fase clock yang dihasilkan. |
-offset<offset> | Menentukan offset dari clock yang dihasilkan. |
<saluran objek> | Menentukan port atau pin yang sesuai dengan penetapan. |
Latensi sumber didasarkan pada penundaan jaringan clock dari host clock (tidak harus pin host). Anda dapat menggunakan perintah set_clock_latency -source untuk mengganti latensi sumber.
Gambar 1 menunjukkan bentuk gelombang untuk perintah SDC berikut yang membuat clock yang dihasilkan terbalik berdasarkan clock 10 ns.
create_clock -periode 10 [get_ports clk] create_generated_clock -divide_by 1 -invert -source [get_registers clk] \ [get_registers gen|clkreg]
Gambar 2 menunjukkan bentuk gelombang untuk perintah SDC berikut yang mengubah clock yang dihasilkan menggunakan opsi -edges dan -edge_shift.
create_clock -periode 10 -waveform { 0 5 } [get_ports clk] # Menciptakan sumber create_generated_clock clock divide-by-2 [get_ports clk] -edges { 1 3 5 } \ [get_registers clkdivA|clkreg] # Membuat clock terpisah berdasarkan 2 clock terpisah dari siklus tugas host clock kini 50%) create_generated_clock -source [get_ports clk] -edges { 1 1 5 } -edge_shift 0 5 0 } \ [get_registers clkdivB|clkreg]
Gambar 3 menunjukkan wafeform untuk perintah SDC berikut yang menunjukkan efek dari opsi -multiply pada clock yang dihasilkan.
create_clock -periode 10 -waveform { 0 5 } [get_ports clk] # Membuat sumber clock create_generated_clock multiply-by-2 [get_ports clk] -multiply_by 2 \ [get_registers clkmult|clkreg]