可綜合設計
Verilog 硬件描述語言有類似高級語言的完整語法結(jié)構(gòu)和系統(tǒng)点把,這些語法結(jié)構(gòu)的應用給設計描述帶來很多方便嗤详。但是妈踊,Verilog 是描述硬件電路的,其建立在硬件電路的基礎之上彰亥。而有些語法結(jié)構(gòu)只是以仿真測試為目的咧七,是不能與實際硬件電路對應起來的。也就是說在使用這些語法時任斋,將一個語言描述的程序映射成實際硬件電路中的結(jié)構(gòu)是不能實現(xiàn)的继阻,也稱為不可綜合語法。
綜合就是把編寫的 rtl 代碼轉(zhuǎn)換成對應的實際電路废酷。比如編寫代碼 assign a=b&c瘟檩;EDA 綜合工具就會去元件庫里調(diào)用一個二輸入與門,將輸入端分別接上 b 和 c澈蟆,輸出端接上 a墨辛。
同樣地,如果設計師編寫了一些如下所示的語句
assign a=b&c;
assign c=e|f;
assign e=x^y;
??
綜合工具就會像搭積木一樣把這些“邏輯”電路用一些“門”電路來搭起來趴俘。當然睹簇,工具會對必要的地方做一些優(yōu)化,比如編寫一個電路 assing a=b&~b寥闪,工具就會將 a 恒接為 0太惠,而不會去調(diào)用一個與門來搭這個電路。
綜述所述疲憋,“綜合”要做的事情有:編譯 rtl 代碼凿渊,從庫里選擇用到的門器件,把這些器件按照“邏輯”搭建成“門”電路缚柳。
不可綜合埃脏,是指找不到對應的“門”器件來實現(xiàn)相應的代碼。比如“#100”之類的延時功能喂击,簡單的門器件是無法實現(xiàn)延時 100 個單元的剂癌,還有打印語句等,也是門器件無法實現(xiàn)的翰绊。在設計的時候要確保所寫的代碼是可以綜合的佩谷,這就依賴于設計者的能力,知道什么是可綜合的代碼监嗜,什么是不可綜合的代碼谐檀。對于初學者來說,最好是先記住規(guī)則裁奇,遵守規(guī)則桐猬,先按規(guī)則來設計電路并在這一過程中逐漸理解,這是最好的學習路徑刽肠。
下面表格中列出了不可綜合或者不推薦使用的代碼溃肪。
下表為推薦使用的設計代碼免胃。