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

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

在現(xiàn)代的芯片設(shè)計(jì)里邊,工程師在優(yōu)化功耗和面積上無(wú)所不有其極,這里討論的multi-bit FF 就是其中的一種方法或者稱之為一種流程。

MBIT FF vs signle bit FF

Multi-bit顧名思義就是將通常單bit的FF,封裝為一個(gè)多bit的FF,下面一起來(lái)看一下他們之間的異同:

  • 單bit的asyn-clear scan-FF
針對(duì)這種單bit的asyn-clear scan-FF,vendor提供了幾種多bit的asyn-clear scan-FF,
  • multi-bit2 asyn-clear scan-FF
  • multi-bit4 asyn-clear scan-FF
  • multi-bit6 asyn-clear scan-FF
  • multi-bit8 asyn-clear scan-FF
從cell的原理圖上看,multi-bit和signle-bit的區(qū)別很小,可以簡(jiǎn)單理解為將多個(gè)signle-bit的FF并排放到了一起,對(duì)于scan chain,也天然的安裝順序連接到一起,簡(jiǎn)單總結(jié)如下


可以看到,這里會(huì)有三類pin是共享關(guān)系
  • clock pin
  • clean/reset pin
  • SI/SE pin
所以:由于scan是后插入的,這個(gè)對(duì)于multi-bit的封裝不敏感外,當(dāng)且僅當(dāng)某一組FF在功能上的clock和reset-clear是共享driver的時(shí)候,這一組FF才可以被二次封裝成為multi-bit FF

MBIT的優(yōu)勢(shì)

由于MBIT對(duì)一些common pin的共享機(jī)制,由此帶來(lái)的優(yōu)勢(shì)有:
  • 基于共享機(jī)制,晶體管級(jí)別的面積優(yōu)化
  • common pin的使用,減少layout連線損耗
  • clock tree的leaf變少,降低clock tree長(zhǎng)度和功耗

在cell級(jí)別,以T12工藝為例,同樣功能(Scan D Flip-Flop with Async Clear, drive strenth: X1)的signle bit和MBIT的比較如下(PS:用多個(gè)單bit 直接搭建多bit 結(jié)構(gòu)進(jìn)行功耗面積的比對(duì))


如果將signle bit 例化多次進(jìn)行橫比,MBIT大體上都會(huì)在面積上:7.4% ~ 12.96% 的提高幅度,功耗上:-3.93% ~ 7.32% 左右的提升在了解了multi-bit的機(jī)理后,這里需要一起梳理一下multi-bit的流程。

MBIT的流程

RTL 階段對(duì)MBIT的推進(jìn)

在讀入RTL之前,DC里邊通過(guò)配置 hdlin參數(shù):hdlin_infer_multibit 來(lái)對(duì)管理multi-bit的RTL階段的識(shí)別,

上述三種方式,僅僅影響RTL mapping階段的multi-bit的識(shí)別和創(chuàng)建,言下之意:只對(duì)第一個(gè)compile_ultra (mapping)的結(jié)果有影響。這里推薦的方案是: default_none
  • 如果使用never:這個(gè)會(huì)完全忽略前端設(shè)計(jì)人員的意圖,可能會(huì)丟失directives的信息傳遞
  • 如果使用default_all:這個(gè)會(huì)導(dǎo)致DC 會(huì)有一些自己研判的方法,會(huì)將multi-bit進(jìn)行自己研判的替換,這里不會(huì)丟失設(shè)計(jì)者的directives,但是可能會(huì)對(duì)一些總線或者二維數(shù)組進(jìn)行替換,這里會(huì)導(dǎo)致兩類問(wèn)題
    • timing:在第一圈compile_ultra的時(shí)候,timing信息并非完整,此時(shí)進(jìn)行multi-bit的替換,勢(shì)必會(huì)導(dǎo)致后續(xù)時(shí)需優(yōu)化的障礙。過(guò)早打包可能還需要二次拆包
    • register的命名行為。如果RTL是這樣的二維數(shù)組定義
      reg [7:0] mem[255:0]
      
      正常情況下,DC會(huì)把這類二位數(shù)組mapping成:
      mem_reg[255][7]
      mem_reg[255][6]
      ......
      mem_reg[255][0]
      ......
      mem_reg[0][7]
      mem_reg[0][6]
      ......
      mem_reg[0][0]
      
      如果,這個(gè)時(shí)候如果使用了default_all,DC analyze會(huì)對(duì)此類數(shù)組格式進(jìn)行multi-bit封裝,最終DC compile_ultra生成的instance名字會(huì)變得比較奇怪,如下:
      # use 4bit register bank
      mem_reg[255][7:4]
      ......
      mem_reg[255][3:0]
      ......
      mem_reg[0][7:4]
      ......
      mem_reg[0][3:0]
      
這種命名方式會(huì)給formal帶來(lái)一些的障礙,也有可能帶來(lái)潛在的timing 隱患小結(jié):在RTL解析階段,把RTL directives和hdlin_infer_multibit =default_none結(jié)合使用,既尊重原著意思,也可以實(shí)現(xiàn)比較可控的multi-bit 替換。如果設(shè)計(jì)人員不確定哪些一定或者一定不需要去做multi-bit 替換,這里依然使用hdlin_infer_multibit =default_none,這樣在第一個(gè)RTL步驟,就之后對(duì)于RTL 設(shè)計(jì)人員的需求,在RTL 分析時(shí)進(jìn)行multi-bit 綁定,但是并不一定會(huì)產(chǎn)生替換,前提是timing和控制都能滿足要求。

