数字后端简要流程

合集下载

数字后端流程一【Design_Compile】实例笔记

数字后端流程一【Design_Compile】实例笔记

DC 综合DC 又称为设计综合将设计的RTL代码综合成门级网表的过程。

在DC 流程中一般要经过以下几个步骤,以项目A为例做如下分析:1】在项目子目录下创建DC文件夹,在DC文件夹下分别创建db in lib_syn log netlist rpt和script 文件夹以及一个makefile 文件用来运行DC 脚本。

2】第二步就是复制相应工艺技术库文件到lib_syn ,一般有2种文件各3个分别包括了typical worst 和best情况,一类是db,文件一类是lib 文件也可以在lc_shell 下读取lib 得到相应的db文件。

3】第三步将需要综合的设计RTL代码(V erilog 文件)复制到in 文件夹4】第四步在script 创建综合脚本,脚本创建过程将在后面介绍5】第五步编写运行脚本的makefile 文件6】第六步运行脚本而后查看综合报告,是否有违例现象出现,如果有修改脚本加以修复直到最终通过设计。

注意另外的几个文件夹作用db文件夹存放DC综合生成的项目db文件,综合网表输出到netlist 文件夹,综合程序运行报告存放在log文件夹中,而综合结果的数据报告则存放在rpt 文件夹中。

DC脚本的编写(A.scr)DC综合脚本基本上有几大部分组成1】定义综合环境中命名规则(分别对net cell port 命名)define_name_rules verilog –casesensitivedefine_name_rules verilog –type net –allowed “a-z A-Z 0-9 _ ” \-first_restricted “ _ 0-9 N ”\-replacement_char “_” \-prefix “n”define_name_rules verilog –type cell –allowed “a-z A-Z 0-9 _ ” \-first_restricted “ _ 0-9 ”\-replacement_char “_” \-prefix “u”define_name_rules verilog –type port –allowed “a-z A-Z 0-9 _ ” \-first_restricted “ _ 0-9 ”\-replacement_char “_” \-prefix “p”2】综合环境的建立指明库所在的位置Search_path = { lib_syn/db }指定综合所需目标库一般选用最恶劣情况worst 库作目标库target_library = { slow.db}创建链接库,链接库中包括了一些已经做好的设计和子模块,又包括了当前设计的目标库是设计实例化时所用的库文件link_library = { “ * ” , slow.db } + synthetic_library在上述的环境建立所需的各类库中,一般有生产商提供目标库,库中的各类cell用于逻辑映射,链接库则包括了目标库,还包括其他一些以前设计实例基本单元,我们门级网表实例化元件和单元都来自于它。

前端和后端的开发流程

前端和后端的开发流程

前端和后端的开发流程1.产品经理收集需求并进行分析。

The product manager collects and analyzes requirements.2.设计师进行界面设计和交互设计。

Designers do interface design and interaction design.3.前端工程师根据设计稿编写前端页面。

Front-end engineers write front-end pages according to the design drafts.4.前端工程师进行页面布局和样式设计。

Front-end engineers do page layout and style design.5.前端工程师进行页面逻辑与交互设计。

Front-end engineers do page logic and interaction design.6.前端工程师进行页面性能优化。

Front-end engineers optimize page performance.7.后端工程师进行服务端接口定义与设计。

Back-end engineers define and design server-side interfaces.8.后端工程师进行数据库设计与开发。

Back-end engineers do database design and development.9.后端工程师进行业务逻辑设计与开发。

Back-end engineers do business logic design and development.10.后端工程师进行服务端接口开发与调试。

Back-end engineers do server-side interface development and debugging.11.测试人员进行前后端联调测试。

Testers do front-end and back-end integration testing.12.测试人员进行性能测试与安全测试。

数字逻辑电路asic设计

数字逻辑电路asic设计

数字逻辑电路asic设计数字逻辑电路ASIC设计是一个复杂的过程,涉及多个阶段。

以下是设计的基本步骤:1. 功能指标:明确设计的目的和功能需求,这通常涉及到详细的功能描述和接口定义。

2. 系统级设计:使用高级语言(如Matlab、C等)对各个模块进行描述,并进行方案的可行性验证。

3. 前端流程:RTL寄存器传输级设计:使用硬件描述语言(如Verilog)对电路进行描述,重点是寄存器之间的传输。

功能验证(动态验证):对设计的功能进行仿真验证,需要激励驱动,是动态仿真。

常用的仿真验证工具包括Mentor公司的Modelsim、Synopsys的VCS和Cadence的NC-Verilog。

