模擬電路設計模擬利器之——Ocean Script
這裡這次我們給大家介紹一個Analog design中的模擬利器,Ocean Script。
1. Introduction.
OCEAN 的全名是 Open Command Environment for Analysis (OCEAN)。它其實是一種SKILL語言,或者說是子集。它可以自動配置Cadence中的模擬環境。
一般的Analog Designer都會用到ADE(Analog Design Environment)來對我們的電路進行模擬。然而在面對PVT各種變化組合大規模的模擬時,ADE進行設置往往會比較麻煩。這時,我們就可以使用Ocean Script來進行模擬的設置和控制。隨著Cadence逐年進化,現在的ADE-XL功能越來越強大,也可以支持單個文件PVT等參數大規模的模擬設置。但作者君還是認為,應用熟練的Ocean Script要比ADE-XL的設置有效率許多。更更重要的是,Ocean允許從命令行執行模擬並從頭到尾進行控制。這是一種No GUI的逼格和情懷!
具體說來,Ocean的主要功能如下圖所示:
[Source:Ocean reference manual.]
簡單來說,Ocean主要有這兩大功能:
- 參數分析:包括PVT的變化,此外還有其他一些模擬參數變數,比如設置的時鐘頻率,管子尺寸等等。
- 處理模擬數據:利用Ocean,我們可以只保存感興趣的data,並將其直接存儲在某個或批量文件里,即節省了儲存空間,也便於模擬後的查閱。
2. Generating an Ocean Script Using ADE.
作為一種Script語言,當然你可以隨便打開一個文本編輯器,然後從頭開始編寫。但我們一般並不這麼做。作者君比較喜歡偷懶的方式,從ADE中導出Script。在ADE-L環境里,選擇session-> Save Ocean Script;而在ADE-XL中,則是 File-> Save Script。保存下來的n.ocn文件,就是我們所要的Script啦。
3. Examples of some Ocean Scripts.
上圖是一個簡單的Ocean例子,請原諒我這拙劣的打碼技巧。
我們可以看到,Ocean中的語句是和ADE GUI界面中的一一對應的。
1)simulator( spectre)是指該模擬所採用的模擬器。
2)design( 「your design netlist」) 是該模擬的netlist地址。
3)resultsDir( 「results Dir」) 顯示了儲存結果的路徑。
4)modelFile( 「your model files」) 表明採用的model。
5)analysis( dc ? … ) 是模擬類型,從左圖可見這個design里,我們進行dc和tran的模擬。
6)desVar( 「vdd」 1.2) 是模擬中所設的變數。
7)temp(27) 是溫度參數。
8)run() 是和GUI界面中那個綠色的run按鈕一樣。
9)plot() 是顯示結果,這裡只是簡單的畫出波形。還有許多查閱結果的command,可以參考用戶手冊。
這些其實大家了解一下就行了,介紹一個最最常用也是最最關鍵的一個語句:foreach
比如我們想模擬不同的負載電容Cload,代碼如下:
Cload = list( 2p 4p 6p 8p ) ;不同電容值nforeach( val Cload n desVar( "Cload" val ) n a=resultsDir( sprintf( nil "./Cload=%g" val ) ) ;每個Cload保存成單獨文件n printf( "%L", a ) n run( ) n) nforeach( val Cloadn openResults( sprintf( nil "./Cload=%g" val ) ) ;open simulation resultsn selectResults( ac ) ; plot results.nplot( vdb( "vout" ) ) n)n
模擬中的每一個變數,如model,temp,vdd等等,都可以採用上面所展示的方法進行賦值和循環。這樣,我們很容易就可以進行一系列龐大的模擬。
當然,這些PVT的模擬其實用ADE-XL也可以做到。但是,Ocean還可以進行不同文件的模擬,示例代碼如下:
simulator(spectre)ndesign(...)nanalysis(dc ...)nforeach(stimFile ("file1.scs" "file2.scs" "file3.scs") ;不同的模擬文件netlistn stimulusFile(stimFile)n run()n printf(...) ;顯示結果n)n
基本上我常用的Ocean Script模擬方式就這些了,採用各種層層的for循環語句嵌套,可以產生龐大的模擬文件。於是乎,上吧,少年,用龐大的simulation去佔領整個server的內存和硬碟吧!!
(像我這樣就數次被IT小哥發郵件警告……T_T)
4. Executing an Ocean Script.
運行Ocean一般有兩種方式,一種是在CIW的commandnline里輸入:
load 「yourscript.ocn」n
另外一種是在Linux的terminal里輸入ocean後,會進入Ocean的shell,然後再輸入:
load 「yourscript.ocn」n
就這樣,我們這些龐大的jobs就開始運行了。怎麼樣,趕快去試試吧!
5. References.
- Ocean Script的官方說明手冊:Ocean Reference Manual.
- Cadence Community 其實還可以去Cadence的論壇發帖。
最後,作者君實在是有話要吐槽:這更新之後知乎的編輯器實在是太尼瑪詭異了!!游標莫名亂跳!!經常打了一行字之後啊,結果發現插入在莫名其妙的地方!!複製一副圖片經常發現莫名出現在文章結尾啊!!所以啊,如果大家讀到有語句中有奇怪的文字不要太詫異,實在是心中一萬頭草泥馬奔騰而過!!最後只好先在word上寫完再複製過來啊,結果複製也是莫名斷句!就僅僅是調格式,就調了半個小時啊!!本來很快就完成的work硬是花了整整一下午加晚上,還是強忍著想掀桌的衝動!!如果一直是這樣的話,作者君都有心想換個地方了,不知各位有什麼好的推薦呢?心好累~~~
———————————————————————————————————————
原創聲明:本文為原創,未經許可,嚴禁轉載。如需轉載,請聯繫作者。
微信公眾號:analogIC_gossip
推薦閱讀:
※Cadence入門(二)plot漏電流和柵源電壓之間的關係圖
※Silicon Photonics晶元簡介
※用Script 寫出好看的Email
※模擬電路基礎之頻率響應(一)極點的物理意義
※又一個被中國廠商做死的晶元市場!|半導體行業觀察