R2G里的MBIT的流程

從上面的描述可以看到,MBIT的替換主要是為了面積/功耗收益的同時(shí),時(shí)序不受影響(不出violation)。所以在physical aware 的DCT完成后,進(jìn)行替換,是比較合適的時(shí)機(jī):
  • mapping和邏輯優(yōu)化基本完成:ICG的影響已經(jīng)帶入,MBIT的控制共享比較清晰
  • 由于是physical aware的DCT,時(shí)序信息也基本清楚,這里整體進(jìn)行MBIT替換可以最大限度的利用MBIT的優(yōu)勢(shì),如果后期(APR)有時(shí)序壓力,可以使用de-banking來(lái)進(jìn)行降解MBIT,也是有二次操作空間
compile_ultra可以根據(jù)需求進(jìn)行MBIT替換,但是需要遵循下列規(guī)則:

基于上述原理,用戶可以使用下面的簡(jiǎn)單流程在綜合里邊進(jìn)行MBIT的替換對(duì)MBIT操作的核心命令是:identify_register_banks,這個(gè)命令在第一步compile_ultra完成后,可以對(duì)DCT/DCG里的FF進(jìn)行MBIT替換,除過(guò)cell之間的相同clock和控制位,identify_register_banks命令會(huì)將物理位置相近的FF進(jìn)行MBIT替換,所以,從S家的R2G策略上將,為了保持良好的繼承性,用戶需要使用DCG流程+ ICC/ICC2 DEF flow(read_def + place_opt -skip_initial_placement)來(lái)完成MBIT的替換應(yīng)用。只有這樣才能把DCG替換FF的物理優(yōu)勢(shì)繼承下來(lái)當(dāng)然,用戶也可以在ICC/ICC2 進(jìn)行MBIT的替換,但是由于替換策略都是類似的,也是一定要有cell的初始布局后,才能進(jìn)行替換,基本流程如下:
這里的流程近似可以看作把place_opt進(jìn)行了拆分,在第一步coarse placement 后,加入了MBIT的替換,用戶需要手動(dòng)sorce 這個(gè) 腳本(和identify_register_banks類似的用法)進(jìn)行MBIT替換,而后再繼續(xù)執(zhí)行place_opt剩余的步驟。無(wú)論是在synthesis還是layout階段,MBIT替換的方式主要是基于兩點(diǎn):
  • timing
  • 物理位置
只有在timing 有余量,并且物理位置接近的register,才會(huì)觸發(fā)工具的MBIT替換動(dòng)作,這樣可以最大限度的降低對(duì)當(dāng)前數(shù)據(jù)庫(kù)的影響,同時(shí)也能利用起MBIT的面積和功耗優(yōu)勢(shì)

DC 中 MBIT 替換實(shí)例

以DCG為例,在第一步compile_ultra完成后,使用identify_register_banks進(jìn)行MBIT 替換
  • 替換前:
  • 替換后:可以看到,新創(chuàng)建的MBIT位于原始兩個(gè)single bit的中間
命令運(yùn)行日志:
這里會(huì)打?。?
  • single bit cell 刪除信息
  • MBIT pin 連接信息
可以看到 這里的CLK/RB 等控制信號(hào)都是需要 同源的,工具也有內(nèi)建的防錯(cuò)機(jī)制,如果目標(biāo)single bit的控制端有不同,會(huì)以PSYN-1203 的告警進(jìn)行打印,確保功能不被影響:
注:用戶可以通過(guò)set_multibit_option 來(lái)控制compile_ultra 命令的行為,這樣在綜合增量?jī)?yōu)化步驟里邊,工具可以根據(jù)set_multibit_option配置的情形,來(lái)做banking和de-banking的操作。

MBIT的命名和管腳映射

工具是通過(guò) identify_register_banks 產(chǎn)生MBIT的替換腳本,對(duì)于總線,通常是按照升序的策略進(jìn)行命名的,當(dāng)然,由于這個(gè)是后處理腳本,用戶也可以自己進(jìn)行修改,但是通常沒(méi)必要改變默認(rèn)行為,以免對(duì)后續(xù)formal產(chǎn)生影響。簡(jiǎn)單命令如下:
對(duì)于合成后的MBIT cell,對(duì)應(yīng)的Q輸出,也是沿用升序的方式:
A[0].Q -> MBIT_A[0]__A[1]__A[2]__A[3].Q1
A[1].Q -> MBIT_A[0]__A[1]__A[2]__A[3].Q2
A[2].Q -> MBIT_A[0]__A[1]__A[2]__A[3].Q3
A[3].Q -> MBIT_A[0]__A[1]__A[2]__A[3].Q4
MBIT通過(guò)這樣的命名方式,對(duì)于后續(xù)的formal mapping和gate-sim等工作是有一定幫助的

本章詞匯


【敲黑板劃重點(diǎn)】

Multi-Bit 在現(xiàn)代設(shè)計(jì)里邊基本已經(jīng)成為標(biāo)配,了解其中的應(yīng)用原理和規(guī)則,有助于用戶通過(guò)優(yōu)化multi-bit流程來(lái)提升設(shè)計(jì)PPA

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