Chip123 科技應用創新平台

標題: 關於 合成 指令 clk_latence 的請益 [打印本頁]

作者: trwh    時間: 2009-6-10 07:41 PM
標題: 關於 合成 指令 clk_latence 的請益
因為我的電路需要多種clk4 c& m7 F4 g7 N: Q8 a4 e# ~0 R
clk比此之間有延遲的關係
. h3 |9 H+ r; {0 n1 O例如 clk  clk1  clk2  clk38 O- S# t4 A/ O5 Q7 c, J
這些clk週期等相關設定都一樣的( |, C# N# N- Y9 v9 ^, n5 c
唯一不同的是  clk1 比 clk  延遲0.375ns
6 F/ b4 ^- @. m            clk2 比 clk1 延遲0.375ns  (clk2比 clk 延遲0.75ns)
2 Y0 J$ s: u1 T% `( Z( Z8 H5 w; a            clk3 比 clk2 延遲0.375ns  (clk3比 clk 延遲1.125ns)
( z- t( K) ^/ x* V5 A但是我只要一個clk port 接出io pad
1 O6 D. W% a1 M% f也就是clk1 clk2 clk3 要由 clk產生
+ \4 c/ j$ J) o# W* W5 ?  f因此我在verilog 寫一個 clk generator如下. ?1 ?8 q- F/ f- N" [

! ^3 R, L2 e! W) H( q2 x+ M4 E; a/ Qmodule clk_generator  (clk, clk1, clk2, clk3);  0 @  o3 l6 T: }* h# s' g9 E( k
  input clk ;
3 ^2 `- A' b2 C" A7 u' D: e  k  output clk1, clk2,  clk3 ;9 X- P' o6 S( H9 Q) g- b( v9 l
  buf BUF_0(clk1,clk);
. O8 _' f8 q) P/ m. U3 z  buf BUF_2(clk2,clk1);
3 b* q4 q6 _* z/ Y! b( S  buf BUF_3(clk3,clk2);
4 j; \6 y9 }* P) D# P/ q2 @endmodule
3 Y* p) t* M4 `' |6 y& |1 C  Y4 L$ d# @4 s: l) H; U" u
再我主要的module中引用如下% q7 g' {0 {" h  o8 a9 ^9 C+ P$ B
module s4478( GND, VDD, clk,  G1, G2, G3, G4, G5,OUT1, OUT2, OUT3, OUT4, OUT5, error );
9 X. ~8 s# s6 M  input GND, VDD, clk, G1, G2, G3, G4, G5;
& I# {. v, G7 f' D9 [  output OUT1, OUT2, OUT3, OUT4, OUT5, error;/ T# g* [* j' c5 N/ |$ k/ x# o
  wire   clk1, clk2, clk3 ;2 x6 d( C- E: A/ e" K/ r( ^2 O
./ Q8 h! D% W+ T8 u% L
.
3 B; @" M6 q- {' ^& dclk_generator clk_generator ( .clk(clk), .clk1(clk1), .clk2(clk2), .clk3(clk3) );  * i4 X4 r( L' [4 {: I1 o1 z5 P
.
% S% u" \- {+ @9 g6 t) _/ M.4 F2 `3 S; v9 ?" n8 E$ X
end module; e# }& ?1 z% }
# [4 P6 g7 z  |& q8 z
design vision 指令 clk部分描述如下
. x  G5 a8 J: W; o, q( \, s7 a+ ~+ V% D! W4 K* ~6 h1 @
current_design $active_design
) z6 Z/ n& E! W7 F4 L! F( G9 {create_clock [get_ports clk] -period 4 -waveform {0 2}
% X. a6 W4 X7 m& R- a0 }set_clock_uncertainty 0.3 [get_ports clk], W% h1 j: L/ K, ?- r
set_clock_transition 0.3 [get_ports clk]
7 I; A1 g# b4 @7 D% Z! nset_fix_hold [get_clocks clk]
4 M- g+ O% X4 W' [9 m) {. pset_dont_touch_network [all_clocks]% P, F+ L  f0 Z2 N1 R# @0 ~2 {
set_drive [drive_of "CCU90mt1_05V_FBB_0909/INVd1/zn"] [get_ports clk]
* ?) F$ \" a5 @1 Q+ P" vcreate_generated_clock  -name clk1 -source clk -divide_by 1 [get_pins clk_generator/clk1]  s) |' G6 a3 M5 F9 g5 @0 [
set_clock_latency 0.375  [get_pins clk_generator/clk1]* `& o; B& D7 F0 z+ _- Y: F
create_generated_clock  -name clk2 -source clk -divide_by 1 [get_pins clk_generator/clk2]- l+ p6 ?' d0 }6 u- c& R
set_clock_latency 0.75  [get_pins clk_generator/clk2]# F' j. {0 Q- y5 D. R# c
create_generated_clock  -name clk3 -source clk -divide_by 1 [get_pins clk_generator/clk3]# w! R! ?6 B& l" S$ R7 Q6 I
set_clock_latency 1.125 [get_pins clk_generator/clk3]0 Y! {) G9 P2 }( }6 q

5 C5 p: r" e4 d0 Y( B/ c結果我的clk tree只有最原始的clk/ Q; h- k% e6 B; G4 `2 L6 s
clk1 clk2 clk3 都沒長出來
, q9 f4 ^( e) ^% e" F0 M不知是那裡用錯了或遺漏了
* c7 R% r1 T  R$ {! I+ W或是encounter clk沒設定好7 L* }  E/ {$ x- Z5 Z, \, D
用了很久都用不好; N' X; \0 M0 n
只好請教各位( {( ~8 b" ^) @; o$ F% [) r% Y( y
萬分感謝
作者: masonchung    時間: 2009-6-11 09:59 PM
試一下
/ A& U1 t3 n7 ?: y$ ]set_clock_latency -source 0.375  [get_pins clk_generator/clk1]
% _3 Y8 K, l/ j  ?8 mset_clock_latency -source 0.75  [get_pins clk_generator/clk2]& k7 B' k7 X4 q) p/ b& e
set_clock_latency -source 1.125  [get_pins clk_generator/clk3]
* c$ Y, C) J0 z- W( j+ x- a+ s6 k
你的寫法是給下一級的constrain
7 x: g8 f5 A, Y, \# I) e' J. F' P3 k
: n" M& Z, J  I3 w: ?# l) ?有錯請指正




歡迎光臨 Chip123 科技應用創新平台 (http://www.chip123.com/) Powered by Discuz! X3.2