《電子技術應用》
您所在的位置:首頁 > 测试测量 > 业界动态 > 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。
主站蜘蛛池模板: 欧洲精品亚洲精品| 色综合色综合网色综合| 亚洲97在线观看V| 欧美日韩一区在线视频| 韩国日本不卡在线| 91av在线国产| 久久久久久香蕉| 丝袜亚洲欧美日韩综合| 国产精品视频在线播放| 久久国产视频网站| 日韩欧美亚洲日产国| 97精品伊人久久久大香线蕉| 久久国产精品网站| 欧美日韩精品免费看| 日韩中文字幕网站| 国产成人精品电影久久久| 国产精品 欧美在线| 奇米影视亚洲狠狠色| 91国产中文字幕| 99久久久精品视频| 国产精品10p综合二区| 国产欧美一区二区三区不卡高清| 久久夜色精品国产亚洲aⅴ| 日本亚洲欧洲色α| 色妞在线综合亚洲欧美| 亚洲一区二区三区乱码aⅴ| 91av在线精品| 亚洲欧美日韩在线综合| 天天干天天操天天干天天操| 亚洲视频在线观看日本a| 国产一区二区视频免费在线观看| 久久亚洲精品欧美| 久久久精品影院| 久久国产精品久久久久久久久久 | 色妞在线综合亚洲欧美| 日韩综合视频在线观看| 日韩暖暖在线视频| 亚洲综合在线小说| 亚洲国产精品日韩| 国产精品av免费观看| 欧美二区三区在线|