|
因為我的電路需要多種clk
, x: ?5 \5 p& e- b8 O; ^clk比此之間有延遲的關係
# w( O9 J% ~) o! O3 M例如 clk clk1 clk2 clk3# d3 ?& o0 L1 o; o* D
這些clk週期等相關設定都一樣的
! s! L& C+ p) S3 C7 [唯一不同的是 clk1 比 clk 延遲0.375ns* d m" i& H p* }" k; X' W7 {
clk2 比 clk1 延遲0.375ns (clk2比 clk 延遲0.75ns)0 I8 T; s3 K+ y. R- A
clk3 比 clk2 延遲0.375ns (clk3比 clk 延遲1.125ns)5 v. s4 Y! R0 }9 l! d
但是我只要一個clk port 接出io pad& \: ^/ o8 t. J) g2 Z7 \
也就是clk1 clk2 clk3 要由 clk產生
/ @; g6 H& ?' g' `因此我在verilog 寫一個 clk generator如下2 M/ I1 B$ i+ i9 r* ?
) ~& Y# V1 B; F# x8 y/ u' W V; nmodule clk_generator (clk, clk1, clk2, clk3);
& X: L! w4 D \8 g: j input clk ;
9 {" J4 J- V3 R output clk1, clk2, clk3 ;9 u$ }+ ]& S8 e# J$ v& R0 [
buf BUF_0(clk1,clk);% }- L/ J% b' Q
buf BUF_2(clk2,clk1);: G# |$ o; u! @. I% H
buf BUF_3(clk3,clk2);/ k' L* d! P7 L
endmodule
! Q1 T p0 \, X: W& U0 e) N' C- g; u: p' V
再我主要的module中引用如下
$ {% m" ?* y4 _5 `* L& t3 h5 _module s4478( GND, VDD, clk, G1, G2, G3, G4, G5,OUT1, OUT2, OUT3, OUT4, OUT5, error ); 2 m! z4 x h+ `$ V
input GND, VDD, clk, G1, G2, G3, G4, G5;
9 n; V! o- i9 q0 |4 _. f& J output OUT1, OUT2, OUT3, OUT4, OUT5, error;
5 v! @! b& E! f, f& y! q wire clk1, clk2, clk3 ;
7 j3 _% c& T2 R- Q: h.
Y. B4 f. ^( H.3 W% X* c* m: O
clk_generator clk_generator ( .clk(clk), .clk1(clk1), .clk2(clk2), .clk3(clk3) );
6 _ f- D* V$ j M: f.2 t0 F+ c- k% {
.
+ x* p# H+ T% V3 C! X nend module9 u- W& T1 q1 c1 n1 r$ w4 N
! k! e1 M( y* Q, mdesign vision 指令 clk部分描述如下
9 t/ x9 m6 o* S) u* z
1 L" m/ A/ c% e- j* d$ Jcurrent_design $active_design
7 P' ^8 Q7 M7 b% [$ Ccreate_clock [get_ports clk] -period 4 -waveform {0 2}0 b+ r2 G# ]) X' h7 v8 q
set_clock_uncertainty 0.3 [get_ports clk]* u5 M' n: l8 U- N; B
set_clock_transition 0.3 [get_ports clk]7 P% r; Q! |# Y3 {$ Z! P
set_fix_hold [get_clocks clk]
9 v9 O+ p) \, m. Z2 \9 Aset_dont_touch_network [all_clocks]7 X# @* b- w+ [: H! J- @1 \! R$ X
set_drive [drive_of "CCU90mt1_05V_FBB_0909/INVd1/zn"] [get_ports clk]
* ?7 S0 D* h( R. Z) _1 X! E: d! R' [create_generated_clock -name clk1 -source clk -divide_by 1 [get_pins clk_generator/clk1]
7 V- t% e) f" ^ r" w% Vset_clock_latency 0.375 [get_pins clk_generator/clk1]# ^& ]) J! n- W r( n& \" i
create_generated_clock -name clk2 -source clk -divide_by 1 [get_pins clk_generator/clk2]) s3 P4 t1 |1 Q9 O
set_clock_latency 0.75 [get_pins clk_generator/clk2]
( R" K4 H8 Y/ o& s. _! Ccreate_generated_clock -name clk3 -source clk -divide_by 1 [get_pins clk_generator/clk3]
8 g! t% I1 Q: }' Mset_clock_latency 1.125 [get_pins clk_generator/clk3]
& y7 Z7 z2 q7 H. o1 O, z9 |6 B+ L C5 f Z) n. R: l: G1 L- Y* ?
結果我的clk tree只有最原始的clk3 s0 h: j+ x' f ^$ O
clk1 clk2 clk3 都沒長出來
5 X, }$ | G# {5 j* A不知是那裡用錯了或遺漏了 _4 J9 R6 B0 P. s1 j
或是encounter clk沒設定好- Z8 U$ V2 x6 u; p- v0 W& J: ]: x
用了很久都用不好
& a2 Y4 _ V+ K) Z3 v; @4 K只好請教各位: {2 }- W0 @0 j
萬分感謝 |
|