[爆卦]Verilog if 合成是什麼?優點缺點精華區懶人包

為什麼這篇Verilog if 合成鄉民發文收入到精華區:因為在Verilog if 合成這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者zangtingzhen (渟沂)看板Electronics標題Re: [問題] verilog...


※ 引述《hadbeen (你在哪)》之銘言:
假設可能的a只有0~10000之間


case(a)
0:---------------\
. \
. 執行ins1
. /
. /
10:---------------/
11:----------------\
. \
. 執行ins2
. /
. /
100:----------------/
101:--------------\
. \
. \
. 執行ins3
. /
1000:--------------/
1001:------------\
. \
. \
. 執行ins4 假設是個nmos
. / 這個gate電壓為:
10000:------------/ 1:如果a=0
0:elsewhere

以上我可以想像每個case合成後變 以a=0的來說 ins1 ----| ̄ ̄|----->執行的內容

共有一萬個像這樣的transmitting gate組成一個超大多工器

各各平行 即同一時間只有一個transister會通




那寫成
if(a>1000) 執行ins4

else if(a>100) 執行ins3

else if(a>10) 執行ins2

else 執行ins1

應該也是合出上面同義(function上同義)case敘述所合成出的電路吧?


那這樣的話兩種寫法差在哪?寫code的方便性嗎?(如果要寫case就要寫一大堆)

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.32.239.249


我印象中在Advanced ASIC Chip Synthesis這本書講的coding style有提到過。

用if....else....的話會合出有"優先順序"的結構,就是會有串接的mux

a>1000
|
a>100 -----
| ---| |
----- |mux|----output
---| |-----| |
|mux| -----
---| |
-----

用case的話,每個輸入訊號是平行的,就是沒有優先順序

---------------
a --|combinational|----
--------------- |
|
------
-----| |
-----| |
-----|mux |----output
-----| |
-----| |
------


這本書是講design compiler的,聽說其它合成工具不一定會這樣~

有欠缺的話麻煩其他大大補充~




--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.150.149
forever5566:推 09/08 23:29
mmonkeyboyy:正解 不過現在的compiler有的會幫忙這件事了 09/09 02:00
mmonkeyboyy:但ISX這個東西 一直到200X年都還沒有這個功能 09/09 02:00

你可能也想看看

搜尋相關網站