功能上沒有區別。
只要不是太小的ROM就最好不要用CASE語句寫,而是呼叫生成block ROM。
首先你需要了解兩個概念。
一般情況下綜合面積只能佔到佈線面積40%~80%(density),因為綜合後的logic不可能100%緊挨著排列。中間還要走線,走線的多少,以及走線的容易程度直接決定了最終的density。
時序邏輯為主的部分density可以做的很高,組合邏輯為主的部分density很難做高,尤其是CASE這種結果綜合完就是相互穿插類似於路由結構走線更難。這對後端工具來說是非常討厭的。後端工具對於繞線沒有我們想的那麼智慧,如果繞不開就給他更大的面積,不斷的推開(波紋演算法),直到大到足夠繞開位置。
當你的CASE比較大,而且資料位寬比較寬的時候,這種困難程度是成指數增加的。
區域性的density甚至只有5%,也就是說最後這部分邏輯晶片實際的面積是綜合面積的20倍,即便最佳化也非常困難,對後端也是額外的工作量。
但是由vendor提供的生成工具生成的ROM是定製最佳化過的BLOCK,面積是固定的,面積效用已經很高了。後端看到的是個黑盒BLOCK,不會再有繞線問題。
功能上沒有區別。
只要不是太小的ROM就最好不要用CASE語句寫,而是呼叫生成block ROM。
首先你需要了解兩個概念。
綜合面積佈線面積一般情況下綜合面積只能佔到佈線面積40%~80%(density),因為綜合後的logic不可能100%緊挨著排列。中間還要走線,走線的多少,以及走線的容易程度直接決定了最終的density。
時序邏輯為主的部分density可以做的很高,組合邏輯為主的部分density很難做高,尤其是CASE這種結果綜合完就是相互穿插類似於路由結構走線更難。這對後端工具來說是非常討厭的。後端工具對於繞線沒有我們想的那麼智慧,如果繞不開就給他更大的面積,不斷的推開(波紋演算法),直到大到足夠繞開位置。
當你的CASE比較大,而且資料位寬比較寬的時候,這種困難程度是成指數增加的。
區域性的density甚至只有5%,也就是說最後這部分邏輯晶片實際的面積是綜合面積的20倍,即便最佳化也非常困難,對後端也是額外的工作量。
但是由vendor提供的生成工具生成的ROM是定製最佳化過的BLOCK,面積是固定的,面積效用已經很高了。後端看到的是個黑盒BLOCK,不會再有繞線問題。