www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > > FPGA開(kāi)源工作室

綜合屬性

Vivado Design Suite中,Vivado綜合能夠合成多種類(lèi)型的屬性。在大多數(shù)情況下,這些屬性具有相同的語(yǔ)法和相同的行為。

?如果Vivado綜合支持該屬性,它將使用該屬性,并創(chuàng)建反映已使用屬性的邏輯。

?如果工具無(wú)法識(shí)別指定的屬性,則Vivado綜合會(huì)將屬性及其值傳遞給生成的網(wǎng)表。

1.ASYNC_REG

ASYNC_REG是影響Vivado工具流中許多進(jìn)程的屬性。此屬性的目的是通知工具寄存器能夠在D輸入引腳中接收相對(duì)于源時(shí)鐘的異步數(shù)據(jù),或者該寄存器是同步鏈中的同步寄存器。

當(dāng)遇到此屬性時(shí),Vivado綜合會(huì)將其視為DONT_TOUCH屬性,并在網(wǎng)表中向前推送ASYNC_REG屬性。此過(guò)程可確保具有ASYNC_REG屬性的對(duì)象未進(jìn)行優(yōu)化,并且流程中稍后的工具會(huì)接收屬性以正確處理它。

您可以將此屬性放在任何寄存器上; 值為FALSE(默認(rèn)值)和TRUE。可以在RTLXDC中設(shè)置此屬性。

ASYNC_REG Verilog Example

(*ASYNC_REG = “TRUE” *) reg [2:0] sync_regs;

2.CLOCK_BUFFER_TYPE

在輸入時(shí)鐘上應(yīng)用CLOCK_BUFFER_TYPE以描述要使用的時(shí)鐘緩沖器類(lèi)型。

默認(rèn)情況下,Vivado綜合使用BUFG作為時(shí)鐘緩沖器。支持的值是“BUFG”,“BUFH”,“BUFIO”,“BUFMR”,“BUFR”無(wú)。 CLOCK_BUFFER_TYPE屬性可以放在任何頂級(jí)時(shí)鐘端口上。它可以在RTLXDC中設(shè)置。

CLOCK_BUFFER_TYPE Verilog Example

(* clock_buffer_type = “none”*) input clk1;

CLOCK_BUFFER_TYPE XDC Example

set_property CLOCK_BUFFER_TYPEBUFG [get_ports clk]

3 FSM_ENCODING

FSM_ENCODING控制狀態(tài)機(jī)上的編碼。通常,Vivado工具會(huì)根據(jù)最適合大多數(shù)設(shè)計(jì)的啟發(fā)式方法為狀態(tài)機(jī)選擇編碼協(xié)議。某些設(shè)計(jì)類(lèi)型使用特定的編碼協(xié)議可以更好地工作

FSM_ENCODING可以放在狀態(tài)機(jī)寄存器上。其合法價(jià)值是“one_hot”,“sequential”,“johnson”,“grey”,“auto”“none”。 “auto”值是默認(rèn)值,允許工具確定最佳編碼。可以在RTLXDC中設(shè)置此屬性。

FSM_ENCODING Example (Verilog)

(* fsm_encoding = “one_hot” *)reg [7:0] my_state;

4 KEEP

使用KEEP屬性可防止信號(hào)優(yōu)化或被吸收到邏輯塊中的優(yōu)化。此屬性指示綜合工具保持其所處的信號(hào),并將該信號(hào)放入網(wǎng)表中。

例如,如果信號(hào)是2AND門(mén)的輸出,并且它驅(qū)動(dòng)另一個(gè)AND門(mén),則KEEP屬性可用于防止該信號(hào)合并到包含兩個(gè)AND門(mén)的較大LUT中。

KEEP也常用于時(shí)序約束。如果對(duì)通常會(huì)優(yōu)化的信號(hào)存在時(shí)序約束,KEEP會(huì)阻止該操作,并允許使用正確的時(shí)序規(guī)則

KEEP Example (Verilog)

(* keep = “true” *) wire sig1;

assign sig1 = in1 & in2;

assign out1 = sig1 & in2;

5 RAM_STYLE

RAM_STYLE指示Vivado綜合工具如何推斷內(nèi)存。可接受的值是:

?block:指示工具推斷RAMB類(lèi)型組件。

?distributed:指示工具推斷LUT RAM。

?寄存器:指示工具推斷寄存器而不是RAM

?ultra:指示工具使用UltraScale +?URAM原語(yǔ)。

默認(rèn)情況下,該工具根據(jù)啟發(fā)式選擇要推斷的RAM,以便為大多數(shù)設(shè)計(jì)提供最佳結(jié)果。將此屬性放在為RAM聲明的數(shù)組或?qū)哟谓Y(jié)構(gòu)級(jí)別上。

?如果設(shè)置了信號(hào),該屬性將影響該特定信號(hào)。

?如果設(shè)置在層次結(jié)構(gòu)級(jí)別上,則會(huì)影響該層次結(jié)構(gòu)級(jí)別中的所有RAM

層次結(jié)構(gòu)的子級(jí)別不受影響。

這可以在RTLXDC中設(shè)置。

RAM_STYLE Example (Verilog)

(* ram_style = “distributed” *)reg [data_size-1:0] myram [2**addr_size-1:0];

6 ROM_STYLE

ROM_STYLE指示綜合工具如何推斷ROM存儲(chǔ)器。可接受的值是:

?block:指示工具推斷RAMB類(lèi)型組件

?distributed:指示工具推斷LUT ROM默認(rèn)情況下,該工具根據(jù)啟發(fā)式選擇要推斷的ROM,以便為大多數(shù)設(shè)計(jì)提供最佳結(jié)果。

這可以在RTLXDC中設(shè)置。

ROM_STYLE Example (Verilog)

(* rom_style = “distributed” *)reg [data_size-1:0] myrom [2**addr_size-1:0];

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
關(guān)閉