FPGA的防止被綜合語句總結

2022-09-08 01:39:10 字數 1190 閱讀 1774

對於fpga的開發人員來說,經常會使用到signaltap或者chipscope這類除錯工具,但是有些訊號在除錯工具中,新增失敗。所以這裡就需要用到防止綜合的語句了。

在**中新增了防止綜合語句,就可以正常的使用除錯工具抓取訊號了。話不多說。直接開搞。

**:對於intel或者altera來說。

一般是使用quartus自帶的綜合器或者使用synplify綜合器。

對於wire型語句:

quartus自帶的綜合器使用:/* synthesis keep = 1 */和/*synthesis syn_keep = 1*/

synplify綜合器使用:/*synthesis syn_keep = 1*/。

對於reg型語句:

使用:/* synthesis preserve = 1 */或者/*synthesis noprune */,這兩個貌似都可以。

使用的例子:都是在「;」之前加入語句的 。

reg [7:0]cnt/*synthesis noprune */;

wire [7:0]cnt/*synthesis noprune */;

對於xilinx來說:

當使用xilinx自帶的xst的綜合器:

(* keep = 「true」 ) 或者 ( keep= 「true」 *)這樣就可以實現chipscope的觀察而不被優化掉了。eg:(* keep = 「true」 ) reg [10:0] cnt ,或者 ( keep= 「true」 *) reg [10:0] cnt;

當使用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 */;

當然,我使用的時候,一般使用(*mark_debug = "true"*)也可以防止被綜合。

ed:(*mark_debug = "true"*)wire   cnt ;

筆記,免得以後忘記了。

嘻嘻嘻。

verilog中的可綜合與不可綜合語句

1 所有綜合工具都支援的結構 always,assign,begin,end,case,wire,tri,aupply0,supply1,reg,integer,default,for,function,and,nand,or,nor,xor,xnor,buf,not,bufif0,bufif1,n...

FPGA中常見語法綜合後的電路

與高階程式語言不同,hdl語言與硬體電路密切相關。在編寫 的過程時,不能將高階語言的思想帶入到hdl語言書寫上面來,而是需要時刻明白自己所寫的 對應的硬體是什麼。為此,下面將總結在verilog語言中常用語法對應的硬體結構。d觸發器 always posedge clk begin q d end其...

Service防止被Kill的方法整理

在開發過程中,常常需要開啟一些後台服務,來處理一些資料操作,即使使用者退出程式後,後台也能夠正常的處理資料,此時就需要使用到service,關於service的使用,在這裡就不做詳細介紹了,今天討論的是,即使我們使用service,也並不一定能保證程式的正常執行,為什麼呢?因為市面上存在很多清理程序...