Analizator timingów stwórz wygenerowane polecenie zegara

author-image

By

Analizator timingów uwzględnia zmiany zegara, zegary lub obwody, które modyfikują lub zmieniają parametry przychodzącego zegara lub hosta jako wygenerowane zegary. Dane wyjściowe tych obwodów należy zdefiniować jako wygenerowane zegary. Definicja ta umożliwia Analizatorowi Timing Analyzer analizę tych zegarów i uwzględnienie wszelkich opóźnień związanych z siecią.

Aby stworzyć wygenerowane zegary, można użyć polecenia create_generated_clock. Poniższa lista zawiera polecenie create_generated_clock oraz dostępne opcje:

create_generated_clock
   [nazwa <clock name>]
   -source <host pin>
   [-edges <edge list>]
   [-edge_shift <shift list>]
   [-divide_by <factor>]
   [-multiply_by <factor>multiply_by <factor create_generated_clock
   [-duty_cycle <percent>]
   [-add]
   [-invert]
   [-host_clock <clock>]
   [-phase <faz>]
   [-offset <offset>]
   <source objects>

W tabeli 1 opisano opcje polecenia create_generated_clock.

Tabela 1. Opis opcji polecenia create_generated_clock

Opis opcji
—name <clock name> Nazwa wygenerowanego zegara, na przykład clk_x2. Jeśli nie podasz nazwy zegara, nazwa zegara jest taka sama jak pierwszy węzeł, do którego jest przypisany.
-source <host pin> Pin <host> określa węzeł w projekcie, z którego pochodzą ustawienia zegara.
lista -edges <edge> |-edge_shift <shift> Opcja -edges określa nowe rosnące i opadające krawędzie w odniesieniu do narastających i opadających brzegów zegara hosta. Narastające i opadające brzegi zegara hosta są ponumerowane na 1,<n> począwszy od pierwszej wznoszącej się krawędzi, na przykład brzegu 1. Pierwszą opadającą krawędzią jest numer 2 na brzegu, następny rosnąca krawędź numer 3 i tak dalej. Lista <edge> musi być coraz bardziej uporządkowana. Ta sama krawędź może być stosowana w przypadku dwóch wpisów wskazujących na impuls zegara niezależny od cyklu obciążeń oryginalnego przebiegu fali. edge_shift określa ilość przesunięcia dla każdej krawędzi na liście <edge>. Opcja -invert może służyć do odwrócenia zegara po zastosowaniu -edges i -edge_shifts.
-divide_by <factor>| -multiply_by<factor> Czynniki divide_by i multiply_by są oparte na pierwszej wznoszącej się krawędzi zegara i rozszerzają lub zawężają przebieg fali o określone czynniki. Na przykład -divide_by 2 jest równorzędny dla -edges {1 3 5}. W przypadku zegarów mnożniowych można również określić cykl obciążeń. Analizator timingów obsługuje równocześnie określanie czynników mnożenia i dzielenia.
—duty_cycle<wydajne> Określa cykl obciążeń wygenerowanego zegara. Cykl obciążeń zastosowano jako ostatni.
-add Pozwala na określenie więcej niż jednego zegara do tego samego pinu.
-inwersja Inwersja jest stosowana na wyjściu zegara po zastosowaniu wszystkich innych modyfikacji, z wyjątkiem cyklu obciążeń.
-host_clock<clock> host_clock służy do określenia zegara, jeśli na pinie hosta istnieje wiele zegarów.
-phase<faz> Określa fazę wygenerowanego zegara.
zestaw -offset<> Określa przesunięcie wygenerowanego zegara.
<źródło przedmiotów> Określa porty lub piny, do których przypisane jest przypisanie.

Opóźnienia źródłowe są oparte na opóźnieniach sieci zegara zegara zegara hosta (niekoniecznie pin hosta). Możesz użyć polecenia set_clock_latency -source, aby zastąpić opóźnienia źródłowe.

Rys. 1 przedstawia przebiegi następujących poleceń SDC, które tworzą inwersję wygenerowanego zegara opartego na zegarze 10 ns.

create_clock -okres 10 [get_ports clk]
create_generated_clock -divide_by 1 -invert -source [get_registers clk] \
    [get_registers gen|clkreg]

Rys. 1. Generowanie zegara inwersji.

Rys. 2 przedstawia przebiegi następujących poleceń SDC, które modyfikują wygenerowany zegar za pomocą opcji -edges i -edge_shift.

create_clock -okres 10 -przebieg { 0 5 } [get_ports clk]
# Tworzy zegar divide-by-2
create_generated_clock -source [get_ports clk] -edges { 1 3 5 } \
    [get_registers clkdivA|clkreg]
# Tworzy zegar podział na 2, niezależny od cyklu obciążeń zegara hosta teraz 50%)
create_generated_clock -source [get_ports clk] -edges { 1 1 5 } -edge_shift  0 5 0 } \
    [get_registers clkdivB|clkreg]

Rys. 2. Brzegi i przesuwne brzegi wygenerowanego zegara.

Na rys. 3 pokazano wafeforms dla następujących poleceń SDC, które pokazują efekt opcji -multiply na wygenerowanym zegarze.

create_clock -okres 10 -przebieg { 0 5 } [get_ports clk]
# Tworzy zegar mnożenia przez-2
create_generated_clock -source [get_ports clk] -multiply_by 2 \
    [get_registers cl technologieult|clkreg]

Rys. 3. Mnożenie wygenerowanego zegara.

Materiały zawarte na tej stronie są tłumaczeniem z języka angielskiego, wykonanym częściowo przez człowieka, a częściowo automatycznie. Materiały te są udostępnione dla Twojej wygody i należy je traktować jedynie jako ogólne źródło informacji. Nie ma jednak gwarancji, że są one kompletne bądź poprawne. Jeśli istnieje jakakolwiek rozbieżność między wersją angielską tej strony a jej tłumaczeniem, wersja angielska jest wersją obowiązującą i ma rozstrzygające znaczenie. Wyświetl anglojęzyczną wersję tej strony.