01
問題描述
新建一個VerilogA View
在Verilog-A文本編輯器中添加以下代碼:
// VerilogA for my_lib, decoder, test `include "disciplines.vams" `include "constants.vams" module decoder(outp,outn); output[7:0] outp,outn; electrical[7:0] outp,outn; parameter integer code=0 from [0:255];//控制碼 parameter real vdd=0; parameter real vss=-5; genvar i; analog begin for(i=0;i<8;i=i+1) begin if(code&(1<
再給當前cell添加一個symbol view,包含兩個Pin,跟Verilog-A中定義保持一致outp<7:0>、outn<7:0>。
在veriloga view上右鍵選擇【Compile Verilog】進行編譯
編譯通過會提示成功,否則會給出錯誤信息。
【注】作者在這里翻車了,本來標題寫的是ADS應用技巧,但是作者發(fā)現(xiàn)當前使用的ADS不能正常編譯這個decoder模塊了,提示我symbol定義的端口outp<7:0>、outn<7:0>跟Verilog-A模塊中定義的端口outp、outn不一致,我明確地知道是端口寬度不匹配導致的,但我堅持認為是軟件的問題。
ERROR: Failed to compile verilog : Port names in verilog and symbol views do not match. Symbol View Ports : outp<7:0> outn<7:0> Verilog Module Ports : outp outn Modify either verilog or symbol view of the cell : decoder
幾年前用ADS2017的時候這個模塊肯定是已經(jīng)編譯通過正常使用的,但畢竟作者是業(yè)余學習使用ADS,也沒有人家的License授權,遇到這種問題也不好跟Keysight提……雖然可以將8位寬度的向量端口拆成8個獨立的端口,但我認為這很不優(yōu)雅!而且相同的代碼,我在Virtuoso環(huán)境中都是可以完全正常使用的,所以上面的仿真結(jié)果實際上我是用Virtuoso跑出來的……如果有讀者知道怎么解決這個問題,歡迎在公眾號留言,或者發(fā)送郵件xhlyuestc@gmail.com交流,感激不盡!
02
權宜之計
好在ADS和Virtuoso都支持OA,因此只需要將Virtuoso編譯好的VerilogA模塊復制到ADS的library中就可以使用了。
在virutuoso中新建一個cell,類型選擇VerilogA,粘貼同樣的代碼到編輯器中,點擊build按鈕,提示可以自動生成symbol即可:
對應cell下面的文件結(jié)構如下圖所示:
將decocer整個cell的文件夾復制到ADS對應工程的library里,然后就可以在ADS工程的Schematic中調(diào)用這個VerilogA Cell進行仿真了。
看看這個掃描輸出的電壓,是不是很像數(shù)字電路里的二進制分頻器,但那里是瞬態(tài)波形,這里是直流電壓!
審核編輯:劉清
-
Verilog
+關注
關注
28文章
1351瀏覽量
110093 -
ADS仿真
+關注
關注
0文章
71瀏覽量
10439
原文標題:ADS應用技巧(13)——VerilogA的權宜之計
文章出處:【微信號:芯片設計之路,微信公眾號:芯片設計之路】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論