Chip123 科技應用創新平台
標題:
關於 合成 指令 clk_latence 的請益
[打印本頁]
作者:
trwh
時間:
2009-6-10 07:41 PM
標題:
關於 合成 指令 clk_latence 的請益
因為我的電路需要多種clk
- F& _$ {6 I) g
clk比此之間有延遲的關係
. Y) c2 N! u3 U k) w
例如 clk clk1 clk2 clk3
$ {( |, R8 Y+ C/ W: }, M
這些clk週期等相關設定都一樣的
# V3 g! S1 i8 L) J9 Y6 I, [0 [
唯一不同的是 clk1 比 clk 延遲0.375ns
$ d: X3 M! h- _& V! f
clk2 比 clk1 延遲0.375ns (clk2比 clk 延遲0.75ns)
, X# T4 Z2 Y1 |( a. w: F
clk3 比 clk2 延遲0.375ns (clk3比 clk 延遲1.125ns)
* X% P9 G! A8 h' N5 x" c5 x- }# d
但是我只要一個clk port 接出io pad
- ~: t- h& |6 ?0 j; w
也就是clk1 clk2 clk3 要由 clk產生
- m% X9 q! P4 L' }/ O: O! q( V& B: U9 \
因此我在verilog 寫一個 clk generator如下
2 m9 ^! j' Y" p9 i6 N5 j( X) D
3 u/ N: v5 y- |. W2 V! ?
module clk_generator (clk, clk1, clk2, clk3);
( ]( T8 G. ^9 i6 O/ l
input clk ;
$ z9 N* {( k3 j1 m- j! Z
output clk1, clk2, clk3 ;
% Z* R; P' w' y. M9 W1 b1 v
buf BUF_0(clk1,clk);
1 k2 @. O+ \7 S7 S0 {2 d: H1 g
buf BUF_2(clk2,clk1);
" j5 w/ l7 n& k* k g
buf BUF_3(clk3,clk2);
. K( `2 ?7 T7 ?7 y0 `
endmodule
% W/ `. o0 W/ E5 a. x3 u4 z
- |- K! V/ ~9 T X7 ^4 k% V4 G$ L
再我主要的module中引用如下
, d0 L# g( `; p% u; G# Y
module s4478( GND, VDD, clk, G1, G2, G3, G4, G5,OUT1, OUT2, OUT3, OUT4, OUT5, error );
& P- P1 {6 E7 w
input GND, VDD, clk, G1, G2, G3, G4, G5;
+ C! Z! J C% X7 {) i; f+ W) v
output OUT1, OUT2, OUT3, OUT4, OUT5, error;
M/ p* T8 @: f) P& j
wire clk1, clk2, clk3 ;
, f! W" u- M* K* n0 q1 |9 ^
.
9 Y3 i1 @; Q# ?7 a0 `, o. ]% K/ Y
.
( ], Y! ?% L+ ^& t0 ~
clk_generator clk_generator ( .clk(clk), .clk1(clk1), .clk2(clk2), .clk3(clk3) );
1 H+ Q Q1 c- h C9 r6 J( l8 E+ `; J
.
: F0 A! O! f! [* e
.
! T0 J& `. o9 L5 z: X; p7 Y: M* z
end module
" E1 F- k+ x& O# }
" k) A% p( Z; y' }
design vision 指令 clk部分描述如下
3 P: `/ {- F$ n. g1 i* M/ e
2 g4 j2 v, B# E+ \$ d7 r( t
current_design $active_design
$ N: ?) M$ `9 V. ?% X0 T
create_clock [get_ports clk] -period 4 -waveform {0 2}
1 S3 _. G/ L' K1 ]( l- f3 C9 f: i
set_clock_uncertainty 0.3 [get_ports clk]
4 O7 d) d* x7 G
set_clock_transition 0.3 [get_ports clk]
( P$ a! G& u6 R8 t+ _
set_fix_hold [get_clocks clk]
" }- P+ G% E. Y! c! l* J6 N
set_dont_touch_network [all_clocks]
3 T$ ?) O! Q- W- ?- B
set_drive [drive_of "CCU90mt1_05V_FBB_0909/INVd1/zn"] [get_ports clk]
& K1 I+ p$ O( i5 r
create_generated_clock -name clk1 -source clk -divide_by 1 [get_pins clk_generator/clk1]
5 ^* O: }! Y9 n' C
set_clock_latency 0.375 [get_pins clk_generator/clk1]
4 x, X$ j, C& m$ i7 H
create_generated_clock -name clk2 -source clk -divide_by 1 [get_pins clk_generator/clk2]
/ R/ L; c0 ]8 i) c2 U& z# O* p( I4 x
set_clock_latency 0.75 [get_pins clk_generator/clk2]
) J1 L) x2 e- T( Z2 H' |/ t, C7 E8 T
create_generated_clock -name clk3 -source clk -divide_by 1 [get_pins clk_generator/clk3]
: D1 N+ f$ V) w1 Y, D
set_clock_latency 1.125 [get_pins clk_generator/clk3]
5 T7 E0 w1 c3 }. p3 i) w& d/ Q
& r. E1 ~6 b" P5 v( D/ k
結果我的clk tree只有最原始的clk
$ _( m( m. A/ r: C6 X
clk1 clk2 clk3 都沒長出來
& L$ {! ?) U/ \ K2 ^% r+ l
不知是那裡用錯了或遺漏了
) q( k. i" G& W3 F
或是encounter clk沒設定好
* t# s8 D$ ~0 V2 }5 G
用了很久都用不好
# L8 [6 w, m8 p7 K' N
只好請教各位
5 _- M0 b2 M+ y
萬分感謝
作者:
masonchung
時間:
2009-6-11 09:59 PM
試一下
5 t9 {+ U( D8 O4 Z
set_clock_latency -source 0.375 [get_pins clk_generator/clk1]
, q2 E; U' N y5 y0 J
set_clock_latency -source 0.75 [get_pins clk_generator/clk2]
4 S |( s' V) }8 f1 |2 t7 [
set_clock_latency -source 1.125 [get_pins clk_generator/clk3]
]8 N, G! c2 {/ m' y
# a3 s% _) G8 K6 C# F
你的寫法是給下一級的constrain
, @% r/ o& {! t- s9 ^0 c- F, c
- M, q9 d* ~0 ~/ \! p
有錯請指正
歡迎光臨 Chip123 科技應用創新平台 (http://free.vireal.world/chip123_website/innoingbbs/)
Powered by Discuz! X3.2