防止FPGA設(shè)計中綜合后的信號被優(yōu)化

來源:5.防止FPGA設(shè)計中綜合后的信號被優(yōu)化

隨著FPGA設(shè)計復(fù)雜程度越來越高特幔,芯片內(nèi)部邏輯分析功能顯得越來越重要署隘。硬件層次上的邏輯分析儀價格十分昂貴蓬戚,而且操作比較復(fù)雜。目前椰苟,F(xiàn)PGA芯片的兩大供應(yīng)商都為自己的FPGA芯片提供了軟件層面上的邏輯分析儀抑月,可以幫助我們在線分析芯片內(nèi)部邏輯。而且操作簡單方便舆蝴。但是往往因?yàn)槟承┰颍?strong>有些信號在綜合的時候就會被優(yōu)化掉谦絮,就可能會導(dǎo)致我們的設(shè)計失敗,當(dāng)然在為邏輯分析儀添加觀察信號的時候也無法找到該信號洁仗。從而對設(shè)計挨稿、調(diào)試人員的工作帶來一定的不便。下面就分別以Xilinx公司的邏輯分析儀ChipScope和Altera公司的SignalTap做以下總結(jié):


一京痢、使用Xilinx公司的ChipScope

使用ChipScope觀察芯片內(nèi)部的信號之前,先要把需要觀察的信號添加到ChipScope信號觀察列表當(dāng)中篷店。也就是說祭椰,我們必須能夠在綜合的網(wǎng)表文件中找到相應(yīng)的信號。如果是使用XST綜合的話疲陕,最好保留芯片內(nèi)部結(jié)構(gòu)的層次方淤,這樣就可以在相應(yīng)的子模塊查找需要觀察的信號。默認(rèn)情況下蹄殃,Chipscope只能觀察reg類型的信號携茂。但是通過設(shè)置屬性也是可以觀察wire型信號的。使用不同的綜合工具需要添加的屬性也不一樣诅岩。

  • 1讳苦、使用XST綜合
    在ChipScope中添加一些引腳的信號带膜,但列表中并沒有顯示,原因是綜合的地方?jīng)]設(shè)置好鸳谜,應(yīng)該將XST的屬性設(shè)置成如下:
    Synthesize - XST 右鍵 Process Properties..膝藕,Synthesis Options 內(nèi)設(shè)置 keep hierarchy 處為 YES


    (1) 對于reg型信號,如果被ISE優(yōu)化掉咐扭,一般可以把這個信號和其他沒有被優(yōu)化的信號進(jìn)行“與”芭挽、“或”等操作。這樣就可以達(dá)到觀察信號的目的蝗肪。
    (2)對于wire型號袜爪,對于ISE12.3以后的版本,XST綜合薛闪,以Spartan3為例辛馆,可以使用

(* KEEP="TRUE"*) wire  [15:0]   CPLD_ _AD;

這樣就可以在查找信號的信號找到wire類型的CPLD_ _AD信號進(jìn)行觀察。

  • 2逛绵、使用Synplify Pro綜合
    Synplify Pro對wire怀各、reg類型的信號有著不同的綜合屬性。
    (1)對于wire型信號术浪,使用/* synthesis syn_keep=1 */綜合屬性瓢对,例如下面的語句:
wire [7:0] data_in /* synthesis syn_keep=1 */;

(2) 對于reg型信號,使用/* synthesis preserve = 1 */綜合屬性胰苏,例如下面的語句:

reg [7:0] data_in /* synthesis preserve = 1 */;

二硕蛹、使用Altera公司的SignalTap
  • 1、使用Altera自帶的綜合器綜合
    Altera自帶的綜合器為了防止某些信號綜合器優(yōu)化掉硕并,也有自己的一套綜合約束屬性法焰。
    (1)對于reg型信號,為了防止Altera自帶綜合器將其優(yōu)化掉倔毙,可以添加noprune屬性埃仪。這樣就可以防止某些寄存器信號被優(yōu)化掉。也可以使用/*synthesis noprune*/綜合屬性陕赃。
`include "define.v"
module SignalTap_test(
                Clk     ,
                Rst     ,
                Cnt                        
                ) /*synthesis noprune*/ ;

input   wire        Clk ;
input   wire        Rst ;
output  reg [7:0]     Cnt ;

always@(posedge Clk or posedge Rst)
begin
    if( Rst == 1'b1)
        Cnt <= 8'h0;
    else
        Cnt <= #`ULDY Cnt + 1'b1;
end

endmodule

如上例(假設(shè)Cnt信號會被優(yōu)化掉)卵蛉,這樣添加綜合屬性之后,整個module的reg信號都不會被優(yōu)化掉么库。

需要注意的是:描述綜合屬性的語句一定要添加在“;”前面傻丝。

跟reg相關(guān)的綜合屬性,除了/*synthesis noprune*/可用诉儒,還有一個/*synthesis preserve*/可用葡缰。二者的差別在于:

  • /*synthesis noprune*/ 避免Quartus II優(yōu)化掉output 型的reg信號。
  • /*synthesis preserve*/ 避免Quartus II把reg信號當(dāng)成VCC或者GND等常數(shù)。

