# Input clock has a period of 16 ns.
# OFFSET requirement is 10 ns before on inputs and 12 ns after on outputs.
# 手順 1. PERIOD 制約を元のクロックに設定して、DDR フリップフロップをグループにまとめます。
NET "main_clk" TNM_NET = "main_clk_grp";
TIMESPEC "TS_main_clk" = PERIOD "main_clk_grp" 16 ns HIGH 50%;
# Step 2. I/O をグループにまとめます。
INST DDR_inputs* TNM = IN_DDR; # IN_DDR includes only pads
INST DDR_outputs* TNM = OUT_DDR; # OUT_DDR includes only pads
# Step 3. 立ち下がりエッジのフリップフロップのサブグループを作成します。
TIMEGRP "falling_reg" = FALLING "main_clk_grp"; # Falling _reg includes synchronous elements
# OR
INST "IN_DDR_01" TNM = "falling_reg"; # Falling_reg includes synchronous elements
# Step 4. DDR グループに OFFSET 制約を設定します。
TIMEGRP "IN_DDR" OFFSET = IN 10 ns BEFORE "main_clk";
TIMEGRP "OUT_DDR" OFFSET = OUT 12 ns AFTER "main_clk";
# Step 5. 立ち下がりエッジのフリップフロップ向けに調整した OFFSET 制約を作成します。
TIMEGRP "IN_DDR" OFFSET = IN 2 ns BEFORE "main_clk" TIMEGRP "falling_reg"; # User Manually Adjusts the Requirement
TIMEGRP "OUT_DDR" OFFSET = OUT 20 ns AFTER "main_clk" TIMEGRP "falling_reg"; # User Manually Adjusts the Requirement
(*) この調整は、CLK180 のクロック エッジを考慮に入れるため必要です。
PERIOD 制約で HIGH を開始エッジと指定している場合、CLK180 で動作するフリップフロップに対して、OFFSET IN 制約からクロック周期の 1/2 を引き、OFFSET OUT 制約にクロック周期の 1/2 を足します。
次に例を示します。
# Input clock has a period of 16 ns.
# OFFSET requirement is 10 ns before on inputs and 12 ns after on outputs.
# CLK0 and CLK180 are the name of clock signals output by DCM CLK0 and CLK180 ports.
# 手順 1. PERIOD 制約を元のクロックに設定して、DDR フリップフロップをグループにまとめます。
NET "main_clk" TNM_NET = "main_clk_grp";
TIMESPEC "TS_main_clk" = PERIOD "main_clk_grp" 16 ns HIGH 50%;
# Step 2. I/O をグループにまとめます。
INST DDR_inputs* TNM = IN_DDR; # IN_DDR includes only pads
INST DDR_outputs* TNM = OUT_DDR; # OUT_DDR includes only pads
# Step 3. CLK0 および CLK180 でクロックが供給されるフリップフロップのサブグループを作成します。
NET "CLK0" TNM_NET = "clk0_grp"; # Group FFs that are clocked by DCM CLK0 output
NET "CLK180" TNM_NET = "clk180_grp"; # Group FFs that are clocked by DCM CLK180 output
# Step 4. DDR グループに OFFSET 制約を設定します。
TIMEGRP "IN_DDR" OFFSET = IN 10 ns BEFORE "main_clk" TIMEGRP "clk0_grp";
TIMEGRP "OUT_DDR" OFFSET = OUT 12 ns AFTER "main_clk" TIMEGRP "clk0_grp";
# Step 5. CLK180 でクロックが供給されるフリップフロップに、調整された OFFSET 制約を設定します (*)。
TIMEGRP "IN_DDR" OFFSET = IN 2 ns BEFORE "main_clk" TIMEGRP "clk180_grp"; # User Manually Adjusts the Requirement
TIMEGRP "OUT_DDR" OFFSET = OUT 20 ns AFTER "main_clk" TIMEGRP "clk180_grp"; # User Manually Adjusts the Requirement
回避策 3 (DDR が DCM/PLL/MMCM の CLK0 を使用して動作する場合のみ)
この手順は、次のとおりです。
次に例を示します。
# Input clock has a period of 16 ns.
# OFFSET requirement is 10 ns before on inputs and 12 ns after on outputs.
# 手順 1. PERIOD 制約を元のクロックに設定して、DDR フリップフロップをグループにまとめます。
NET "main_clk" TNM_NET = "main_clk_grp";
TIMESPEC "TS_main_clk" = PERIOD "main_clk_grp" 16 ns HIGH 50%;
# Step 2. I/O パッドをグループにまとめます。
INST DDR_inputs* TNM = IN_DDR; # IN_DDR includes only pads
INST DDR_outputs* TNM = OUT_DDR; # OUT_DDR includes only pads
# Step 3. DDR グループに OFFSET 制約を設定します。
TIMEGRP "IN_DDR" OFFSET = IN 10 ns BEFORE "main_clk" RISING";
TIMEGRP "OUT_DDR" OFFSET = OUT 12 ns AFTER "main_clk" RISING;
TIMEGRP "IN_DDR" OFFSET = IN10 ns BEFORE "main_clk" FALING;
TIMEGRP "OUT_DDR" OFFSET = OUT12 ns AFTER "main_clk"FALLING;
AR# 12819 | |
---|---|
日付 | 11/25/2014 |
ステータス | アクティブ |
種類 | 一般 |
ツール |