|
最近在跑合成時
' s/ s2 s2 B4 ~9 [3 F& |! f發現到DFF用negedge trigger會有問題* t- \/ P* x+ v: _& v& J
如下面所寫的code
0 ?) O7 ]4 k- M8 }module DFF (H,clk,reset,H_new);
9 L: A* m. p$ ?) J9 S- ]6 r4 ainput H,clk,reset;/ R3 u) `% U t. |6 h! `
output H_new;
1 `9 i: @ x1 K& Ireg H_new;+ o0 J) O: B* S* S
- s/ }" J1 V$ u7 J% b' Xalways @ (negedge clk or negedge reset)" D M. \! z3 z4 u( d
begin% d' W* g+ v- Q. G' m
if (reset==1'b0)2 P' I( c( Q" Q& m
H_new<=1'b1;6 E, e' L) |1 u D1 S
else2 r0 P. D4 O0 B1 b! M8 ^
H_new<=H;$ n$ o C$ Z6 ^6 Q8 d0 [
end0 c2 a+ n- J& U1 y- `' o1 z/ O
endmodule( v/ f, R! E, u) n3 ^
# ?0 I0 W0 j# d7 i1 H
我發現到合成出來的檔案* ]$ v- D& _1 m8 U' ^& ^2 C
除了flip-flop外 還會加入一堆DLY4X1的硬體
' i- D7 ?6 V, }如果是用posedge clk的話 合出來是正常的# c/ `! y" d! W6 e# ]5 C/ P0 u
( g% O4 ]. O, v- F7 A
就算我新生一個clk_bar把clk反向
1 H5 A( k$ |) m) D5 w$ G並將clk_bar改成posedge trigger! `" h6 V7 Y [0 e2 S: S4 `
合出來的硬體還是會像原先用negedge clk一樣會多了一些DLY4X1的硬體
0 i7 I! k: O) i' ?' u, f' ~由於我需要negedge trigger的function0 N' V6 s% ~. N7 h
但在合成時卻無法正確合出來0 o4 n( {$ _1 b- O3 q$ Y: x1 U
請問該問題該如何解決: Q' n0 m; z3 E% L x5 ]( J. r; Y
謝謝 |
|