同時單獨(dú)的reg信號也可以: (*preserve*) reg [3:0] cnt;防止被優(yōu)化掉泛释。

(2)對于wire型信號來說滤愕,要想觀察此類信號,Altera綜合器提供了/*synthesis keep*/ 綜合屬性胁澳。如

wire [7:0] Cnt  /*synthesis keep*/; 

對于Quartus II 9.0以后的版本也可以使用(“keep”) wire [7:0] Cnt ;的寫法该互。

此外,/*synthesis keep*/也支持對reg型信號韭畸,使用它也可以防止reg型信號被優(yōu)化掉宇智。

但是也有可能出現(xiàn)這樣的情況,有的信號即使經(jīng)過此處理胰丁,仍然會被綜合工具優(yōu)化掉随橘,致使無法找到它。這個時候就需要對其使用“測試屬性”锦庸,可以加入probe_port屬性机蔗,把這兩個屬性結(jié)合在一起,即就是:
( *synthesis, probe_port,keep *)即可甘萧,這種方法同時適應(yīng)于wire和reg型信號類型萝嘁。

  • 2、使用Synplify Pro綜合
    使用Synplify Pro綜合時防止信號被優(yōu)化掉的方法和使用Xilinx公司 ChipScope使用Synplify Pro綜合時添加的綜合約束一樣扬卷,因?yàn)镾ynplify Pro是專業(yè)的綜合廠商牙言,所以對主流的FPGA廠商都支持。

三怪得、總結(jié)

1咱枉、以上的方法也不一定全部都可以使用,有時候因?yàn)榘姹静粚?yīng)就會導(dǎo)致信號依然會被優(yōu)化掉徒恋。不過經(jīng)過輪詢之后發(fā)現(xiàn)蚕断,ISE 12.3以后的版本、Quartus II 9.0之后的版本入挣、Synplify Pro 9.0.1以后的版本都可以使用亿乳。

2、一般情況下径筏,信號經(jīng)常被優(yōu)化掉风皿,還是與代碼風(fēng)格或者邏輯設(shè)計有冗余有關(guān)的,所以還是應(yīng)該盡量提高代碼質(zhì)量匠璧。在不能解決的時候再添加綜合約束。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末咸这,一起剝皮案震驚了整個濱河市夷恍,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖酿雪,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件遏暴,死亡現(xiàn)場離奇詭異,居然都是意外死亡指黎,警方通過查閱死者的電腦和手機(jī)朋凉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來醋安,“玉大人杂彭,你說我怎么就攤上這事∠啪荆” “怎么了亲怠?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長柠辞。 經(jīng)常有香客問我团秽,道長,這世上最難降的妖魔是什么叭首? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任习勤,我火速辦了婚禮,結(jié)果婚禮上焙格,老公的妹妹穿的比我還像新娘图毕。我一直安慰自己,他們只是感情好间螟,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布吴旋。 她就那樣靜靜地躺著,像睡著了一般厢破。 火紅的嫁衣襯著肌膚如雪荣瑟。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天摩泪,我揣著相機(jī)與錄音笆焰,去河邊找鬼。 笑死见坑,一個胖子當(dāng)著我的面吹牛嚷掠,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播荞驴,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼不皆,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了熊楼?” 一聲冷哼從身側(cè)響起霹娄,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后犬耻,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體踩晶,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年枕磁,在試婚紗的時候發(fā)現(xiàn)自己被綠了渡蜻。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡计济,死狀恐怖茸苇,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情峭咒,我是刑警寧澤税弃,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站凑队,受9級特大地震影響则果,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜漩氨,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一西壮、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧叫惊,春花似錦款青、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蔗坯,卻和暖如春康震,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背宾濒。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工腿短, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人绘梦。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓橘忱,卻偏偏與公主長得像,于是被迫代替她去往敵國和親卸奉。 傳聞我的和親對象是個殘疾皇子钝诚,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內(nèi)容

  • testbench 1. 激勵的產(chǎn)生 對于testbench而言,端口應(yīng)當(dāng)和被測試的module一一對應(yīng)榄棵。端口分為...
    Michael_Johnson閱讀 2,670評論 0 1
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理敲长,服務(wù)發(fā)現(xiàn)郎嫁,斷路器,智...
    卡卡羅2017閱讀 134,660評論 18 139
  • 鎮(zhèn)樓
    我不想要閱讀 241評論 0 0
  • 我們的故事開始了: 小A祈噪,男,看到周圍很多小伙伴都考公務(wù)員尚辑,想著那我也來考考吧辑鲤,這個時候距離國考開始只有90多天了...
    gabbe閱讀 365評論 0 0
  • 許有志中槍了,他不是站著也不是躺著而是坐著中槍的杠茬! 許有志月褥,是縣文體局一個科長,身高有一米七五左右瓢喉,四十出頭宁赤,長得...
    天馬行空我也閱讀 660評論 2 4