日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > > 艾思后端實現(xiàn)


MBFF是中后端設(shè)計實現(xiàn)常用的手段,這里結(jié)合中后端流程,來探討MBFF的優(yōu)勢和使用策略。

MBFF的優(yōu)勢和劣勢

MBFF是把數(shù)個single bit FF(SBFF)被封裝(banking/merge)到一個MBFF上,對時序優(yōu)化有一些影響,具體見下:

  • 面積優(yōu)勢
    在std-cell構(gòu)畫的時候,進行邏輯共享,面積有明顯提升
  • 功耗優(yōu)勢:由于gate級別的整合,在面積提升的基礎(chǔ)上,功耗也有明顯收益
  • 時序劣勢:
    下圖示例了SBFF到MBFF的物理布局的轉(zhuǎn)變
    • SBFF被封裝成MBFF后,數(shù)據(jù)路徑的終點會改變,可以變近(如上圖FF2),也可能變遠(yuǎn)(如上圖FF1),setup/hold會有變化
    • SBFF被封裝成MBFF后,時鐘路徑的終點會整合,不能像SBFF對每個單獨的SBFF的時鐘路徑靈活使用useful skew進行精細(xì)控制
      雖然PPA的優(yōu)化,MBFF二對一勝出,但是實際情況確實,在中后端幾十年以來的timing_driven 實現(xiàn)策略確實這個天平不可忽略的重要因素。具體范例和沖突,本文后面也會單獨討論

MBFF的封裝方式

基于MBFF的特性,在整個中后端設(shè)計流程中,用戶可以在三個地方有選擇的進行MBFF的封裝操作
  • RTL階段
  • 綜合階段
  • APR階段

RTL階段的MBFF封裝

基于中后端設(shè)計流程,MBFF的第一個入口是RTL,DC用戶可以通過synopsys原語來知道DC對RTL相應(yīng)的設(shè)計進行MBFF的構(gòu)建。PS:并非顯性地(explicit)在RTL中例化MBFF,這樣會對設(shè)計人員帶來很大的約束,也不利于后面的流程。
  • RTL指定MB封裝
    原語:synpsys infer_multibit REG_NAME
在DC的默認(rèn)配置下,elaborate命令執(zhí)行的時候,會對上述設(shè)計以及原語解析,會對應(yīng)輸出下列日志:

上述日志表達了兩個意思:
  • 使用原語的q0:synopsys infer_multibit "q0",被封裝成了MBFF。(當(dāng)然需要滿足前文所述的MBFF邏輯設(shè)計要求)
  • 未使用原語的q1,并未被封裝成了MBFF。(即便滿足前文所述的MBFF邏輯設(shè)計要求)
這里S家也貼心的給中端工程師提供了一個配置供選擇。
用戶通過變量hdlin_infer_multibit來控制DC elaborate的對應(yīng)操作。

這個變量有三個選項:
  • default_none:DC僅僅根據(jù)RTL里邊的原語infer_multibit進行MBFF識別。如果沒有碰到,就不轉(zhuǎn)化MBFF。PS:這個是DC的默認(rèn)設(shè)置。前提是RTL設(shè)計人員需要使用原語進行MBFF指定,否則In-compile MBFF flow無法實現(xiàn)MBFF的封裝。具體細(xì)節(jié)見后續(xù)描述
  • default_all: DC根據(jù)RTL代碼的邏輯連接關(guān)系,主動地去做MBFF的識別,無論是不是使用原語infer_multibit,DC都會根據(jù)邏輯連接關(guān)系,盡量進行MBFF的封裝,除非DC遇到禁止MBFF封裝的原語(后文會提供細(xì)節(jié))。
  • never:DC工具忽略infer_multibit原語,也不主動去封裝MBFF,所以,在elaborate命令下,不會有任何的MBFF封裝動作發(fā)生
    下圖截取了三個不同配置下,elaborate命令的日志,MB列的結(jié)果有不同
S家為了配合上述變量的靈活使用,當(dāng)hdlin_infer_multibit配置成default_all的時候,可以使用原語dont_infer_multibit進行排外處理:所有定義這個原語的寄存器,即便用戶使用了hdlin_infer_multibit=default_all的配置,elaborate的時候,也不會對dont_infer_multibit指定寄存器進行MBFF的封裝。
如下圖示例的q1,即便用戶已經(jīng)使用了default_all,這里在elaborate時,仍然沒有發(fā)生MB的封裝

綜合階段的MBFF封裝

RTL的MBFF是通過簡單的原語來進行MBFF封裝指定(infer_multibit)或者MBFF封裝排外指定(dont_infer_multibit)。除過elaborate對MBFF進行未映射(unmapped)級別的封裝,綜合流程主要還是通過compile等命令來進行MBFF的映射(mapped)實現(xiàn)的。無論是RTL使用原語對MBFF進行指定,抑或使用hdlin_infer_multibit=default_all進行MBFF識別,任何在elaborate階段的FF,只有存在MB==Y的情形,才是有可能在后期通過compile命令完成MBFF的封裝,譬如下圖的q0_reg,在compile命令執(zhí)行中,才是有可能被映射實現(xiàn)成MBFF的

