|
因為我的電路需要多種clk
- o: e0 ]8 J) @8 b G4 mclk比此之間有延遲的關係
3 b0 d# s6 Q2 N+ ~( ~: {$ r例如 clk clk1 clk2 clk3
4 _$ _9 c& `( Y6 |# i( ]3 h9 p這些clk週期等相關設定都一樣的) h# R+ ^7 e5 _, [9 q/ S; V
唯一不同的是 clk1 比 clk 延遲0.375ns
4 F# k1 g9 j; o6 C1 A- l% \ clk2 比 clk1 延遲0.375ns (clk2比 clk 延遲0.75ns)& H3 j. h. l# C0 N9 L b5 i
clk3 比 clk2 延遲0.375ns (clk3比 clk 延遲1.125ns)" {* X, F8 M. E% i' a) [: P* {6 ~
但是我只要一個clk port 接出io pad
( @" v. b8 n" \) b% v6 E也就是clk1 clk2 clk3 要由 clk產生- W* w) o' r: f
因此我在verilog 寫一個 clk generator如下
3 H, |/ f8 F- O, _" D: J2 Q
' t/ R, E+ b" N0 p) H: F8 Xmodule clk_generator (clk, clk1, clk2, clk3);
' B( Y! s7 u9 X input clk ;2 o, i9 n5 u8 F+ y9 x& D1 M# a
output clk1, clk2, clk3 ;# V M6 @) Q( ^# j" m; f3 _
buf BUF_0(clk1,clk);; c% ^6 w3 J9 W. n
buf BUF_2(clk2,clk1);2 ~1 {( T2 @. j/ j" j
buf BUF_3(clk3,clk2);
# I0 D8 P9 p: k' `. F8 F9 uendmodule" k& I; m `1 o+ N5 {
% x1 z1 d1 M0 T
再我主要的module中引用如下
8 I6 M4 }) i6 W9 E7 Hmodule s4478( GND, VDD, clk, G1, G2, G3, G4, G5,OUT1, OUT2, OUT3, OUT4, OUT5, error ); 3 L c2 t. m9 G% ^4 K& i
input GND, VDD, clk, G1, G2, G3, G4, G5;
6 a/ s4 S! ^" B6 j3 U s output OUT1, OUT2, OUT3, OUT4, OUT5, error;' j6 S' g8 o) _/ |, L# W/ H6 M# J- k
wire clk1, clk2, clk3 ;* F1 l6 k0 R% j) D# R3 k4 \2 \! C X
.6 p9 a' O# a; {
.
; R" y, \: m& F% b4 u' l1 Jclk_generator clk_generator ( .clk(clk), .clk1(clk1), .clk2(clk2), .clk3(clk3) );
8 j) t% `8 U* Z$ o8 W$ |.
! o$ P3 z$ g' M* G$ X.
9 e, a) }6 C+ a# G t; V M+ }end module
/ y/ m m" C6 ?/ m& N& V3 F5 T
2 ~4 q; }. E& Tdesign vision 指令 clk部分描述如下
5 S: Q5 d2 ~/ {9 b, Y8 }9 J3 S7 C$ D1 [4 P, Z
current_design $active_design
4 \0 B, p" A4 U9 F- i; [5 j7 t+ tcreate_clock [get_ports clk] -period 4 -waveform {0 2}
p8 L' {4 p- C( _set_clock_uncertainty 0.3 [get_ports clk]+ E# P# n i4 t; R" z; d
set_clock_transition 0.3 [get_ports clk]/ m! |; \ U0 L1 G* j
set_fix_hold [get_clocks clk]
2 S1 L8 Y& i* q8 g; J8 @: _- Gset_dont_touch_network [all_clocks]0 ^' @( ~( }: q0 l Y2 x/ T
set_drive [drive_of "CCU90mt1_05V_FBB_0909/INVd1/zn"] [get_ports clk]( B: i+ h, X5 p% [
create_generated_clock -name clk1 -source clk -divide_by 1 [get_pins clk_generator/clk1]
% e' f. T( x5 x b' T7 T# k; Qset_clock_latency 0.375 [get_pins clk_generator/clk1]
3 N* ^# @ [. i" ~* K0 zcreate_generated_clock -name clk2 -source clk -divide_by 1 [get_pins clk_generator/clk2]0 V1 Y! M; l. \: F% \* B) U
set_clock_latency 0.75 [get_pins clk_generator/clk2]
) J3 \" i9 X/ Qcreate_generated_clock -name clk3 -source clk -divide_by 1 [get_pins clk_generator/clk3]- e0 D9 s+ ]. H5 h/ t! ~
set_clock_latency 1.125 [get_pins clk_generator/clk3]! j$ L2 O7 O3 Z; c
1 b5 }0 B9 Z3 U3 V
結果我的clk tree只有最原始的clk
- x/ |1 I% G Uclk1 clk2 clk3 都沒長出來. I; z D! ]7 n Y1 X; ]: f
不知是那裡用錯了或遺漏了
% k$ l( m, Q/ x或是encounter clk沒設定好
|. m' P/ W$ p; S# o" W用了很久都用不好
) C: w$ b! j9 F9 P只好請教各位
* F4 y! C5 F, l0 i7 b萬分感謝 |
|