[問題] 以下verilog是否要synchronize?
本人有個verilog如以下設計
always@(posedge appclk or posedge reset)
if(reset) state <= 2'b00;
else if(!enable) state <= 2'b00;
else
case(state[1:0])
2'b00: if(condition1) state <= 2'b10;
2'b10: if(condition2) state <= 2'b11;
2'b11: if(condition3) state <= 2'b10;
endcase
其中enable來自另一clk domain
always@(posedge cpuclk or posedge cpurst)
if(cpurst) enable <= 0;
else if(condition4) enable <= cpuwrdata[1];
簡而言之
由cpu填寫enable=1的時候
state才能跳動到其它數值
請問這個enable需不需要先synchronize到appclk再給state使用?
(假設兩clk domain完全獨立)
與同事討論 一派說法是要:
post-sim的時候觀察到
若enable active的時間太接近appclk rising edge
的確會發生timing violation
導致state跳到非00的值或是unknown
另一派說法是不用:
以我們的應用:enable剛啟動時 condition1,2,3都是inactive
因此appclk rising瞬間不論抓到enable是0還是1
依RTL要繼續由condition1,2,3來判斷state下一步
即然condition1,2,3都不動作 state自然該保持在00
下一Tenable穩定了 自然state也不會跳錯了
本人經驗尚淺
版友可否指正兩派說法的弱點之處?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.146.122.70
※ 文章網址: https://www.ptt.cc/bbs/Electronics/M.1508493878.A.438.html
→
10/20 19:19,
8年前
, 1F
10/20 19:19, 1F
推
10/20 20:37,
8年前
, 2F
10/20 20:37, 2F
→
10/20 20:38,
8年前
, 3F
10/20 20:38, 3F
推
10/20 20:40,
8年前
, 4F
10/20 20:40, 4F
推
10/20 21:52,
8年前
, 5F
10/20 21:52, 5F
→
10/20 21:52,
8年前
, 6F
10/20 21:52, 6F
→
10/20 21:52,
8年前
, 7F
10/20 21:52, 7F
→
10/20 21:52,
8年前
, 8F
10/20 21:52, 8F
→
10/20 21:52,
8年前
, 9F
10/20 21:52, 9F
推
10/21 09:19,
8年前
, 10F
10/21 09:19, 10F
→
10/21 09:19,
8年前
, 11F
10/21 09:19, 11F
→
10/21 09:22,
8年前
, 12F
10/21 09:22, 12F
→
10/21 09:22,
8年前
, 13F
10/21 09:22, 13F
推
10/21 10:46,
8年前
, 14F
10/21 10:46, 14F
→
10/21 10:46,
8年前
, 15F
10/21 10:46, 15F
→
10/21 10:46,
8年前
, 16F
10/21 10:46, 16F
→
10/21 10:46,
8年前
, 17F
10/21 10:46, 17F
推
10/21 11:47,
8年前
, 18F
10/21 11:47, 18F
→
10/21 11:47,
8年前
, 19F
10/21 11:47, 19F
→
10/21 11:47,
8年前
, 20F
10/21 11:47, 20F
推
10/21 14:20,
8年前
, 21F
10/21 14:20, 21F
→
10/21 14:20,
8年前
, 22F
10/21 14:20, 22F
→
10/21 14:20,
8年前
, 23F
10/21 14:20, 23F
→
10/21 14:20,
8年前
, 24F
10/21 14:20, 24F
→
10/21 21:48,
8年前
, 25F
10/21 21:48, 25F
推
10/22 10:03,
8年前
, 26F
10/22 10:03, 26F
→
10/22 10:03,
8年前
, 27F
10/22 10:03, 27F
→
10/22 10:03,
8年前
, 28F
10/22 10:03, 28F
→
10/23 17:59,
8年前
, 29F
10/23 17:59, 29F
→
10/23 17:59,
8年前
, 30F
10/23 17:59, 30F