|
因為我的電路需要多種clk
9 E( J- f( D1 H4 C d8 h! A/ Oclk比此之間有延遲的關係
0 D& s* h2 v3 H# a4 X* t- K例如 clk clk1 clk2 clk3 l6 T% Z, U Y5 b& v
這些clk週期等相關設定都一樣的9 h! c; x1 T3 L! H/ C$ a
唯一不同的是 clk1 比 clk 延遲0.375ns# w% J/ ^$ {+ ]( v! S4 `
clk2 比 clk1 延遲0.375ns (clk2比 clk 延遲0.75ns)$ |0 ?' A6 B8 A3 T
clk3 比 clk2 延遲0.375ns (clk3比 clk 延遲1.125ns)+ x( |4 l" Z$ j. w9 i
但是我只要一個clk port 接出io pad
! _, [7 ^) I1 W* S) h也就是clk1 clk2 clk3 要由 clk產生 }$ c* Q% k. V X: z' j
因此我在verilog 寫一個 clk generator如下# m$ C5 z) H. R0 v$ E5 @ r
* o8 t+ I. f5 U4 Q# Y* H6 h1 Dmodule clk_generator (clk, clk1, clk2, clk3);
5 S+ Z2 H* `$ U5 V input clk ;
% E+ j r6 ~2 m! F% H output clk1, clk2, clk3 ;8 v6 S1 Y( T6 c) F4 H
buf BUF_0(clk1,clk);: C1 T; C5 d; D+ h! g' v5 ?
buf BUF_2(clk2,clk1);7 L: }+ O6 E; l
buf BUF_3(clk3,clk2);8 ]" x- h) n3 y. x5 H& V$ E: @
endmodule9 Y C; p/ y( t( H L( L, _
3 h) ?' z; N5 I8 U再我主要的module中引用如下$ v* I3 u. S/ N7 k5 S v
module s4478( GND, VDD, clk, G1, G2, G3, G4, G5,OUT1, OUT2, OUT3, OUT4, OUT5, error ); ' K* @0 x: f" U& _. `8 n
input GND, VDD, clk, G1, G2, G3, G4, G5;
/ y8 A! S/ E1 Y8 D# A1 b output OUT1, OUT2, OUT3, OUT4, OUT5, error;: k( x9 e \/ O2 b$ w" M
wire clk1, clk2, clk3 ;
6 }1 r, r. j: s" g% F2 z, `& W.8 X W! I, ?% |/ q! F
.: H" R1 j+ j4 V
clk_generator clk_generator ( .clk(clk), .clk1(clk1), .clk2(clk2), .clk3(clk3) ); ! d" c" ~/ ` H1 c$ a7 p3 Z
.
h Q. g% m6 z" g., f2 Z$ ?. j. n+ v! O
end module v0 B6 m3 L- ^ J- G% i# w7 ]
$ m# ]1 } V2 z* t/ N
design vision 指令 clk部分描述如下 " h u' ?) d0 z
. M- p/ k4 h. {) c/ Jcurrent_design $active_design " Y1 ?. D7 `, U- d
create_clock [get_ports clk] -period 4 -waveform {0 2}
1 R! e5 g( \ a% T( X; ~; m6 s- Y. ?set_clock_uncertainty 0.3 [get_ports clk]8 ]9 Y. u" [! G I; c# d4 d% S( f7 i
set_clock_transition 0.3 [get_ports clk]2 [0 _, V% ~' \0 m6 q
set_fix_hold [get_clocks clk]
* F1 p9 X# V0 cset_dont_touch_network [all_clocks]- e; E" [( m- B S# {* _! n; r
set_drive [drive_of "CCU90mt1_05V_FBB_0909/INVd1/zn"] [get_ports clk]
8 r& d2 |8 W1 ^5 N( M" m: |create_generated_clock -name clk1 -source clk -divide_by 1 [get_pins clk_generator/clk1]% M2 ]* S5 ~, S: K' u- @
set_clock_latency 0.375 [get_pins clk_generator/clk1]
" D$ ?5 h% b$ f" S1 Ncreate_generated_clock -name clk2 -source clk -divide_by 1 [get_pins clk_generator/clk2]
6 F' _1 }" ~* cset_clock_latency 0.75 [get_pins clk_generator/clk2]
8 |" v; h" U0 n7 P4 screate_generated_clock -name clk3 -source clk -divide_by 1 [get_pins clk_generator/clk3]* k: r" c' o$ ^2 s* q9 ^ V4 ?6 `
set_clock_latency 1.125 [get_pins clk_generator/clk3]
4 |) h5 {" S# ]& P% e5 ^ L ~* U7 N$ ?
結果我的clk tree只有最原始的clk% [& R$ l9 [& M0 @7 B7 J
clk1 clk2 clk3 都沒長出來8 l7 _) U6 `5 R' Y
不知是那裡用錯了或遺漏了
" F0 Z/ ~; {5 z; u- X/ _; I& _或是encounter clk沒設定好
2 h; i) ~5 X+ A# S2 l: r用了很久都用不好
8 M* c9 `3 o# ?只好請教各位- W- Q* o) h, U5 a, j
萬分感謝 |
|