什麼是「門級網表」(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=1u

M2 OUT IN2 GND GND mn L=1u W=1u

M3 PIND IN1 VDD VDD mp L=1u W=1u

M4 OUT IN2 PIND VDD mp L=1u W=1u

.ends

一個nor2的網表


在數字集成電路中,一般使用RTL級來描述功能;要將RTL代碼轉換成最終的晶元,就需要將RTL代碼通關工藝文件映射成與工藝庫中包含的器件,這一步就是將RTL轉換成門級網表。

需要注意的是門級網表的兩種形式(與工藝有關,與工藝無關),譬如你的電路規模小,你直接在代碼設計時用NAND NOR等門去搭的話,這個雖然也稱為門級網表,但其與工藝無關,把這樣的代碼送入DC中,加上一些約束,DC就會吐出與工藝有關的門級網表。


推薦閱讀:

16nm 工藝的特點是什麼?
為什麼電子行業熱衷晶元破解,IC解密呢??
有哪些晶元流片失敗的故事?
台積電是一家怎樣的公司?
集成電路工程與微電子學,怎麼選?發展前途各怎麼樣?

TAG:電路 | 晶元集成電路 | 數字電路 | 電路設計 | 晶元設計 |