逻辑综合(Design Compile):指定特定的综合库,添加约束文件。

逻辑综合得到门级网表(Netlist)。

4. 后端流程:物理设计(Layout):基于逻辑综合后的网表进行物理设计,包括布局、布线和时钟树综合等。

DRC/LVS 检查:进行设计规则检查和布局与电路图一致性检查,确保设计的正确性和工艺的可行性。

5. 形式验证(静态验证):对综合后的网表进行功能上的验证。

6. 版图生成:根据设计要求和工艺参数,生成用于制造的版图。

7. 投片制造:将生成的版图送至半导体制造工厂进行制造。

8. 测试与验证:制造完成后,对芯片进行测试和验证,确保其功能和性能满足设计要求。

9. 封装与上市:如果芯片通过所有测试和验证,则进行封装,并推向市场。

在进行ASIC设计时,需要权衡多个因素,如速度、面积、功耗和上市时间等。

另外,ASIC设计是一项复杂且技术性很强的工作,通常需要由经验丰富的工程师团队来完成。

数字后端面试必备

数字后端面试必备
答案: 在 CTS 的 spec 文件中定义 clka 是 root,clkb 为 through pin,再加上那些应该有的 skew, transition,insertion delay 等就好了,其它的事 CTS 会给你做
10、assume in pre-CTS SDC, clock uncertainty for setup contains pll jitter + clock tree skew. How do you set clock uncertainty for hold, and how to modify it to post-CTS sdc?
答案: 1)阻塞在 RAM(macro)之间:可能 RAM 之间的距离没有计算正确,可以加大 RAM 之
间的间距;扭转 RAM 的方向,使得 RAM 的 IO pin 朝向更容易走线的那边;如果是多个 RAM 共用地址或者数据线,尽量把 RAM 的地址数据 pin 对齐
2)阻塞出现在 RAM 和帮助单元交界的地方:在 RAM 周围加一条 halo(keepout);把 RAM 放在四周,尽量把中间留下的空间变成方形;在有阻塞的地方加一些由小的 placement blockage 组成的矩阵
model)
答案: NLDM CCS ECSM 还有一个现在基本不用了的—LDM
7、How delays are characterized using WLM (Wire Load Model)? 使用一般的 WLM (不是 zero WLM,也不是按照物理位置算的 DCT),DC 是如何计算 delay 的? 难度:2
答案: 1) pre-CTS,
setup 的 clock uncertainty = PLL jitter + clock tree skew hold 的 clock uncertainty = clock tree skew 2) post-CTS, setup 的 clock uncertainty = PLL jitter hold 的 clock uncertainty = 0

数字后端设计

数字后端设计

dbSetGlobalPowerNet "VDD“ dbSetGlobalGroundNet "VSS“ (定义电源环和地环端口,包括VDD,VSS,AVDD,AVSS,DVDD,DVSS)
数字后端有哪些步骤?
1 Setup
auVerilogToCellsetFormField “Verilog To Cell” “Library Name“ $libname
atTimingSetup
(设置时序的要求 由于没有做时钟树插入,仍用理想时钟 ideal clock 优化的方案 寄生参数 单元延迟和线网延迟模型 串扰模型)
数字后端有哪些步骤?
3 Timing 3 执行结束后版图的效果?
只设置了 参数,对 cell的布局 没有影响
ቤተ መጻሕፍቲ ባይዱ 数字后端有哪些步骤?
4 Place 1 这一步主要做什么?
(定义cell中的三组全局电源/地)
axgLoadTDF(加载tdf文件,自己定义,指导pad摆放) astMarkHierAsPreserved(保留层次化信息)
数字后端有哪些步骤?
1 Setup 3 执行结束后版图的效果?
由于只进行了系统的设置, 加载一些文件,setup后在 单元中只能看到一个模拟 的marco
数字后端设计
Reporter: Zizhu.Feng: Date: 2013.06.08
• 三 数 字 和 模 拟 电 路 怎 样 连 接 ?
• 二 数 字 后 端 有 哪 些 步 骤 ?
• 一 什 么 是 数 字 后 端 ?
三 个 问 题
什么是数字后端?
编写 HDL 代码 布局规划
功能仿真 布局
(建库存放单元的数据,导入网表文件,建立版图单元,加载一个.tf文件定义布线的规则)

数字集成电路 后端设计 APR流程 之Astro

数字集成电路 后端设计 APR流程 之Astro

Astro布局布线流程随着深亚微米工艺的应用,逻辑门间的连线主导了电路的时序性能。

