后端基本概念

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

为了方便大家尽快找到需要的话题,经icfb版主建议,编辑这个数字后端的FAQ。

如果您是初学者,建议先搜索相关的资料,读读其他人的帖子,一些基本概念在那里都已经讨论过了。

如果您已经有2年以上的实战经验,下面这些雕虫小技就不太值得您去浪费时间了。

先说说作为一个有经验的后端(暫不包括DFT工程师和layout工程师)工程师,需要掌握哪些知识

4个级别:

1)知道一些基本概念,

2)简单地掌握这门技术,

3)熟练

4)精通

半导体工艺--2

RTL coding -- 2

综合-- 2

时序约束-- 3

APR -- 3

DFT -- 2

DRC/LVS -- 3

仿真-- 2

形式验证-- 2

以下是FAQ分类:

2楼:时序约束,STA

3楼:综合DC/RC

4楼:APR (floorplan,place,CTS,route)

5楼:验证(LEC,DRC,LVS等)

6楼:DFT

7楼:低功耗

8楼:面试

9楼:名词解释

时序约束,STA

(1) clock

Q1.1 什么是同步时钟?

时钟频率是整倍数,并且相互之间的相位是固定而且相差可预知的,才可以称得上是同步时钟。其他的都算异步时钟。

比如,

5M,10M是同步

2M,3M一般算异步

一个时钟,输出到另一个芯片中,转一圈后,以同样的频率返回到自己的芯片,因为无法确定时钟在另一个芯片里面的latency,所以输出的时钟与输入的时钟算异步一个时钟进到2个PLL,就算那2个PLL的输出频率相同,一般也算是异步时钟,除非你de-skew

Q1.2 如何处理同步时钟?

设计要求严格的公司,就算是同步时钟,数据在同步时钟间传送时,依然要用meta-stability FF,可以set_false_path

如果放松要求,不用meta-stability FF,则同步时钟之间是real path,做CTS时,同步时钟要clock tree balance。

注意不同频率的同步时钟的最小时间间隔被用来检查setup

如果上升下降沿混用的话,setup的时间间隔就只有半个时钟周期了

Q1.3 如何处理异步时钟?

很简单,set_false_path

注意要from A to B,同时要from B to A

Q1.4 如何定义时钟?

create_clock 如果指定某个pin/port,就是实时钟,如果没有指定pin和port,就是虚拟时钟

巧妙利用waveform选项可以做出不同波形的时钟

被定义成时钟的net,在综合时,自动带有ideal network和dont_touch的属性。但是当它被用作data计算延迟时,ideal net的属性会自动消失

时钟会自动穿过逻辑单元,停在时序单元的时钟端,所以用FF产生的分频时钟要再用create_generated_clock定义一次

Q1.5 如何处理多选一时钟?

在实际应用当中,如果这几个时钟不会同时出现的话,则在定义时钟时,只选择最快频率的就可以了

如果是多个时钟同时出现,可以用set_case_analysis选一个,

也可以放它们全都过去,但是在MUX后面把它们之间set_false_path

Q1.6 巧妙定义时钟

直接在分频FF的Q端定义generated clock时,有时会把分频FF的时序打掉,解决办法是在分频FF的Q端加一个时钟buf,从那个buf的输出端定义generated clock,从而保证分频FF自身的时序完整

如果从source clock到generated clock之间有多条路径,你希望PT用指定的一条路径来计算时序的话,可以用set_case_analysis,set_disbale_timing 或者一级一级地定义generated clock来引导PT达到你的要求

分频器时序约束问题

时序分析中同一时钟的不同路径问题

请教如下要求的clock在pt中应该怎么create

怎样设set_case或者别的,才能让pt选择同一条clock path

Q1.7 什么时候需要设置latency?

latency分为source latency 和network latency 两种。source latency是源时钟自带的,network latency就是CTS后的clock tree insertion delay。

在综合时,一般不需要latency,

除非,

已知不同clock带有不同的source latency,并且它们之间有时序要求

预知不同clock会有不同的clock tree insertion delay,不想平衡它们,但是要满足他们之间的时序要求

做完CTS后,要把network latency去掉

请问set_clock_latency 设太大会有什么不好

Q1.8 如何设置uncertainty

clock uncertainty分为setup和hold,preCTS和postCTS几种不同的情况

一般的处理原则是:

preCTS,setup:uncertainty = PLL jitter + 预估的clock skew

preCTS,hold:uncertainty = 预估的clock skew

postCTS,set_propagate_clock [all_clocks]

postCTS,setup:uncertainty = PLL jitter

postCTS,hold:uncertainty = 0

有时fundry要求hold uncertainty保留一定的量,这时就把那个保留量加到上面的公式中

sdc文件中对clk的uncertainty、transition、latency的设置

(2)IO端口的约束

Q2.1 如何加IO端口的约束?

最普通的方法是

对输入端,set_input_delay, set_driving_cell (也有用set_input_transition的,但是不多见)

相关文档
最新文档