面试问题(六)

作者: 飞奔的大虎 | 来源:发表于2022-02-11 16:47 被阅读0次

    1、Date setup做些什么?(PR需要输入什么数据)

    (记住这张图就够了)

    ·指定逻辑库(时序功耗库)

    ·创建design library,指明reference lib和tech file

    ·指定tlu+ files,check tlu plus

    ·导入设计网表

    ·导入sdc

    ·做检查:Check timing constaint、check libray、check tlu+

    ·施加变量控制:Apply timing and optimization control

    ·报的violation和timing,确保没有太大的violation

    ·保存cel

    2、Tech file是什么?

    全称technology file,跟工艺相关,包含各个金属层的参数(图形定义及显示信息、互连线工艺信息和通孔工艺信息)

    ·各个layer和via的number和name

    ·各个layer和via的物理、电气参数

    ·各个layer和via的design rule(最小线宽、最小间距)

    ·各种电学参数的单位、精度

    ·每一层显示的颜色和图形样式

    3、Tlu plus文件是什么?

    RC寄生模型文件,用来计算互连线RC的。

    ICC通过几何形状和TLU+ look-uptable来计算互连RC,TLU+ file会对深亚微米的一些效应进行建模,一般都有max和min两个corner的模型。

    Vendor可能只提供了itf(interconnect technology format),需要用户转成tlu+,还可以转成nxtgrd格式用于starRC抽取寄生参数。

    4、Mapping file是什么?

    主要用来map tech file(.tf)的layer/via name和itf的layer/via name

    5、Physical reference library是什么?

    ·包含std cell、macro等用于布局布线的物理信息

    如:出pin的方向和layer,形状,边界,对称性等

    ·定义placement的unit tile(site)

    如:row的高度、最小的宽度、pitch等

    6、命令check_library做什么?

    检查库的一致性,包括

    ·逻辑库和物理库之间:是否有missing cell、missing or mismatched pins

    ·物理库之间:是否有missing的cel or fram view,是否有重复的cell name

    7、命令 check_tlu_plus_files做些什么?

    主要检查itf、mapping file、tech file之间的一致性,例如:金属层和via层的名字、最小宽度和最小间距等等

    8、Uniquify是什么?有什么好处?

    当设计中多次例化同一个reference,uniquify可以使得每一个instance都有一个独立的reference的copy,这样有利于对各个instance独立的优化

    9、 Placement、CTS、Routing之后需要检查、查看什么?

    这个问题很重要,记住后端主要就是围绕以下指标来的,其实是一个万精油的答案,整理多了就会发现大多数问题都可以从以下几个点出发去回答

    ·Timing:setup、hold、TNS、WNS

    ·逻辑DRC

    ·Congestion、utilization、density

    ·Cell cnt and area

    ·功耗、IR drop、EM

    ·信号完整性SI

    ·物理DRC

    10、ICC有哪些常用分析PR结果的命令?

    ·report_timing

    ·report_constraint -all_vio

    ·report_congestion

    ·report_design -physical

    ·report_qor

    每个命令具体报的内容可以在ICC中man以下查看

    11、report_design –physical命令报出什么?

    ·Design statistics:Cell、IO、net等的数量

    ·Chip utilization:area、utilization

    ·用到的各种cell数量统计

    ·Routing的信息:物理DRC、Wire statistics、redundant via convert rate

    12、Milkyway中 FRAM(Abstract) View包含哪些信息?

    Abstract视图不包含底层器件细节,仅包含以下内容用于PR,可以减少工具处理的数据量:

    ·cell的轮廓(placement工具将每个cell放置在core中的site上。Placement工具只需要知道的是cell的大小和形状)

    ·引脚位置和层(引脚通常是金属连接的区域,routing工具使用这些引脚位置来布线)

    ·Metal blockages(cell中某些不能布线的金属层区域)

    13、 lef是什么?

    Library exchange format,包含tech和cell library

    ·tech部分:定义工艺的电气、物理参数,设计规则,via信息等

    ·cell部分:标准单元、macro、IO单元的用于布局布线的物理信息(参考reference library),以及OBS(阻塞/blockage)

    Lef文件的产生需要版图GDS2数据、工艺信息(tech file)、映射文件

    14、 Gdsmap file是做什么的?

    用于版图设计数据库与GDS2数据之间进行相互转换,将版图数据转换成GDS2的过程叫做stream out,将GDS2数据转换成版图设计数据的过程叫做stream in。版图绘制过程中,实际同一物理层可以有不同的名称和使用目的,转换成GDS2时利用map file可以将具有不同名称或目的的同一实际物理层指定到同一个GDS2 number。

    15、Floorplan的主要内容,做些什么?

    分成top design planning和floorplan

    ·top design planning:做partition、做top power mesh并且确定block pin location、做好timing budget

    ·布图规划:主要定义芯片的size、core area;确定IO、corner pad、filler的位置;摆放macro;设置placement 和routing的blockage;建立电源网络(包括ring、strap、rail等);(还有添加physical-onlycell、划分voltage area等)

    16、大概阐述下做floorplan的步骤?

    ·Create physical-only pad cell(PG cell,corner cell), specify pad cell location

    ·Create floorplan(设置好die size和core area)

    ·Insert pad filler

    ·Place macros

    ·Apply placement blockage

    ·添加physical only cells(tap cell, endcap cell, decap cell)

    ·Build power network

    ·对于多电压域设计还要create voltage area等等

    17、如何qualify floorplan?

    ·Create_fp_placement之后查看时序、congestion、cell desnity、IR drop是否可以接受

    ·各个模块cell的分布符合data flow(cpu中memory摆放直接影响performance)

    ·没有base layer的DRC问题,如memory、std、ip的poly方向等

    18、创建floorplan前的create_cell需要创建什么单元?

    Corner cell、PG IO(给core供电的和给IO供电的)、power cut、POC

    19、 Floorplan通过什么指标来设置芯片的大小和形状?

    ·AspecRatio(height/width),默认比值为1

    ·Utilization:利用率决定了cell的密集程度,提高利用率将减少core大小,默认利用率0.6

    20、Floorplan中4个side方向的定义?

    注意跟side 1对应的corner pad是CornerUL,其他的以此类推

    21、pad filler有什么作用?cell filler有什么用?

    ·Pad filler保证N well、Pwell还有P/G ring的连续性,将IO ring形成一个闭环的power bus ring

    ·Cell filler把nwell连成一片

    22、 命令create_fp_placement前需要做些什么设置?

    默认情况下,会用tech file中所有层来布线,所以在运行之前需:

    ·定义routing layer:set_ignored_layers-max_routing_layer M6,注意这条命令不仅阻止工具使用M6以上的layer来布线,在RC和congestion估计的时候可以忽略M6以上的layer

    ·先确定固定macro的位置:set_dont_touch_placement [get_cells xxx]

    ·定义placement blockage:macro边缘和拐角处的std cell布线会比较困难,所以需要在这些位置加blockage,命令:set_keepout_margin -type hard -outer {10 0 10 0} RAM5,如果用户没有设置,ICC会自动根据pin数量设置一个keepout margin

    注意默认的fp_placement是wirelength driven,要加 -timing_driven选项(模仿place_opt默认的timing driven),fp_placement会将std cell和non-fixed的macro做legally place,但不会做logic optimization

    23、命令create_fp_placement有什么用处?

    ·初步评估floorplan对timing和congestion的影响

    ·可以帮助规划power structure

    24、Hard、soft、partial blockage有什么区别?

    ·Hard blockage阻止任何std cell摆放在这里,hard通常设置在macro的四边

    ·Soft blockage阻止std cell在coarse placement的时候摆放在这里,但是在后续的placement legalization和optimization会被忽略,soft通常设置在macro间的narrow channel以及macro和core边界之间

    ·Partial blockage需要配合blocked_percentage(注意这个是指不能摆放cell的百分比)使用,在partial blockage的区域内可以摆放cell的area是由指定的百分比限制的;还可以搭配buffer_only选项,从而使得只能放buffer类型的cell

    25、Halo是什么?和blockage有什么不同?

    ·Halo即Keep out margin,跟随在macro周围,不允许std cell的摆放,会随着macro移动而跟着移动

    ·Blockage是需要指定特定区域的,不会随着macro的移动而移动

    26、Virtual IPO是什么?

    ·不开启VIPO的情况下,关键路径上的cell会就近摆放从而降低延时,但是这对于具有大扇出的cell会造成congestion,这样的做法完全没有必要,因为在actual placement optimization的过程中,IPO可以很容易修复这种问题

    ·开启VIPO后,就能模仿实际placementoptimization的方法,采用sizing和bufferinsertion的方法来优化,从而避免为了缩短关键路径延时而将cell摆的很近(这个sizing和buffering的过程讲义中是说perform in memory,我理解的意思是实际上fp_placement并没有改变origin netlist中cell的驱动或者插入buffer,而是在内存中模仿这一过程进行延时计算,这样就可以将cell摆开,从而解决congestion问题,使得这一阶段的延时计算与后续placement之后的延时计算不会相差很大)

    ·开启命令:set_fp_placement_strategy -virtual_IPO on

    27、报congestion的命令?congestion报告怎么看?

    ·命令:report_congestion -grc_based -by_layer-routing_stage global

    ·首先要知道GRC的概念,即globalrouting cell,在global routing阶段,以GRC为最小单位来安排走线。Congestion报告会计算每个GRC的# of available routing tracks(#1)和# of nets crossing GRC edge(#2),如果#2大于#1,就存在overflow,即走线资源不足。而congestion报告会给出每个方向以及每一层存在overflow问题的GRC数量(及百分比)、overflow总数和单个GRC max的overflow数量,根据这些数据可以判断congestion的情况。如果有GRC的overflow大于10,则可能走线走不通,如果有2%或者更多的GRC存在overflow,那么可能会出现SI和timing的问题

    28、Floorplan阶段fp_placement发现存在congestion问题,如何解决?

    .调整macro

    a、增加macro间距

    b、对齐macro的pin

    c、调整macro的方向

    .调整或增加blockage

    a、set_keepout_margin

    b、create_placement_blockage -name b1 -type hard -bbox {x1 y1 x2 y2}

    .如果是high density造成的congestion,需要限制density

    set_congestion_options -max_util 0.4 -coordinate {x1 y1 x2y2}

    .对于create_fp_placement来说,可以设置set_fp_placement_strategy一些选项:

    a、set_fp_placement_strategy -macros_on_edge on -auto_grouping high

    b、set_fp_placement_strategy -congestion_effort high

    c、create_fp_placement -timing -congestion

    .如果congestion问题还是很严重,就需要调整floorplan了

    a、调整pad的顺序和方向

    b、增加size,从而降低利用率

    c、调整power structure:采用更高层走线、改变strap的宽度和间距

    29、derive_pg_connection命令?

    将电源、地、tie的pin连接到特定的PG nets,支持手动和自动模式,手动模式下需要指定PG net,自动模式下工具根据power domain进行PG net的连接(需要UPF)

    选项:

    -all:连接power、ground和tie pins

    -reconnect:重新连接design中的所有PG pin

    -power_net:指定power net

    -power_pin:指定power pin

    -ground_net、-ground_pin类推

    30、PNS的步骤?(这里的PNS是手动buildpower structure)

    ·derive_pg_connection

    当然需要先create_net,只要是引进了新的cell就需要重新derive pg

    ·打power ring和power strap

    需要打顶层电源环(M7 M8)、较低一层电源环(M5 M6)和macro电源环(pll M3 M4),以及power strap(M7 M8 M5 M6)

    打power ring和strap都分成三步:

    1)create_power_plan_regions

    2)set_power_ring_strategy,指定ring的方向、宽度、间距、偏移等

    3)compile_power_plan

    ·给std cell打power rail

    preroute_standard_cells(有几种电源线就要打几次,并且每次要确定好区域)

    preroute之前需要设置好 via rule和插入stdcell filler

    ·连接macro和pad的P/G pin

    使用命令preroute_instance

    31、Power net placement blockage是什么?

    ·减少PG net的附近的congestion,对于高层电源走线没有必要设置pnet placement blockage,如果PG net走M2 M3,可以加complete或者partial的blockage,但是注意虽然可以降低PG net的congestion,但是会导致density不规则、进而使整体congestion恶化

    ·命令:set_pnet_options -complete {metal2 metal3}

    ·如果增加了pnet blockage,需要legalize_fp_placement将straps下的std cell移动到合适的位置

    32. 电源规划的目标、内容?

    目标:给整个芯片的供电设计出一个分布均匀、稳定的电源网络,减少IR drop,避免EM问题。

    内容:

    ·定义电源线和电源连接,把相应的端口在逻辑上连接到合适的电源和地网络上。

    ·打Power ring:指为了均匀供电,包围在core周围的环形供电金属,是连接PG IO和标准单元的桥梁

    ·Power ring的设计主要有3个参数:宽度、间距、对数,也是根据功耗计算得到。宽度根据整个芯片的峰值供电电流、设计规则中所允许的电流密度和ring的对数决定;间距则根据设计规则中的最小间距决定。

    ·打Power mesh:电源网格是为了平均分布电流,缩短回路电流,有效减少IR drop,避免hot spot和EM问题

    ·打Power rail

    ·PG IO和macro的PG 连接

    33. IR drop的分类?

    ·静态IR drop产生的原因是电源网格的金属连线分压,是由金属连线本身的电阻造成的。静态IR drop跟电源网络的结构有关,主要考虑电阻效应。

    ·动态IR drop是电源在电路开关切换的时候电流波动引起的电压压降,产生在时钟的触发沿。

    34. IR Drop的影响和改善方法

    影响

    ·性能下降

    ·时序出错

    ·时钟skew增大

    ·噪声容限下降

    改善方法

    ·提高power mesh密度

    ·增大power mesh宽度

    ·插足够多的decap cell

    ·采用高层走线(高层走线具有较小的寄生电阻)

    ·将同时翻转的寄存器摊开些摆放(如NV2019题中不要对并行的长net等间距插入buffer,可以错开摆放)

    ·对于design中可能同时翻转的memory,引入一定的clock skew,使翻转时间错开

    35. 数模混合供电注意事项?

    ·将模拟模块统一放置在某个角落

    ·模拟模块单独供电,给模拟模块供电的PG IO应放在模块边上,缩短供电线路长度

    ·模拟PG IO两端加power cut隔离,在模拟模块周围布置隔离环(guarding ring)

    36. 为什么PG net要走最顶层?

    ·顶层金属厚度大,电阻小,有利于减少IR drop,还能缓解EM问题

    ·低层金属信号线routing较多,如果PG布在低层会占用绕线资源

    37. 为什么PG net采用横竖交替的走线方式?

    ·有效利用布线资源,更利于布线,可以使得布线更容易走通,减少congestion

    ·减少不同层的线间干扰

    38. DC-T flow中ICC写def和DC读def的命令?

    ·write_def -output name.def

    ·extract_physical_constraints name.def

    39. ICC中添加physical-only cell的命令?

    ·create_cell:可以添加PG IO和corner

    ·add_end_cap:添加endcap

    ·add_tap_cell_array:添加tap cell和decap cell

    40. 有哪些physical-only cell,各自的用处?

    Physical-only cell是指物理设计中没有逻辑关系的cell

    ·Corner pad cell:拐角单元,形成电源、地的环状网络

    ·Pad Filler:填充I/O单元和I/O单元之间的间隙,作用主要是把扩散层连接起来满足DRC规则和设计需要,形成电源、地的环状网络

    ·P/G IO和给IO供电的IO

    ·TAP cell:增加衬底和NWELL接触,降低电阻,避免latch-up效应

    ·Decap cell:去耦电容。在瞬态电流增大,电压下降时电路补充电流以保持电源和地线之间的电压稳定,防止电源线的电压降和地线电压的升高,缓解IR Drop问题

    ·Endcap cell:也叫boundary cell,确保每个nwell都是nwell enclosed,类似一个封闭环,保证std cell周围环境的一致性。一般的std cell周围都是填满的,环境一致,cell时序可以用库里面的数据来表征。但如果边界的cell周围不加boundary cell那么环境就不一致了,实际制造出来的就和正常的std cell不一致了。通过加boundary cell来模拟一个std cell的环境。主要加在row的结尾(两边都要加),以及memory 或者其他block的周围包边。

    ·Filler cell:填充单元,保证n-well的连续性

    ·Tie-high/low cell:电压钳位单元,某些信号端口或闲置信号端口需要钳位在固定的逻辑电平,tie-high/low cell完成这样的作用。还起到隔离普通信号和VDD/VSS的作用,在做LVS或形式验证的时候不致引起混乱。

    ·二极管单元:用来修复天线效应,可以将加工过程中金属层积累的电荷释放到地端以避免高压导致栅氧击穿。

    ·TCD cell:用于process校准的,foundary一般建议在1500μm到2000μm的半径内要有一颗这种cell

    41. TSMC标准单元库中有哪些特殊单元?

    ·Physical-only cell

    ·低功耗技术相关的cell:lvl、enable lvl、iso、switch、retention

    ·时钟树上的cell

    ·ECO cell

    42. Dize size跟什么有关?

    ·现在的SOC设计,大都是hierarchical的设计实现方式。因此芯片中的子模块面积,IP面积,memory面积,IO Ring面积和各种channel的面积直接决定了芯片的大小。

    ·简单的说就是core中的逻辑和IO的数量都会影响芯片大小。

    43. IO ring的设计?

    IO ring要形成一个闭环。IO ring也会影响设计的面积,因为需要添加很多physical-only cell

    大致流程如下:

    ·根据系统(其他芯片的)要求以及内部结构,决定信号IO的位置

    ·PG cell的添加,需要计算数量

    ·前端网表不带PG cell,floorplan前需要手动添加

    ·包括给core供电的PG cell和给IO 供电的PG cell,给core供电的PG cell数量需要根据core的total power计算出来;而给IO供电的PG cell数量需要根据各个IO domain的IO数量计算SSO,最终确定数量

    ·Power cut的添加:加在两个IO domain之间(数字和模拟之间、不同的core电压之间、不同的IO电压之间)

    ·其他一些physical-only cell的添加:Corner cell、IO filler、power on control(POC,控制IO上电)等

    44. 如果一颗芯片中有很多的IO Domain,需要注意哪些问题?阐述下每个IO Domain中应该包括哪些cell?

    ·各个IO Domain内的IO顺序

    ·各IO Domain的SSO计算

    ·各个IO Domain之间的cut cell

    ·整芯片的IO Bus检查

    ·各个IO Domain主要包括给core供电的vdd/vss,给IO供电的VDD/VSS以及一些physical cell。

    45. IO摆放位置要考虑什么?

    综合考虑硬件PCB的布局和走线、封装形式、供电情况以及内部模块的结构,从而保证信号从芯片内部传递到外部时其路径最短,同事要求从IO单元关键引线到封装点避免信号交叉,降低封装的成本。

    46. Macro(含memory、IP)摆放遵循什么原则?

    ·根据data flow和design hierarchy来摆放(可以参考飞线,可以用create_plan_group的查看)

    ·出pin的方向:考虑绕线资源和timing,memory出pin方向尽量靠近core logic区域

    ·符合poly orientation(90nm下要求memory、ip、io、std的poly方向要一致)

    ·Memory之间是否需要留space:如果channel间想摆放cell,要确保memory之间有对应的power srap,否则会导致rail floating。留大了浪费面积,留小了导致绕线资源不足,rail floating等问题

    ·原则上memory要摆放在boundary(思考为什么?)

    ·Macro摆放需要和core logic保持一定space

    ·Macro alignment(对齐)

    ·避免十字形的macro摆放

    ·IO需要和core logic保持一定距离,防止latch-up

    ·考虑PG pin和PG net的走向,考虑IR DROP

    ·符合时钟走向:比如PLL要靠近des,缩短clock长度

    47. Macro周围为什么要加placement blockage和routing blockage?

    ·加placement blockage是防止std摆放太靠近macro,一方面对macro造成干扰,另一方面造成congestion问题

    ·加routing blockage是防止core logic在macro限定的范围内走线,避免噪声

    48. 想加memory之间的channel摆放buffer,应该添加什么blockage?

    ·Soft blockage

    ·Partial blockage中的buffer only类型

    49. 两个macro之前的channel为什么尽量不要摆放寄存器?

    ·Channel中存在太多寄存器,会造成congestion问题

    ·Clock tree的质量会不好,比如channel的寄存器latency会比较长,从而将整条tree拖长。

    50. 在hierarchical流程中,如何确定block的pin(位置,金属层)?

    ·Pin位置:主要看与该block相关的其他block的interface,使得相关的pin要比较近,好走线

    ·金属层:block尽量用一致的金属层,同时不要使用顶层用来走power的金属层

    51. 如何规划powerplan?衡量powerplan好坏的标准有哪些?

    规划:powerplan的规划要考虑供电均匀稳定、IR drop、EM等因素

    ·power ring:哪些层打power ring,ring的对数、宽度、间距等等;顶层power ring打在最高2层,IP power ring跟出pin层有关

    ·power mesh:哪些层打power mesh,mesh的宽度、间距、偏移等;较低层power mesh分电压域打

    ·给std cell打rail:有几种电源就要打几次rail

    ·给供电IO打电源线

    衡量标准:

    ·IR Drop

    ·EM

    52. Power domain和voltage area有啥区别?

    Power domain是逻辑层面的概念,而voltage area是物理层面的概念,voltage area属于power domain,是power domain的一个属性。

    53. 什么是follow pins?

    标准单元的power rail,给标准单元供电。

    54. 在哪些层完成power routing?

    在最高几层金属。原因如下:

    ·高层金属电阻小,可以降低IR drop

    ·不占用低层金属的绕线资源,防止congestion问题

    55. 为什么需要在placement之前完成power routing?

    在物理设计中要依次完成power pre-route、clock routing、signal routing

    在placement之前完成power routing是为了更好地在placement的时候利用实际可用的走线资源进行congestion分析,否则即使完成了std的placement,没有绕线资源也没有意义。

    56. 阐述何为Core limitted,何为IO Limitted?针对Core limitted的design,应该从哪些方面着手减少芯片面积?针对IO Limitted的design,应该如何减少面积?

    ·对于一个IO/PAD Limitted的芯片,它的面积受限于IO/PAD的数量。因为芯片中IO的数量太多,导致芯片的长宽拉的比较大。对于这种情况,

    ·可以考虑对IO进行精简,比如去掉一些不太重要的IO或对IO进行复用

    ·调整宽长比(同样周长下,正方形面积最大)

    ·采用flip chip封装

    ·如果有多套IO cell可以选择,尽量选瘦的

    ·对于一个CORE Limitted的芯片,它的面积受限于芯片中各个子模块的面积大小。对于这种情况,各个子模块的数字后端实现就必须加大火力进行抠面积,将利用率最到最高,从而将芯片做小。

    57. IO需要具备哪些功能?

    ESD保护、较大的输出驱动、抗噪声干扰、电平转换

    58. Floorplan的重要性?

    ·Floorplan的合理性直接关系到芯片的时序收敛、布线畅通、电源稳定以及良品率等。

    ·一个好的floorplan和一个差的floorplan在时序上差别甚大,floorplan的目的是在保证布线畅通的同事尽量缩短走线的长度(缩小互连线的延时),需要设计者对逻辑设计及其功能有一定了解,如各个模块间的连接关系、数据通路结构等

    59. IO单元的类型有哪些?

    ·输入单元、输出单元、双向单元、给IO供电的单元、给core供电的单元、corner pad、IO filler、power cut、POC等。

    ·或分成信号IO、电源IO、其他IO

    ·信号IO的关键是选择驱动的大小,电源IO需要重点考虑的是供电电源的数量计算和摆放。

    60. PG IO的种类、数量确定及位置摆放?

    种类及数量确定:

    ·给模拟器件供电的PG IO

    ·如给PLL供电,采用指定类型的PG IO,靠近PLL摆放,两端采用power cut进行隔离

    ·给core供电的PG IO

    ·数量要根据芯片的平均功耗、PG IO的供电电压以及供电电流来估算:

    ·给IO供电的PG IO

    ·数量由多种因素决定,IO单元的功耗、输出IO单元的驱动能力、同步开关噪声(SSO)。从信号IO的功耗算起,同时计算SSO,取2个结果里面较大的。

    位置摆放:

    PG IO的位置摆放主要考虑IR drop的大小,一般在电源网络设计完成后,要做功耗分析和IR drop分析,从而选择一个最佳的PG IO布局。

    PG IO单元还能用来降低噪声,如将信号翻转率高的信号端口及频率较高的端口放在PG IO周围

    61. SSO是什么?

    同步翻转噪声。多个信号IO同时翻转时,会在IO ring上产生更大的电流,进而在给IO供电的PG IO的bonding wire及片外引线的电感上,产生Ldi/dt的压降。

    最主要的解决办法是增加给IO供电的PG IO数量,还可以采用double bonding等方式避免。因此SSO也用于计算给IO供电的PG IO数量。

    62. 倒置封装(flip-chip)的用处?

    当芯片面积较大时(如大于1cmx1cm),芯片时序较为紧张时,则采用倒置封装,即IO单元的分布不是四边摆放,而是均匀分布在芯片内部。

    63. 如果模块初始利用率太高,需要做什么?

    尝试多种macro placement,没有改善就增加模块面积。

    64. 什么是floorplan中的row?

    物理设计中的std cell是被放置在row上的,所有row具有相同的高度,宽度可以不同。Row中的std可以从power rail中连接到VDD和VSS。工艺库一般都是vdd-vss-vdd这种背靠背的方式让相邻的上下两条row共享VDD或VSS,减少面积。

    65. 命令check_mv_design做什么检查?

    检查在一个多电压域设计中的violations,具体包括:

    ·target library subset check

    ·power domain check

    ·cell operating condition check

    ·power domain和operating condition一致性检查

    ·lvl、iso、retention检查

    66. 请阐述placement这个步骤的内容,做什么?

    完成标准单元的位置摆放和legalize,high-fanout net的综合(除了时钟树),时序、功耗、congestion、area等优化,scan-reorder

    67. Place_opt这步包含哪些子步骤?

    简单来说,place_opt包含:

    ·Coarse placement:会合并ICG,做initial placement,这个阶段仅考虑数据路径时序要求

    ·AHFS:主要解high fanout net的DRC

    ·Logic Optimization:主要做timing,drc,congestion,面积和power的优化

    ·Placement Legalization:布局合法化

    68. Placement阶段flow

    大体分成三步:setup steps to control placement、DFT and power; placement and optimization; incremental refinement to improve congestion and setup timing

    (1)Placement setup and checks

    1.检查route layer是否正确,否则会影响congestion map的准确性

    2.检查pnet options

    3.检查placement keepout变量

    4.打开lib和cell,吃tlu+,check(是计算延时的基础)

    5.Fix住所有macro: set_dont_touch_placement [all_macro_cells]

    6.对特殊的cell设置dont touch属性,防止被工具优化掉

    7.检查layer和placement constraints

    8.设置NDR rule

    9.移除clock net之外的high-fanout net的ideal属性

    10.设置don use cell

    (2)DFT setup

    做scan reorder,即读入scandef,然后place_opt -optimize_dft

    (3)Power setup

    Power optimization不会影响关键路径延时或者congestion,可能需要引入多VT cell来优化功耗,因此要将target library设置完整

    (4)Placement and Optimization

    place_opt:做timing- and congestion-driven placement and logic optimization

    (5)Congestion和timing的分析与优化(psynopt)

    69. ICC中如何开启low power placement?

    set_optimize_pre_cts_power_options –low_power_placement true

    70. Cell density和pin density分别是什么?

    ·Cell density map会将芯片划分成一个个小方块,显示每个方块内cell area和方块area的比值

    ·Pin density map是显示每个方块内pin的数量

    71. Placement前需要完成的东西?placement前要达到什么状态?

    ·Floorplan已经完成,具体包括

    ·Core和外围area已经定义好

    ·Macro已经place并且fix住

    ·Placement blockage已经打好

    ·Power grid已经打好

    ·Std cell placement已经移除

    ·Floorplan后预估的timing、congestion、cell density、IR drop等可以接受

    72. placement前设置NDR的目的?

    对于global route driven的placement,提前将clock net的NDR考虑进去,可以得到更贴近后续布线的结果(因为NDR会影响congestion)

    73. Placement阶段的power optimization方法有哪些?

    ·Leakage power optimization:多VT库是降低漏电的关键,对有正slack的路径替换高阈值单元

    ·查看设计中各种VT cell数量:

    set_attribute -type string lib1 default_threshold_voltage_group SVT

    set_attribute -type string lib2 default_threshold_voltage_group LVT

    report_threshold_voltage_group

    ·Dynamic power opt:主要通过找到high toggle rate的net,然后减少连线电容、downsize gate,Placement阶段两种动态功耗优化的技术如下:

    ·Low power placement(LPP):Move cells closer to shorten non-clock high-activity nets

    set_optimize_pre_cts_power_options -low_power_placement true

    ·Gate-level power optimization(GLPO):通过门级优化降低功耗

    .插buffer:减少transition

    .Downsize:对高翻转率net的扇出cell downsize,减少电容,减少transition

    .Pin swapping:将高翻转率net连接到低电容pin

    74. Place_opt几个选项的作用?

    ·area_recovery:对于非关键路径,移除buffer、downsize gate,减少面积

    ·optimize_dft:scan chain re-order

    ·power:启动leakage和dynamic power opt

    ·congestion:启动额外的congestion-driven 算法

    一般一开始先不用congestion选项,当发现存在congestion问题的时候,再加这个选项

    默认情况,place_opt只修复setup,hold问题在cts修复

    75. check_legality会做哪些检查?或者说legality是指什么?

    会报出num of

    ·cells not on row

    ·cell overlaps

    ·cells overlapping blockages

    ·orientation violations

    ·site violations

    ·power strap violations

    ·spacing rule violations

    76. Critical range有什么用?怎么设置全局critical range?

    ·默认情况下,同一个group中,如果最差的路径无法优化,则剩下所有路径都不会优化,但是设置了相对于最关键路径的critical range之后,即使最关键路径无法优化,剩下的次关键路径还能继续优化,因此可以减少TNS

    ·优化了次关键路径可能帮助优化最关键路径

    命令:

    ·set_critial_range 0.5 [current_design]

    ·critical range不应超过周期10%,否则增加run time

    77. 完整的path group example

    ·group_path -name CLK1 -critical_range 0.3 -weight 5

    ·group_path -name CLK2 -critical_range 0.1 -weight 5

    ·group_path -name INPUTS -from [all_inputs]

    ·group_path -name OUTPUTS -to [all_outputs]

    ·group_path -name COMBO -from [all_inputs] -to [all_outputs]

    ·report_path_group

    78. psynopt命令做什么?

    做preroute和postroute的增量逻辑优化,输出是一个legally placed的netlist,也就说psynopt会做优化、place、legalize,但不会route,因此如果是在postroute使用psynopt,需要紧接地执行route_zrt_eco完成ECO绕线。

    ·在修改完placement和path group等参数之后,执行psynopt:

    ·执行增量 timing-driven逻辑优化

    ·Legalize placement

    ·如果设计congested,则include -congestion

    ·-area_recovery:帮助改善congestion和power

    ·-power:优化power

    ·有时候设置-no_design_rule -only_design_rule -size_only可以获得更好的timing

    ·执行psynopt前不需要discard之前的结果

    79. 何为congestion?如果design中有比较严重的congestion,应该如何处理?

    congestion: 当required tracks大于available tracks时就会出现congestion.

    下面,我把各个阶段congestion的导致因素和解决办法进行

    ·前端(才是解决congestion的王道)

    ·大扇入、大扇出:大扇入MUX改成MUX级联的形式,大扇出cell可以复制

    ·模块间大量的连线:将大模块划分为小模块实现

    ·Floorplan阶段的问题

    ·调整macro :增加macro间距;对齐macro的pin;调整macro的方向

    ·增加或修改placement blockage:在macro的拐角、周围设置placement blockage、keepout margin;在power strap下面设置pnet blockage

    ·调整IO的顺序和方向

    ·调整powerplan:采用更高层走线,改变strap的宽度和数量

    ·调整die size,增大面积,降低利用率

    ·Placement阶段的问题

    ·Density过高:限制利用率

    ·Pin density高的cell摆放过密:对pin density高的cell设置keepout margin,或者直接让前端禁用这些cell

    ·使能global router并且加-congestion选项

    80. 在placement阶段,针对时钟clock和reset等信号,是否需要额外特殊处理?为什么?

    由于Place阶段并不会长tree,所以针对clock,直接设置ideal network。

    对于reset信号,可以不用管,直接让place engine来自动做AHFS。

    81. placement后,如果发现timing violation比较大,应该如何debug?应该从哪些方面着手分析?

    ·检查约束(SDC)的正确性和合理性,具体包括:uncertainty设置是否合理,OCV derate是否设置正确,是否异步check,是否input path和output path的delay设置不合理

    ·检查是否floorplan不合理导致congestion严重,如IO位置、Macro位置方向、PG net的数量和位置

    ·检查是否布局之后density过高导致congestion比较严重

    82. Placement阶段优化timing的方法大致有哪些?

    ·重新Group path,设置更大的weight

    ·Create bounds,可以将关键路径的cell集中place在bound内

    ·解决floorplan以及placement导致的congeston问题(具体修复congestion的方法上面已经给出)

    83. 如何qualify一个placement结果?(不止是placement,这个问题应该扩展成如何qualify每一步的结果?)

    ·所有的std cell是否都完成placement,且都摆在legal的位置(限布局阶段)

    ·Timing是否接近或满足target

    ·DRC是否clean

    ·congestion分析:可以从Congestion map、cell density map、pin density map入手

    ·供电分析:包括 功耗、IR Drop、EM

    ·噪声分析(SI分析等)

    84. 布局后需要达到什么样的目标?

    ·所有的标准单元都被摆在了legal的位置上

    ·除时钟外的其他高扇出网络都插了buffer,满足DRC的约束

    ·Timing、DRC、congestion、ID Drop、噪声等良好

    85. 命令magnet_placement做什么用?

    手册中的解释是Perform magnet placement,pulls std cells closer to macros and assigns legal locations,主要就是使得所关心的cell之间的net最短,就近摆放

    86. 如果设计中既有IR-drop的问题,又有congestion的问题,该如何解决?

    ·降低这一块区域的density

    87. Scan chain reorder是什么?

    ·Scan chain reorder是在将连接在扫描链上的在芯片内部随机分布的扫描寄存器单元按照其物理位置,在不影响逻辑功能的前提下,重新进行连接,从而减少扫描链的走线长度。

    ·好处:节约布线资源,减少congestion

    88. ICG merge是啥?好处?

    将具有相同使能控制信号的ICG合并。

    ·好处:能减小clock tree的功耗和面积

    ·缺点:形式验证需要做额外的设置。

    89. 什么是coarse placement和legalization?

    ·Coarse placement也叫initial placement,做粗略的布局,这个阶段只考虑时序路径的优化,不会管std cell位置的合法性,如没摆在row上、存在overlap

    ·Legalization将std cell摆在row上,消除overlap

    90. Place_opt阶段工具具体存在哪些优化技术?

    ·Timing optimization

    ·关键路径增加优化权重

    ·Timing driven option,high effort

    ·允许使用LVT/ULVT cell

    ·Pin swapping,最差路径的输入pin靠近输出pin

    ·Insert buffer

    ·Cell sizing

    ·Cloning

    ·逻辑重组

    ·Congestion optimization

    ·Placement blockage

    ·设置density

    ·Congestion driven option

    ·Power optimization

    ·多阈值cell

    ·Pin swapping

    ·优化transition time和load capacitance(如更换小驱动cell)

    相关文章

      网友评论

        本文标题:面试问题(六)

        本文链接:https://www.haomeiwen.com/subject/ivefkrtx.html