Compile步驟里邊,通常有兩種方式進行MBFF的映射實現(xiàn)(mapped)。
  • In-compile MBFF實現(xiàn):基于數(shù)據(jù)庫的形態(tài),使用compile 命令,直接進行MBFF的映射實現(xiàn)
  • In-place MBFF實現(xiàn):基于DCT的物理布局?jǐn)?shù)據(jù),對距離相近的FF進行MBFF的封裝實現(xiàn)(banking)
這兩種方法各有優(yōu)缺,這里一起來看一下

In-compile MBFF實現(xiàn)

Compile命令,通過下列命令set_multibit_options對MBFF的實現(xiàn)進行配置,已完成從unmapped MBFF到真實的MBFF的實現(xiàn)
PS:顧名思義,這個步驟也需要目標(biāo)工藝庫提供MBFF的支持,因為在elaborate的時候,只是一個基于邏輯的MBFF評判,最終的實現(xiàn)還是在compile掛靠工藝庫的操作
  • default: 將所有的MBFF的優(yōu)化配置恢復(fù)為default
  • exclude_registers_with_timing_exceptions: 設(shè)置為true時,對所有帶有timing exception的寄存器跳過MBFF的映射實現(xiàn)
  • mode:MBFF的模式選擇,有下列四種模式可供選擇
    • none:compile命令中跳過MBFF封裝
    • non_timing_driven:無論時序好壞,工具盡可能的去做MBFF,這樣實現(xiàn)的MBFF的比率最高
    • timing_driven:時序驅(qū)動的方式去做MBFF映射實現(xiàn),最后的結(jié)果是timing 得到保障的情況下,面積也可以得到了優(yōu)化
    • timing_only:僅僅時序驅(qū)動的方式,時序會最優(yōu)解,但是面積可能不是最優(yōu)化的結(jié)果。
  • ignore_timing_exception: 當(dāng)exclude_registers_with_timing_exceptions== true的時候,在進行MBFF映射實現(xiàn)的時候,對指定的timing_exception的類型可以進行MBFF的映射,相當(dāng)于對exclude_registers_with_timing_exceptions選項的一個二次細(xì)化。目前支持GROUP_PATH, FALSE_PATH, MULTI_CYCLE_PATH, MIN_DELAY, MAX_DELAY等五類。譬如:
set_multibit_options \
 exclude_registers_with_timing_exceptions true \
 ignore_timing_exception FALSE_PATH
是對除過FALSE_PATH 的其他所有擁有timing exception的SBFF跳過MBFF映射實現(xiàn)。言下之意就是擁有FALSE_PATH 的SBFF會被封裝實現(xiàn)為MBFF。
  • critical_range: 當(dāng)時序驅(qū)動模式打開時,這里定義的時序范圍都被考量,這個和group_path里的critical_range類似
  • path_group:當(dāng)時序驅(qū)動模式打開時,只有這里指定的path_group被考慮。如果不定義這個選項,則所有的path_group都被考慮
    所以,一個實現(xiàn)MBFF的compile命令類似下例:
dc_shell> set_multibit_options -mode timing_driven
dc_shell> compile_ultra -gate_clock -scan
compile結(jié)束后,可以通過命令report_multibit_banking查看MBFF的替換結(jié)果統(tǒng)計
對于MBFF的替換計算,這里設(shè)定,
  • MBFF_cnt(n): 擁有n-bit寬度的MBFF的instance數(shù)量
  • SBFF_cnt:擁有single-bit的SBFF的instance數(shù)量
  • Total_bit_cnt: 所有的SBFF和MBFF折算成SBFF對應(yīng)的bit數(shù)。這個也就是數(shù)據(jù)庫在不采用MBFF flow的時候的全部FF的數(shù)量
  • MBFF_ratio: 所有的MBFF對應(yīng)SBFF的數(shù)量占比
    推導(dǎo)出:

    綜上,衡量一個數(shù)據(jù)庫的MBFF的占比主要是MBFF_ratio這個值,這個值越高,說明數(shù)據(jù)庫中被封裝成MBFF的FF越多,相應(yīng)獲得的面積/功耗收益就越大。PS:由于MBFF的類型較多,分別有2、4、8bit等,單純查看MBFF的instance數(shù)量是不全面的。
未完待續(xù)…

【敲黑板劃重點】

MBFF對PPA有較大貢獻,也是現(xiàn)在std-cell的標(biāo)準(zhǔn)交付器件,充分理解MBFF的實現(xiàn)方法和手段,對整個前端、中后端的設(shè)計實現(xiàn)會提供很大的靈活性和可控性,無論時設(shè)計人員還是實現(xiàn)人員,都是工作中的必備技能。


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