【導(dǎo)讀】一般公司如果沒有人做這一塊,會要求設(shè)計師直接作出他電路的行為級模型,用來和數(shù)字組進(jìn)行混合仿真。建模是一件不容易的工作,你如何證明你的建模能夠準(zhǔn)確反映出你的模擬電路的特性?
仔細(xì)看過幾篇Kundert, K H的關(guān)于這方面的論文,我感覺這個還是很重要的。
一般公司如果沒有人做這一塊,會要求設(shè)計師直接作出他電路的行為級模型,用來和數(shù)字組進(jìn)行混合仿真。
建模是一件不容易的工作,你如何證明你的建模能夠準(zhǔn)確反映出你的模擬電路的特性?
Kundert, K H [1]提出的觀點(diǎn)為:
1. 用Verilog-AMS 寫出Testbench 去測試你的模擬電路,self-check。
如:驗證一個VGA,如果有64組控制字,Verilog-AMS 的Testbench要去完整驗證每一組控制字,做到self-check。
2. 寫出你模擬電路的行為級模型,做到pin-accurate(嘗試用行為級模型代表單個模擬電路版圖后仿結(jié)果),讓這個行為級模型能夠通過第 一步中你的testbench。
注:電路級模型,基本是沒有辦法和數(shù)字組做聯(lián)合仿真的,這個仿真時間可能是數(shù)以星期記。
3. 將這個模型提供給數(shù)字組,進(jìn)行混合仿真?;蛘咛峁┙o你其他部分電路用。
4. 如果仿真速度仍然很慢,嘗試用Verilog建立你模擬電路的行為級模型 (見[2], [3])。
文獻(xiàn)[4] 給出了在Virtuoso (IC616)環(huán)境下,如何應(yīng)用Verilog-AMS語言中的 wreal 數(shù)據(jù)類型 和 Verilog-2005,建立event-driven的模擬電路模型,極大提高仿真速度(1000倍以上)。
(注:Verilog-2005,內(nèi)部支持real數(shù)據(jù)類型,但port不支持,需要通過 $realtobits 和 $bitstoreal 兩個函數(shù)來在不同module間傳遞real數(shù)據(jù),而在Verilog-AMS和SystemVerilog-2012,可以直接傳遞real數(shù)據(jù),前者引入了一中新的數(shù)據(jù)類型wreal,means wire real)
在Verilog-AMS中,我們可以用analog begin...end來建立模擬模型(如:Verilog-A中一樣),但這種建模方式仿真時,AMS Designer Simulator會調(diào)用模擬解法器來求解電路,而采用wreal 數(shù)據(jù)類型的event-driven建模方式,這樣 無論你的模擬電路和數(shù)字電路,AMS Designer Simulator都只會調(diào)用數(shù)字接法器,而大大提高功能級的驗證速度。各個建模方式的性能和仿真速度,如下圖:
event-driven的方式建模模擬電路模型,最早見于上世紀(jì)80年代末,當(dāng)時還未有好的模擬電路建模語言,隨著Verilog-A和Verilog-AMS的出現(xiàn),人們開始用模擬電路語言來建立模型,但又隨著數(shù)?;旌想娐芬?guī)模越來越大,Verilog-A + Verilog的建模方式的仿真時間,越來越大,使得設(shè)計周期加大。于是,又開始重新研究event-Driven的建模方式。
目前,最新的成果[6],是利用一個時間離散點(diǎn)的值和這點(diǎn)的斜率,來近似這個點(diǎn)和這個點(diǎn)到下一個離散點(diǎn)之間的信息(Piece-wise Linear),而之前時間離散點(diǎn)之間的信息用上一個離散點(diǎn)的值表示(零階保持),(Piece-wise constant)。
因為SystemVerilog提供結(jié)構(gòu)體數(shù)據(jù)變量,我們可以用值和它的斜率構(gòu)成一個新的變量,用這個變量來描述模擬信號。更為精確的event-Driven的建模方式,需要在SystemVerilog中實(shí)現(xiàn)。
5. 全Verilog級的數(shù)?;旌戏抡?,或者Verilog-AMS+Verilog的數(shù)?;旌戏抡?/div>
真實(shí)案例:
Min, H 給我們上課時,講過一個他們公司草創(chuàng)期的一個真實(shí)案例,就是開始時沒有模擬電路的行為級模型提供給數(shù)字組進(jìn)行混仿,而又不可能拿電路級的去仿真,最后流片結(jié)果出錯,功能級不對,誤碼率偏高。然后,寫了模擬電路的行為級模型(Verilog-AMS)給數(shù)字組,在仿真階段就發(fā)現(xiàn)了這個誤碼率高的原因,給解決了。
我目前的科研項目中,就是一個比較大數(shù)?;旌想娐?,直接開電路級混合仿真,需要好幾天,直接被我放棄,準(zhǔn)備寫模型試試。
不知道大家怎么看,這個Analog 建模的方面。
參考 (點(diǎn)擊文末閱讀原文可下載參考資料)
[1] DCAS-2007, Kundert, K S, “Verification of Complex Analog Integrated Circuits”
[2] ECCTD-2013, Wegener, C (from Dialog Semiconductor), "Method of modeling analog circuits in Verilog for Mixed-Signal design Simulaitons"
[3] Forum on specification & Design Languages - 2014, Sabiro, S G (from Mentor Graphics), "Event-Driven (RN) Modeling for AMS Circuits"
[4] Cadence, Verilog-AMS Real Valued Modeling Guide - 2013
[5] TCAS-I-2014,Liao, S (from Stanford), "A Verilog Piecewise-Linear Analog Behavior Model for Mixed-Signal Validation"
[6] Cadence-2015, "Workshop for AMS Designer in Virtuoso"
網(wǎng)友互動摘錄:
kwankwaner:
我覺得行為模型在系統(tǒng)級仿真中既重要又方便,主要是驗證架構(gòu)、算法、指標(biāo)等等。至于做數(shù)模混仿我到覺得沒必要這么復(fù)雜,實(shí)際上數(shù)模相接的地方只有信號、電源和時鐘,這些完全都可以用一個描述清楚的源來代替。Q公司其實(shí)只要用Matlab建模就夠了,雙方把接口指標(biāo)定義清楚就無需混仿。
作者答復(fù):
Simulink建模確實(shí)最快最方便
- z-domain和s-domain可以放在一起仿真,采用ZOH連接
- 支持ModeSim - Simulink 和 Virtuoso - Simulink混合仿真
- 一直在推廣它內(nèi)含的HDL-Coder,和HDL-Verifier。前者描述算法狀態(tài)機(jī)非常不方便,后者主要是用Simulink搭建仿真平臺去測試你的 Verilog。
MATLAB也在推它的混合信號仿真流程,以前做過一些調(diào)研,分享給大家
我問的一個QCOM的一個工程師,他說他們用Verilog-A挺多的,哈哈
但我感覺Verilog-AMS應(yīng)該以后會用的越來越多。
angelaboy:
verillog-A and verilog-AMS都應(yīng)該學(xué)習(xí)掌握吧!
作者答復(fù):
Verilog-AMS 支持 Verilog-2005所有特性,同時支持模擬建模所有特性。 Verilog-A中不支持Verilog的語法。
Verilog-AMS最新標(biāo)準(zhǔn)是2014年6月發(fā)布的。
Verillog-A已經(jīng)不更新了吧?
關(guān)于ADPLL行為級建模,采用Verilog-AMS,實(shí)際上仍然較慢。
25us仿真,Cadence AMS Designer,消耗我2.5小時;由于FMCW應(yīng)用,我的仿真時間大約需要10ms左右。
采用全Verilog建模方式,1ms仿真時間,消耗2分鐘。
采用Simulink最快,但Simulink的建模層次最高,不利于挑出混合信號IC中的需要綜合部分的Verilog的錯誤。
因此,采用全Verilog方式,完成ADPLL建模,才是一個不錯的方案。
在一樓,分享了兩篇Verilog 對模擬電路建模的文章,希望大家喜歡。
以下省略更多論壇互動。。。
作者: JoyShockley(胡詣?wù)埽?本文為作者為EETOP Analog IC設(shè)計板塊版主