《電子技術應用》
您所在的位置:首頁 > 测试测量 > 业界动态 > Perl语言在电路设计中的应用

Perl语言在电路设计中的应用

2009-08-10
作者:余晓文 强 英

  摘? 要: 一種可在Unix操作系統下編程的模塊化的高級語言Perl。在簡要闡述Perl語言的基礎上,以實例描述了Perl語言在電路仿真測試中的應用。

??? 關鍵詞: Perl語言? 功能測試? 電路仿真? 測試文件

?

  實用提取和報表語言(Practical Extraction and Report Language,Perl)是由Larry Wall開發并不斷更新,用于Unix環境下編程的一種模塊化的、可擴展的高級語言。在集成電路后端設計中,電路仿真是設計的關鍵。而一個完備而準確的測試文件,則是電路仿真的基礎。Perl語言編寫的應用程序可自動生成設計者所需要的仿真測試文件,為電路仿真工作提供了一種便利而準確的方法。

1? Perl簡介

  Perl是一個高階程式語言,由Larry Wall和其他許多人所編寫,融合了許多語言的特性。它主要由C語言及sed、awk,UNIX shell和至少十多種其他的工具和語言所演化而來。其特點如下:

  (1)與腳本語言一樣,Perl不需要編譯器和鏈接器來運行代碼,要做的只是寫出程序并告訴Perl來運行。Perl提供腳本語言(如sed和awk)的所有功能,同時還具有sed和awk所不具備的很多功能。

  (2)Perl語言是UNIX系統上最常使用的數據處理工具。該語言本來的目的就是為了取代UNIX中的sed(或awk)與shell的結合。在UNIX系統中,Perl語言提供了強有力的搜索字符串模式的功能。它有很多文件搜索命令,使用這些命令可以非常方便地從文件中進行信息檢索,并可將這些命令相互結合來完成所需的任務。

  (3)Perl語言是一種編程語言,它能非常方便地處理和加工數據,并含有非常豐富的函數,覆蓋了輸入/輸出、字符串處理和數組處理等各方面,可以使用Perl語言來編寫出實用和簡潔的程序。

  (4)Perl語言擁有與C語言十分類似的運算符和流程控制,并被大多數人所熟悉,降低了編寫程序的難度。

2? Perl語言在電路仿真中的應用

2.1 SRAM電路

  圖1是SRAM的結構圖。它主要由存儲單元、譯碼器、FIFO及控制單元等部分組成。電路設計者根據SPEC的要求進行電路設計,并編寫出相應的測試文件,對電路的功能及時序關系進行仿真測試,以確保設計的正確性。

  根據測試要求不同,設計者為仿真電路設計的測試文件的長短會有很大的差別,例如測試SRAM的功能,需要在十幾個時鐘周期內反復讀寫,以測試存儲單元是否能按要求存儲數據,內部信號的時序是否正確。對于編寫這種約幾百行的測試文件來說,能否自動生成并不太重要。但是如果希望將所有存儲單元均進行一次讀寫檢查,手工編寫上萬行測試文件是不現實的。

  圖2是某種SRAM的時序圖。在SRAM讀取數據時,訪問時間(Access time)是一個非常重要的數據,它表示從存儲器中重新讀回數據所用的時間。Taccess=clock cycle-Tsetupclk。在設計過程中,要保證:當RD=1時,必須在Access time時間內把數據從存儲器中讀出。這就要求設計者在仿真時,關注Access time結束時的RDATA數據與希望從存儲器中讀出的數據是否一致。

?

  又如,Thd(Time Hold)代表了從存儲器中讀出的RDATA數據需要保持的時間。一般來說,SRAM將作為構成整個系統的一個子模塊,它的輸出必將為另一個子模塊的輸入信號。為了保證整個系統的正常工作,作為子模塊的SRAM的輸出信號必須滿足整個系統對它的要求,即輸出信號的保持時間(hold time)要足夠長。對于這一點,設計者在仿真中同樣也要關注RDATA數據是否可以保持足夠長的時間。類似要考慮的問題還有許多,這些嚴格的限制條件將給設計者帶來很大麻煩。例如不同的SRAM,其時鐘周期、setup time、hold time、I/O個數都可能不同。以上問題的存在都將導致一個測試文件只能用在與其對應的1個SRAM上。因此如果做1個系列的SRAM,僅寫測試文件的工作量就足夠大了。

