新聞中心

EEPW首頁(yè) > EDA/PCB > 設(shè)計(jì)應(yīng)用 > SOC參數(shù)自動(dòng)配置設(shè)計(jì)方法與功耗優(yōu)化

SOC參數(shù)自動(dòng)配置設(shè)計(jì)方法與功耗優(yōu)化

作者: 時(shí)間:2012-10-29 來源:網(wǎng)絡(luò) 收藏

引 言

本文引用地址:http://m.butianyuan.cn/article/189803.htm

片上系統(tǒng)( system ON chip ,) 已經(jīng)成為21世紀(jì)全球矚目的關(guān)鍵核心技術(shù)。 具有垂直整合的特性,并注重創(chuàng)新和創(chuàng)意,產(chǎn)品非常個(gè)人化、應(yīng)用差異化、樣式多元化。 應(yīng)用需求的廣泛性,以及大部分SOC 應(yīng)用功能單一、性質(zhì)確定的特點(diǎn),決定了SOC 目前大多是針對(duì)專門的應(yīng)用領(lǐng)域進(jìn)行專門設(shè)計(jì)來滿足高性能、低成本和低功耗的要求。 目前SOC 的發(fā)展趨勢(shì)是: 體系結(jié)構(gòu)需要在新技術(shù)與產(chǎn)品、市場(chǎng)和應(yīng)用需求之間取得平衡;趨向于走專用、定制和化的道路。

一方面由于SOC 的專用化設(shè)計(jì)要求,另一方面由于IP 提供商的支持, SOC 的集成正向化設(shè)計(jì)發(fā)展。 SOC 的可能影響系統(tǒng)功耗、性能和面積,每個(gè)的選擇范圍是一個(gè)有限集合,因此一個(gè)SOC 設(shè)計(jì)可以理解為一組SOC 參數(shù)的選擇。 在系統(tǒng)結(jié)構(gòu)形成后,SOC 設(shè)計(jì)問題就轉(zhuǎn)變?yōu)閰?shù)配置問題。 隨著參數(shù)的增多,手工對(duì)代碼進(jìn)行修改是不可接受的,這不僅效率低,而且會(huì)增加錯(cuò)誤率。本文對(duì)原有的硬件描述語(yǔ)言進(jìn)行擴(kuò)展,并建立了參數(shù)配置環(huán)境,通過分析SOC 參數(shù)屬性,利用鄰域搜索算法針對(duì)功耗進(jìn)行參數(shù)優(yōu)化。

參數(shù)自動(dòng)配置

采用傳統(tǒng)的硬件描述語(yǔ)言(HDL) ,參數(shù)自動(dòng)配置的難點(diǎn)在于:首先模塊本身的描述隨參數(shù)配置的改變而變化; 其次當(dāng)模塊被更上層的父模塊例化(inSTance) 時(shí),其接口邏輯在不同參數(shù)配置下也可能不同。 在進(jìn)行參數(shù)化設(shè)計(jì)時(shí),只能采用硬件描述語(yǔ)言的宏定義,這種方法不僅不夠靈活,而且代碼復(fù)雜,冗余很多。

參數(shù)自動(dòng)配置環(huán)境由一組運(yùn)行腳本組成,主要通過兩個(gè)工具Eperl 和Vperl 來進(jìn)行參數(shù)配置,實(shí)現(xiàn)了代碼的即配置即生成。 Eperl 的作用是定制內(nèi)部的邏輯,Vperl 的作用是生成模塊間的連接關(guān)系。 基于Verilog 硬件描述語(yǔ)言的參數(shù)自動(dòng)配置過程如下。

1) 參數(shù)首先被送到3.evp 文件,這是同時(shí)包括Eperl 語(yǔ)法和Vperl 語(yǔ)法的文件,因?yàn)镋perl 和Vperl 電路的語(yǔ)法非常簡(jiǎn)潔,所以設(shè)計(jì)師不僅不用擔(dān)心會(huì)在這里陷入困境,反而會(huì)大大減少設(shè)計(jì)強(qiáng)度。

2) 3.evp 文件經(jīng)過Eperl 處理后生成3.vp 文件,這是只包含Vperl 語(yǔ)法的文件,這時(shí)所有的參數(shù)都被解析,模塊內(nèi)參數(shù)配置都已經(jīng)完成了。

3) 3.vp 經(jīng)過Vperl 處理后, 最后生成3.v 文件, 即電路的Verilog 描述。 因此在參數(shù)化設(shè)計(jì)中,與傳統(tǒng)設(shè)計(jì)不同,設(shè)計(jì)師的描述文件是3.evp 文件,而Verilog 代碼只是作為設(shè)計(jì)的中間代碼出現(xiàn)。 參數(shù)自動(dòng)配置環(huán)境建立了一系列腳本程序來自動(dòng)解析相關(guān)文件的相互關(guān)系,并生成整個(gè)系統(tǒng)的硬件描述語(yǔ)言描述。

Eperl 最初用作HTML 頁(yè)面生成,適合于靜態(tài)文本相當(dāng)多,但是又有一部分代碼需要?jiǎng)討B(tài)生成的場(chǎng)合。 因?yàn)榇蠖鄶?shù)硬件描述是靜態(tài)代碼,只有一小部分需要可配置,所以Eperl 非常適用于電路的硬件描述。 Eperl 結(jié)合了Perl 的解釋功能,相當(dāng)于在原文本結(jié)構(gòu)中插入了一段內(nèi)嵌代碼。 這段內(nèi)嵌代碼最終可以生成想要配置的硬件結(jié)構(gòu)。 Eperl 利用Print 結(jié)構(gòu)來傳遞所有的內(nèi)嵌代碼。 Eperl 所做的相當(dāng)于程序員寫一個(gè)用于生成代碼的Perl 腳本。 下面所示程序段是從dma _fifo.evp 文件中提取的一部分代碼。

∥Synchronous FIFO.fifo_depth x fifo_width bit words.

moduleBeg ;

Ports ;

Regs ;

WIRes ;

: $width_msb=$fifo_width21 ;

$depth_msb=$fifo_depth21 ;

$ptr_width=log ( $fifo_depth)/log (2) ;

$ptr_msb=$ptr_msb21 ;

: >

Force (mem,fifomem, :=$width_msb : >,0,

:=$depth_msb : >,0) ;

……

∥Update FIFO memory.

always @(posedge clk) begin

if ( rstp== 1′b0 writep== 1′b1

fullp== 1′b0)

fifomem [ head ] =din [ :=$width_msb :

> :0 ] ;

end

∥Update the head register.

always @(posedge clk) begin

if ( rstp== 1’b1)

head [:=$ptr_msb:>:0]=:=$ptr_width:>′b0 ;

else

if (writep== 1′b1 fullp== 1′b0)

head [ :=$pt r_msb : > :0 ] =

head [ :=$pt r_msb : > :0 ] + 1 ;

end

..


上一頁(yè) 1 2 3 4 下一頁(yè)

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