后仿真要是從方法上分類,我覺得大概有三種,一種是gui,一種是網(wǎng)表,一種是反標(biāo)注。
gui的就是用calibre產(chǎn)生calibre view,然后仿真的時(shí)候自動(dòng)從calibre view中生成網(wǎng)表。這種我沒用過,看別人用過。好處是方便,與原來的流程整合度很高。不過要是想做些debug的事情就很麻煩。
網(wǎng)表就是直接產(chǎn)生相應(yīng)的網(wǎng)表,然后在前仿真的網(wǎng)表里替換。這種方法比較土,工作量也大,根據(jù)不同的提取工具和仿真工具,需要修改一些東西。我最不可理解的就是做提取時(shí)用的是cdl,做仿真時(shí)用的是spectre view,然后如果pdk做的不好,這兩種view總會(huì)多多少少有些差異,導(dǎo)致產(chǎn)生的網(wǎng)表需要修改。這種差異是換什么提取工具都不能消除的,只能怪pdk。但是這種流程EDA公司一直沒有修改過。一般的差異包括了:端口順序,節(jié)點(diǎn)名字(仿真器有時(shí)會(huì)修改節(jié)點(diǎn)名字,特別是總線,可以看我之前blog,cdl也可能會(huì)用不同格式的名字)。隨著EDA工具的版本提高,PDK庫的升級,以及提取文件的選項(xiàng)設(shè)置,好像目前需要修改的越來越少了(不知道為什么,05年的時(shí)候需要修改的地方非常多,即使t這樣的公司給的pdk,前后仿真連模型名都完全不一致,需要自己找到對應(yīng)的然后修改)。一般只用修改接口處的內(nèi)容就可以了,內(nèi)部只要保持自恰就行。需要注意的是需要保存節(jié)點(diǎn)的名字和ic設(shè)置的名字。有時(shí)候這個(gè)地方最麻煩,因?yàn)樘崛『蟮拿謺?huì)和原來可能有差異。再就是有時(shí)bipolar會(huì)在前仿中用m=...,但是后仿用area=...,后一種與器件模型不自恰,會(huì)導(dǎo)致仿真失?。ㄟ@是我又一處不理解 EDA公司的地方)。這種方法的好處是比較靈活。有時(shí)候?yàn)榱薲ebug,只要在網(wǎng)表中手工修改一下,看看效果,就可以知道找的地方對不對。有的人習(xí)慣前仿用cdl的網(wǎng)表,這樣后仿就能保持基本的一致性。不過說實(shí)話,我覺得cdl格式并不是為仿真用的,很多pdk里提取出的cdl網(wǎng)表也就是能用而已。
還有一種是反標(biāo)注(back annotation)。我挺看好這種方法的,但是目前工具對這種方法的支持也有問題。提取的時(shí)候,如果選反標(biāo)注,就會(huì)生成諸如dspf之類的文件,按照我的理解,就是把寄生器件和節(jié)點(diǎn)對應(yīng)關(guān)系之類的信息寫在這個(gè)文件里。(實(shí)際中可能會(huì)有dpf,包括器件的實(shí)際信息,dspf,寄生參數(shù),spef,另一種格式的寄生信息)。然后仿真器再根據(jù)這個(gè)dspf里的信息,結(jié)合前仿網(wǎng)表,自己自動(dòng)產(chǎn)生內(nèi)部的仿真網(wǎng)表,但是對外保持接口不變。由于對外接口不變,設(shè)計(jì)者的工作量就小很多,不用找名字對應(yīng)關(guān)系了。可惜,這種方法目前的問題是:
1.只有有限的仿真器支持,比如hsim,spectre不支持。
2.不同提取工具產(chǎn)生的可能語法有差異,導(dǎo)致對一些信息的解釋不同,特別是耦合電容,所以換仿真器或者提取工具時(shí)要小心。
3.有時(shí)由于前仿網(wǎng)表和lvs網(wǎng)表的差異(還是pdk,cdl的問題,這無解),存在反標(biāo)率,就是可能有的寄生參數(shù)找不到位置。這種問題還很難debug,因?yàn)橛袝r(shí)候給的信息不全,想修改都不知道問題在哪里。不過我做下來,大部分還是由于名字大小寫,總線,spectre自動(dòng)改名之類的問題,或者由于做了一些簡化,導(dǎo)致一些節(jié)點(diǎn)消失或者多出來。
我不知道為什么仿真器目前不能很好的支持這種反標(biāo)注,按理說就是一個(gè)重新解釋網(wǎng)表的過程,應(yīng)該比寫仿真器容易多了。
總結(jié)一下,目前后仿真許多問題的根源大部分來自于仿真用的網(wǎng)表和lvs用的網(wǎng)表來源不一致。如果來源一致,讓EDA工具自己做那些改名字的事情就好多了(我的這些經(jīng)驗(yàn)都來自于11年之前的EDA版本和t的pdk版本)。
還有另一種分類,就是按照提取的是r,是c,是cc等來區(qū)分。一般來說流程上差異不大,但是對于有r和沒有r,名字一般會(huì)變化較大,因?yàn)橛衦的會(huì)增加不少新節(jié)點(diǎn)。如果多看看網(wǎng)表,還是能找到命名規(guī)律的。我比較看好新版工具的一個(gè)特色,就是讓r和c的提取可以混合進(jìn)行。以前是要么是提r,要么是提c,要么提 r+cc,但必須是全局設(shè)置?,F(xiàn)在可以在局部設(shè)置不同的提取方式,比如全局是提c,但局部提r,考慮到仿真時(shí)間,這種方法還是挺不錯(cuò)的。
再一種分類就是按照是打散了提取還是層次化的提取。前者據(jù)說精度最高,但是一般前仿都是層次化的,所以名字一定會(huì)變。后者偶爾用用也不錯(cuò),但是我同事碰到一次奇怪的問題,就是網(wǎng)表出錯(cuò)了,查進(jìn)去說有一個(gè)cell的端口名字不對,不知道為什么,這種事情難得碰到一回。
想到一個(gè)小事情,現(xiàn)在在新工藝下,經(jīng)常要加dummy metal。如果提取時(shí)忽略dummy metal,往往比不忽略得到的寄生小,但是如果不忽略,網(wǎng)表將巨大無比。所以提取工具還給了個(gè)簡化的選項(xiàng),這也是在時(shí)間和精度上做巨大的trade off。
另一件事情就是無論提取工具多么好,最后起主要作用的還是規(guī)則文件。曾經(jīng)有一次有個(gè)工藝給的規(guī)則文件里忘了提as,ad這些,至于sa,sb那就更不用提了,這樣的東西即使提取了寄生,準(zhǔn)不準(zhǔn)是一方面,信不信是令一方面。
再就是提取的寄生電容到底準(zhǔn)確度有多少?有人說提取的是為數(shù)字電路考慮的,所以會(huì)偏大20,30%。又有人說差了2,3倍。由于也沒有可靠數(shù)據(jù),都是道聽途說,所以有foundry做這方面的人能說說實(shí)際情況最好。
(審核編輯: 滄海一土)
分享