什麼是「門級網表」(Gate-level netlist)文件?
在Design Compiler的教程里看到把RTL文件轉換為門級網表,不太明白。
RTL 是register level 的語言,DC 綜合就是把它映射(mapped)到具體的器件上,實現等價的功能。
所以我們提到門級網表,表示在具體的工藝下(比如smic 0.13um logic G)下具體器件(比如標準單元)來實現了RTL的功能。
比如,在RTL中,我們可以說Y=A+C;
那麼在門級網表中就會變成:smic 0.13um logic G 下有一個標準單元 OR2X2,其輸入為A,C,其輸出為Y.在電子線路設計中,網表(netlist)是用於描述電路元件相互之間連接關係的,一般來說是一個遵循某種比較簡單的標記語法的文本文件。
這裡的「門級(gate-level)」,指的是網表描述的電路綜合級別。顧名思義,門級網表中,描述的電路元件基本是「門(gate)」或與此同級別的元件。
RTL 是 Register-transfer Level(寄存器傳輸級)的縮寫,它的綜合級別(或說抽象程度)比 gate-level 要高。在這個級別描述電路,涉及的基本元素通常是寄存器和組合邏輯。常見的硬體描述語言(如 VHDL、Verilog)都允許用戶直接在這個級別描述電路。
事實上,RTL 中的寄存器和組合邏輯,其物理實現還是對應到具體門電路。由於基本的寄存器或組合邏輯,對應的電路結構已經很穩定,電學特性也很明確,故而在綜合級別較高的 EDA 工具中,一般不需要再親自去描述它們的實現方法,而是調用現成的庫信息。EDA 工具會根據 RTL 描述自動編譯出門級的電路描述。——這個編譯過程就是問題說明裡提到的「RTL 文件轉換至門級網表」。RTL 即register level,是接近高級語言的一種較為抽象的描述,這樣可以提高電路設計的工作效率。而晶元在tapeout時需將電路結構映射到矽片上,眾所周知,矽片里就是各種門結構(gate-level)的位置信息和連接信息。所以,在tapeout之前,需要將較為抽象的、跟工藝以及process無關的RTL code轉化為gate-level數據。那麼,DC實現的就是這個功能。或者說,DC就是一個數據格式編譯器+電路優化演算法,其目的在於:(1)將RTL數據格式,按照語義進行分析,最後轉化為gate-level的數據格式。這個功能從DC的名字就可以看得出來,DC中的C指的是compiler(編譯器),所以synopsys當初給這個工具取的名字是非常準確的,而不是泛泛地叫什麼綜合器之類的。所以,在書寫RTLcode的時候,盡量不要太抽象,盡量要接近門級描述,這樣DC對RTL數據格式就會編譯的更準確,編譯速度更快,綜合結果也性能也會更好。否則,抽象的語義和詞會使得編譯器解釋和轉化速度較慢。(2)對電路進行優化,主要滿足DC的各種約束(SDC)。
如果RTL是C語言,Gate-level netlist就是彙編
.subckt nor2 IN1 IN2 OUT VDD GND
M1 OUT IN1 GND GND mn L=1u W=1uM2 OUT IN2 GND GND mn L=1u W=1uM3 PIND IN1 VDD VDD mp L=1u W=1uM4 OUT IN2 PIND VDD mp L=1u W=1u
.ends一個nor2的網表在數字集成電路中,一般使用RTL級來描述功能;要將RTL代碼轉換成最終的晶元,就需要將RTL代碼通關工藝文件映射成與工藝庫中包含的器件,這一步就是將RTL轉換成門級網表。
需要注意的是門級網表的兩種形式(與工藝有關,與工藝無關),譬如你的電路規模小,你直接在代碼設計時用NAND NOR等門去搭的話,這個雖然也稱為門級網表,但其與工藝無關,把這樣的代碼送入DC中,加上一些約束,DC就會吐出與工藝有關的門級網表。
推薦閱讀:
※16nm 工藝的特點是什麼?
※為什麼電子行業熱衷晶元破解,IC解密呢??
※有哪些晶元流片失敗的故事?
※台積電是一家怎樣的公司?
※集成電路工程與微電子學,怎麼選?發展前途各怎麼樣?