在实际设计时,设计者不再只是完成简单的逻辑门摆放和连线工作,更重要的是要降低实际的连线延迟,使最后的物理设计时序性能满足设计要求。

Astro是由Synopsys公司开发的物理设计软件,适用于现在的主流设计。

Astro提供了一套完整的物理设计流程,布局布线同时还具有时序优化功能,可以在一次流程中使设计电路达到预设指标。

但Astro步骤繁多、设定复杂,本章将针对Astro的设计流程借助一个简单的设计实例,对Astro一次流程中的主要步骤进行简单说明,使读者短时间内可以了解Astro。

一.数据准备本流程中需要的输入数据包括:网表文件(Netlist File)、时序约束SDC文件(Timing Constraint File)、参考库(Reference Library)、定义PAD TDF文件(Top Design File)、工艺tf文件(Technology File)。

其中工艺文件和部分参考库文件由Foundry提供。

1.网表:网表文件由前端工程师提供,格式一般采用verilog(.v)格式。

布局布线用网表文件一般由Design Compiler(DC)综合得到。

从DC中输出网表时,需要在脚本中如下命令,以满足Astro的要求。

2.时序约束文件:时序约束文件由前端工程师提供,格式一般采用SDC(.sdc)格式,SDC文件也由DC中输出。

时序约束文件中所加的约束只能针对顶层端口,文件中时钟定义可能需要加以修改。

因为从DC中输出的时钟定义一般不指定具体的单元及其端口,Astro通常很难根据这样的时钟定义找到真正的时钟源,因此需要先在网表中找到真正的时钟端口,并据此在SDC文件中加以修改。

例如,原来的SDC文件中时钟的定义片段为:原来的时序约束文件是给予综合的DC用,而不是用来布局布线的。

所以综合用的SDC文件中只给出了一个“产生时钟(create clock)”的命令,根据上面这段时序约束文件中的片段,Astro一般无法找到clk_div/clk,因此需要将“get_pin”的目标修改替换为在网表中的一个实际的时钟产生的单元:clk_div/CK01D1/Z.。

数字IC后端流程

数字IC后端流程

11.Tape out。在所有检查和验证都正确无误的情况下把最后的版图GDSⅡ文件传递给Foundry厂进行掩膜制造。
2.布局规划。主要是标准单元、I/O Pad和宏单元的布局。I/O Pad预先给出了位置,而宏单元则根据时序要求进行摆放,标准单元则是给出了一定的区域由工具自动摆放。布局规划后,芯片的大小,Core的面积,Row的形式、电源及地线的Ring和Strip都确定下来了。如果必要 在自动放置标准单元和宏单元之后, 你可以先做一次PNA(power network analysis)--IR drop and EM .
6.ECO(Engineering Change Order)。针对静态时序分析和后仿真中出现的问题,对电路和单元布局进行小范围的改动.
7.Filler的插入(pad fliier, cell filler)。Filler指的是标准单元库和I/O Pad库中定义的与逻辑无关的填充物,用来填充标准单元和标准单元之间,I/O Pad和I/O Pad之间的间隙,它主要是把扩散层连接起来,满足DRC规则和设计需要。
8.布线(Routing)。Global route-- rack assign --Detail routing--Routing optimization 布线是指在满足工艺规则和布线层数限制、线宽、线间距限制和各线网可靠绝缘的电性能约束的条件下,根据电路的连接关系将各单元和I/O Pad用互连线连接起来,这些是在时序驱动(Timing driven ) 的条件下进行的,保证关键时序路径上的连线长度能够最小。--Timing report clear
那你可用write_milkway, read_milkway 传递数据。
4.时钟树生成(CTS Clock tree synthesis) 。芯片中的时钟网络要驱动电路中所有的时序单元,所以时钟源端门单元带载很多,其负载延时很大并且不平衡,需要插入缓冲器减小负载和平衡延时。时钟网络及其上的缓冲器构成了时钟树。一般要反复几次才可以做出一个比较理想的时钟树。---Clock skew.

数字IC后端设计流程

数字IC后端设计流程

ASIC/SoC后端设计作业流程剖析关键词place route DSM megacell clock_tree STA OPT ECO引言众所周知,ASIC产品是从用硬件描述语言(verilog HDL,VHDL)开始进行数字逻辑电路设计的,经过相关的仿真、综合出门级网表、验证直至完成电路布局布线并优化,最终经流片成功形成的芯片产品。

随着中国经济的持续稳定地增长,国内生产厂家对IC需求增长势头强劲与自身设计IC能力薄弱的突出矛盾已经被国家和企业认识。

