同一個電路,進行PVT仿真可以用ADEXL來實現,但多個不同電路的批量仿真有什么好的辦法呢?前段時間就遇到了這樣一個棘手的問題,也是關于仿真的。有一個TOP電路,其系統工作模式的組合約有22種。我當然可以搭建22個Testbench,使用ADEL對每個環境進行仿真分析。但這樣做精力比較分散,且同時開很多ADEL很容易讓我混亂。還因為我決定不使用cadence的圖形化窗口界面,開22個標簽簡直沒眼看。所以從心理上不愿意用這種方式。于是,經過探索找到了下面的辦法,解決了這個問題。
(1)首先調通一種模式,導出input.scs的仿真文本。此后的后續一切步驟都是基于該input.scs文本的;
(2)分離input.scs中的公共部分成一個個獨立文件,然后用include的方式包含進來。這些公共部分包括:netist、savefile、Lib等。這么做主要是為了簡化仿真文件,且之后萬一修改netlist和savefile的話只需要修改一個文件。
Note:netlist為頂層電路的網表;savefile為需要保存的信號文件。最終將得到一種模式下的仿真文件
(3)基于第2步的仿真文件,在其基礎上進行外部激勵修改,陸續得到其他21個仿真文件。至此已經得到全部22個仿真文件了。當然每一個文件都是可獨立運行的,現在的問題是怎樣一鍵運行所有的仿真文件。
(4)建立一個runSimulation的可執行文件,在其中依次寫下22個仿真文件的運行指令,比如下面那樣,當然這是最簡單的運行指令 。
// runSimulation,command:
spectre input1.scs
spectre input2.scs
spectre input3.scs
。。。。。。
(5)檢查運行指令,建議在指令中包含psf文件的具體存儲位置。這樣做的目的是呈現出一個清晰可讀的設計目錄,讓結果和仿真文件一一對應。
Note: 意外之喜,runSimulation中的指令是并行執行的。
寫在最后:
方法是普通的,但探索的過程還是有點曲折的,還好沒有卡住太久。這種方法第四步的建立可執行文件的作為最關鍵的一步,可以說是一個巧合,還好結果是好的。
在找出建立可執行文件運行指令的方法之前,其實已經讓PYLI兄寫了個簡單的Sheel腳本,寥寥幾句指令完全可以解決問題。但是我感覺可以用模擬人員擅長的方式來解決這個問題,只是我還沒有找到辦法而已。還好,源于那個巧合,還是找到了辦法。這可能是模擬人員的執著吧,最終還是用了自己的方法。
我一直覺得仿真文本有三個對我來說很大的優點:
簡介,不用開很多GUI;
方便,可一鍵執行操作;
獨立,每個文件可獨立執行
審核編輯:黃飛
-
指令
+關注
關注
1文章
607瀏覽量
35692 -
仿真電路
+關注
關注
5文章
82瀏覽量
33292 -
PVT
+關注
關注
0文章
13瀏覽量
3926
發布評論請先 登錄
相關推薦
評論