2.2 應用Perl程序生成測試數據的實現

  經以上分析,采用Perl語言來生成SRAM的測試文件。該方法有如下要求:

  (1)快速、完全。要確保生成的測試數據可將所有存儲單元均寫入、讀出1次。

  (2)測試文件中必須包含clk上升和下降沿的讀寫數據,同時,必須有set up time、hold time等關鍵時鐘時刻的讀寫數據。根據測試文件編寫的具體要求,可以發現,在UNIX環境下,通過編寫Perl程序生成測試將是一個事半功倍的解決方式。用Perl語言編寫的部分程序如下。

#########################################

generate the title of vector

#########################################

sub gentitle{

?  local($title)=@_;

?  print $title ″radix 111″;

?  print $title &setdata(0,$abit,1),″ ″;

?  print $title &setdata(0,$dbit,1),″ ″;

?  print $title &setdata(0,$dbit,1),″n″;

? ??? ? ?print $title ″io?? iii″;

?????? ? print $title &setdata(0,$abit,2),″ ″;

?  print $title &setdata(0,$dbit,2),″ ″;

?????? ? print $title &setdata(0,$dbit,3),″n″;

?????? ? local($tmp1)=$abit-1;

?  local($tmp)=$dbit-1;

  chop($clock);

?  chop($address) if $address=~/n$/;

?  chop($dinput);

?  chop($doutput);

?  print $title ″vname $clock WR RD″;

print $title ″$address

[$tmp1:0] $dinput

[$tmp:0]$doutput

[$tmp:0]n″;

print $title ″tunit nsn″;

print $title ″trise $trise″;

print $title ″tfall $trise″;

print $title ″vih $vih″;

print $title ″vil $vil″;

print $title ″voh $voh″;

print $title ″vol $vol″;

print $title ″n″; ???????????????????? }

sub setdata{

local($value,$data,$flag)=@_;

?????? local($string)=″″;

?????? local($cl)=″″;

?????????? for(local($j)=0;$j<$data;$j++)

?????????? {

???????????????????? if($flag>0&&$flag<6)

???????????????????? {

??????????????????????????? $str.=″x″if $flag==1;

??????????????????????????? $str.=″i″if $flag==2;

??????????????????????????? $str.=″1″if $flag==3;

??????????????????????????? $str.=″0″if $flag==4;

??????????????????????????? next;

???????????????????? }

???????????????????? $cl.=$str;

???????????????????? $string=$c;

??????????????????????????? }

?????????? $str;

????}

  設計者需要做的就是根據SPEC的要求填寫由該程序生成的可執行文件的表格,就可在Perl的環境下生成完整的測試程序。應用Perl語言生成的測試程序,經過實際驗證,可以滿足上述2個條件。

  Perl語言作為一種具有強大功能的編程語言正迅速被人們認識與接受。它作為用在Unix環境下編程的高級語言,為電路仿真測試文件的編寫提供了一種新的方式,高效、準確的特點給設計人員帶來很大的便利。

?

參考文獻

1? Deitel H M,Deitel P J,Nieto T R et al.Perl編程金典.北京:清華大學出版社,2000

2? Wall L,Schwartz R L.Programming Perl.O′Reilly?Associates Inc,1991

3? BaKer R J,Li H W et al.CMOS Circuit Design,Lay-out,and Simulation.New York:The Institute of Electrical and Electronics Inc,1997

4? 高德遠,康繼昌.超大規模集成電路——系統和電路的設計原理.西安:西北工業大學出版社,1998

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 日韩欧美精品免费| 九九精品在线播放| 国产精品视频色| 国产午夜精品一区| 欧美日韩一区二区三区在线观看免 | 涩涩日韩在线| 国产aⅴ精品一区二区三区黄| www.亚洲视频.com| 国产黄页在线观看| 国产精品久久久久久久久久| 伊人久久99| 久久久久免费精品| 国产一区二区精品在线| 欧美一级电影久久| 精品欧美日韩在线| 国产不卡视频在线| www.午夜精品| 欧美亚洲另类在线| 国产欧美日韩综合精品| 99视频免费观看蜜桃视频| 欧美尤物巨大精品爽| 久久人人爽人人爽爽久久| 日本国产欧美一区二区三区| 国产精品亚洲аv天堂网| 午夜视频久久久| 久久精品无码中文字幕| 国产免费一区| 91久久久久久久| 激情欧美一区二区三区中文字幕| 91久久国产综合久久91精品网站| 欧美精品久久久| 亚洲精品电影在线一区| 欧美激情中文字幕在线| 亚洲精品中文字幕乱码三区不卡| 国产日韩第一页v| 欧美在线一区二区三区四| 91精品国自产在线观看| 视频一区不卡| www.精品av.com| 欧美成人精品在线| 日韩精品手机在线观看|