为了缓解这一矛盾并更多地实现IC自主设计,近两年国内陆续出现了一些著名的传统通信系统厂商设立的IC设计队伍,以及归国留学人员领头创办的创业型IC设计公司,他们大多数有相当强的前端设计能力,但在IC后端设计领域的实践经验还较欠缺。

在完成前端逻辑设计综合出门级网表后,真正能做好后端设计的公司还不多,有的则通过委托设计服务的方式完成后端布局布线及流片。

本文作者有多年从事覆盖前后端IC设计全流程并有每年几次成功流片数百万门级深亚微米SoC 的经验,并担任IC设计的项目管理工作,对国外大公司的设计流程十分熟悉,并愿意就积累的经验与国内同行分享交流,以利于国内IC设计水平的提高。

本文着重介绍国内设计公司薄弱的后端设计,介绍其流程并对在设计过程中的关键步骤进行一些讨论。

传统的后端设计流程指的是从门级网表(gate level netlist)开始的,根据设计要求的不同,后端流程可以分为扁平流程(flat flow)和层次化流程(hierarchy flow)两种,在深亚微米DSM(deep sub-micron)领域,又增加了布局加逻辑合成的前后端合二为一的扁平流程(flat flow)和分层流程(hierarchy flow)。

我们首先介绍传统的两种后端流程。

前后端合一的流程将作为另一个专题在以后讨论。

一、扁平流程(Flat flow)介绍最简单的后端设计是扁平(flat)流程,一般四百万门以下的设计均可使用这一流程。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
set_operating_conditions set_drive on Clock set_driving_cell on inputs
Clock Divider Logic Block B Block A
set_load on outputs set_max_capacitance set_max_transition &set_max_fanout on input &output ports or current_design;
• link_library:该库中的cells,DC无法进行映射,例如:RAM,ROM 及Pad,在RTL设计中,这些cells以实例化的方式引用。
• symbol_library:该库文件包含技术库中cells的图形表示,用于生成 门级示意图。 • read:读入HDL代码
环境属性
• 定义设计的工艺参数,I/O端口属性,wire-load模型,下图解释了描 述设计环境约束的DC命令:

例如:
set_clock_skew -delay 2.5 -minus_uncertainty 2.0 \ -plus_uncertainty 0.2 CLK
-minus_uncertainty用于setup-time的计算,-plus_uncertainty用于holdtime的计算。 一个cell的delay是根据input signal的斜率和output pin的电容负载决定。 对于时钟信号,因为clock network的fanout很大,从而造成clock network末 端门的时钟信号的clock transition time很慢,是DC计算的门延迟失真。 • set_dont_touch_network常用于port或net阻止DC隔离该net,和该net向连的 门具有dont_touch属性,常用于CLK和RST。 例如:set_dont_touch_network [CLK,RST] 当一个电路包含门时钟逻辑时,若在时钟的输入设置 set_dont_touch_network,则阻止DC隔离该门逻辑,导致DRC发现时钟信号冲 突,对门RESET同样。
面积和时序约束
• 描述设计的目标,包括时序和面积约束,要注意约束必须是可实现的, 否则会导致面积超额,功耗增加或时序不能满足要求。设计约束的DC 命令如下:
Top level create_clock& set_clock_uncertainty set_input_delay on input signals
• set_drive用于定义模块的input ports,0表示最大的驱动强度,通常用 于clock ports和reset,例如:set_drive 0 {clk,rst}。
• set_driving_cell用于定义input ports,模拟cell的驱动阻抗,为了保证 输入路径的时序和输入信号的transition time。例如: set_driving_cell -lib_cell BUFX2 -pin Y -library slow all_inputs() • set_min_library允许用户同时设置worst-case和best-case libraries, 从而在初步编译时,DC修正hold-time冲突时,验证setup-time冲突。 也可用于在编译时修正hold-time冲突。例如: set_min_library slow.db -min_version fast.db • DRC的设计规则约束:set_max_transition、set_max_capacitance和
编译
• 编译就是将GETCH逻辑网络映射为技术库的gate cell,使设计满足用 户的约束。对于一个层次设计分两步实现: 1、映射各子模块到逻辑门,不考虑约束; 2、根据时序和面约束优化逻辑,修正模块分界间的违例。
布局布线
Design Setup
CTS
Floor Plan Route Timing Setup DFM&Data Out Placement
• 时序约束包括3个部分:all inputs、register to register和all outputs。
• 输入路径的约束:
set_input_delay:定义信号相对于时钟的到达时间。指一个信号,在 时钟沿之后多少时间到达。
• 例如:
set_input_delay -max 20 -clock CLK {get_ports A} set_input_delay -min 0.8 -clock CLK {get_ports A} • 输出时序约束: set_output_delay:定义从输出端口数据不可用开始到后一个时钟有 效沿的时间。例如: set_output_delay -max 20 -clock CLK {get_ports B}
set_max_fanout。这些约束用于的input ports,output ports或
current_design,一般在技术库内部设置。当技术库的内部设置不能 满足时,可用以上命令设置。例如:
set_max_transition 0.3 current_design set_max_capacitance 1.5 current_design set_max_fanout 3.0 all_outputs()
• set_dont_touch应用于current_design,cell,net,references。阻止 DC对模块中的这些元素进行技术映射。
其它的一些约束条件
• set_dont_use用于将技术库中的某些设计中不需要的cell滤除,比如 Latch、Delay Cell,禁止DC映射; 例如: set_dont_use {mylib/SD*} • set_false_path指示DC对指定的路径不要按照时序约束优化。比如: 异步路径或约束不可实现的路径。false path路径的鉴别在设计中很 关键,如果不对false path路径进行标识,DC会对所有的路径进行优 化,从而影响关键时序路径。此命令也用于当因为有false path关键 逻辑,时序静态分析失败时。 set_false_path -from [get_clock CLKA] -to [get_clock CLKB]
Clock Divider Logic Block B Block A
set_output_delay on input signals
set_max_area
for each block
• set_max_area用于约束current_design的最大面积。0表示在满足时 序、功耗的前提下,尽可能的减小面积。例如:set_max_area 0
• set_clock_transition:在pre_layout必须设置一个固定的transition值 (由技术库提供),因为时钟网有很大的fanout.这样可使DC根据该时 钟计算实际的延时值。
• set_clock_skew:设置时钟的skew及delay,pre_layout和 post_layout命令选项不一样。-propagated选项让DC计算时钟的 skew。
综合环境初始化
• 初始化设计环境,技术库文件及其它设计环境设置。 • search_path:指明文件的位置。 • target_library:既技术库,由生产厂家提供,该库中的cells,用于逻 辑映射。Target library的文件名应包含在Link library的文件清单中, 用于读取门级网表。
首先,综合工具分析HDL代码,用一种模型(GTECH) ,对HDL 进行映射,这个模型是与技术库无关的,也不包含Timing和Load信息;
然后,在设计者的控制下,对这个模型进行逻辑优化;
最后一步,进行逻辑映射和门级优化,将逻辑根据约束,映射为 专门的技术目标单元库(target cell library)中的cell,形成了综合后 的网表。
set_wire_load_model
• set_operating_conditions用于描述cells操作条件: process、voltage 和temperature。例如:set_operating_conditions -max slow
• set_wire_load_model用于设置Nets的寄生RC模型,一般选用悲观的 模型。例如:set_wire_load_model -name smic18_slow • set_load用于定义nets或ports的电容负载,为了保证输出路径的时序, default条件下为0。例如:set_load 0.6 all_outputs()
set_output_delay -min -0.5 -clock CLK {get_ports B}
• 时钟描述:时钟的描述在设计中非常关键,一般通过clock period和 clock source(port/pin) 、duty cycle、offset/skew和clock name进行描 述。 • DC时钟约束命令: create_clock:用于定义时钟的周期和波形(占空比及起始沿) 例如: create_clock -period 40 -waveform{0 20} 对于仅包含组合逻辑的模块,为了定义该模块的延时约束,需要创造 一个虚拟时钟定义。例如: create_clock -name V_clk -period 20
数字后端简要流程
HDL代码义
• 逻辑综合:决定设计电路逻辑门之间的相互连接。 • 逻辑综合的目的:决定电路门级结构,寻求时序、面积和功耗的平衡, 增强电路的测试性。 • 逻辑综合的过程(constraint_driven) : Synthesis = Translation + Logic Optimization + Mapping
• set_max_delay: 1、对于仅包含组合逻辑的模块,用此命令约束所有输入到输出 的总延时。 例如: set_max_delay 5 -from all_inputs() -to all_outputs 2、对于含有多个时钟的模块,可用通常的方法定义一个时钟, 用此命令进行约束定义时钟和其他时钟之间的关系。 例如:set_max_delay 0 –from CLK2 –to all_register(clock_pin) • set_min_delay: 1、对于仅包含组合逻辑的模块,定义指定路径的最小延时。 例如:set_min_delay 3 -from all_inputs() 2、和set_fix_hold一起使用,只是DC添加一定的延迟,满足最 小延迟需求。
相关文档
最新文档