tfpwl_lj的个人空间 https://blog.eetop.cn/1638430 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

芯片设计——综合

热度 3已有 4129 次阅读| 2017-5-17 19:44 |系统分类:芯片设计

 本文是根据《综合与Design Compiler》文章,写就的一篇关于综合的简要总结,供自己整理思路之用。算是对前文《芯片设计流程(八)——正向设计2》中的综合分析做一个进一步的展开说明。
       什么是综合?综合就是将RTL级verilog代码用Design Compiler 工具 转换/映射成用基础门级单元表示的电路的过程。基础门级单元也就是平时我们学的与非门,或非门,寄存器之类的,只不过,这些门级单元已经做成了标准的单元库,我们可以直接使用软件来调用,而不需要自己调用门级单元来搭建电路。简单的来说,Design Compiler软件就是做翻译的工作——将代码翻译成实际电路,但又不仅仅是翻译这么简单,它涉及到电路的优化与时序约束,使之符合我们做制定的性能要求。
       前文提到该软件是约束驱动型软件,那么约束从何而来?答案是,设计规格书。每一个芯片设计项目都会有一个项目规格说明书,这是在芯片设计之初,整体规划(见前文)的步骤中要制定好的。具体详细的约束要求需要在综合过程中仔细的斟酌决定。
       综合的一般流程:1,预综合过程;2,施加设计约束过程;3,设计综合过程;4,后综合过程。
       PS,使用Design Compiler软件一个必备的条件是要学会使用DC TCL脚本。
       预综合过程。这部分主要是准备好综合过程所使用的库文件(包括工艺库、链接库、符号库、综合库)、设计输入文件,设置好环境参数。
       施加设计约束过程。这部分主要是用DC TCL脚本编写约束文件。具体的约束项目可以分为三大类:a,面积约束,定义时钟,约束输入/输出路径;b(环境属性),约束输入驱动,约束输出负载,设置工作条件(最好、典型、最差情况),设置连线负载模型;c(高级时钟约束),对时钟的抖动、偏移、时钟源延迟,同步多时钟,异步时钟,多周期路径,这几类进行细致的约束。 约束的内容具体就是这么多。一个详细的TCL脚本约束文件基本包含上述所有的约束。后面有一个约束范文。
       设计综合过程。主要是介绍电路模块设计规划(以利于更好的进行约束),Design Compiler综合优化的过程(三大优化阶段,结构级,逻辑级,门级),时序分析的具体过程等综合过程中的一些详细信息。
       后综合过程。综合完毕该怎么看结果,时序违反该如何解决?这就是后综合过程所要解决的问题。在综合之后,通过分析综合报告,可以得知此次的电路综合结果如何,根据不符合的要求,进行重新约束,甚至重新设计电路。在这个阶段特别值得一提的是综合预估,因为在写综合约束脚本的时候,需要确定约束条件,规格书一般不能够涉及到如此细节的部分,所以需要根据实际电路进行综合预估,这个步骤是在代码编写完之后,与验证同时进行的,目的在于大致估计电路是否符合要求,此时的预综合过程与正式的综合过成是一样的,但,要求会宽松许多,时序违反的要求大概为 10%-15%,也就是说电路即使有10%-15%的电路不满足时序也没有关系。
       综合约束过程是一个反复迭代的过程,需要多次设计预估,这样才能不断修正时序违反。
范文:

# Set the current_design #

read_verilog {counter_pad.v counter.v} //读取设计文件

current_design Cnt10_PAD

link

 

set_operating_conditions -max slow -max_library slow -min fast -min_library fast //设置工作条件

set_wire_load_mode enclosed  //设置连线负载模型

set_wire_load_model -name tsmc18_wl10 -library slow   //设置连线负载模型

set_local_link_library {slow.db fast.db}  //设置链接库

set_max_area 0  //设置面积

 

set_max_fanout 5 [get_ports reset_n] //设置最大扇出

set_max_fanout 4 [get_ports clk]  //设置最大扇出

set_max_fanout 4 [get_ports in_ena] //设置最大扇出

set_max_transition 0.3 [get_ports reset_n] //设置信号翻转时间

set_max_transition 0.3 [get_ports clk]//设置信号翻转时间

set_max_transition 0.5 [get_ports in_ena]//设置信号翻转时间

 

create_clock [get_ports clk]  -period 10  -waveform. {0 5}//创建时钟

set_clock_latency 1  [get_clocks clk]//设置时钟源延时

set_clock_latency -source 1  [get_clocks clk]

set_clock_uncertainty -setup 0.5  [get_clocks clk]//设置时钟不确定度

set_clock_uncertainty -hold 0.4  [get_clocks clk]

set_dont_touch_network [get_clocks clk]//设置伪路径,不要约束

set_clock_transition -fall 0.3 [get_clocks clk]////设置下降沿信号翻转时间

set_clock_transition -rise 0.3 [get_clocks clk]///设置上升沿沿信号翻转时间

 

set_input_delay -clock clk  -max 3  [get_ports in_ena]//设置输入延时

set_output_delay -clock clk -max 4 [get_ports cnt]//设置输出延时

set_output_delay -clock clk -min 0.5 [get_ports cnt]

set_output_delay -clock clk  -max 4  [get_ports carry_ena]

set_output_delay -clock clk  -min 0.5  [get_ports carry_ena]

 

compile//编译

report_timing -delay max > ./reports/pad_setup_rt.rpt//报告最大时序延时

report_timing -delay min > ./reports/pad_hold_rt.rpt//报告最小时序延时

report_constraint -verbose > ./reports/pad_rc.rpt

report_qor > ./reports/pad_rq.rpt

 

remove_unconnected_ports -blast_buses [get_cells -hierarchical *]

set bus_inference_style. {%s[%d]}  

set bus_naming_style. {%s[%d]}

set hdlout_internal_busses true   

change_names -hierarchy -rule verilog

define_name_rules name_rule -allowed {a-z A-Z 0-9 _} -max_length 255 -type cell

define_name_rules name_rule -allowed {a-z A-Z 0-9 _[]} -max_length 255 -type net

define_name_rules name_rule -map {{"\\*cell\\*" "cell"}}

define_name_rules name_rule -case_insensitive

change_names -hierarchy -rules name_rule

 

write -format verilog -hier -o ./outputs/pad_counter.sv

write -format ddc -hier -o ./outputs/pad_counter.ddc

write_sdc ./outputs/pad_counter.sdc

write_sdf ./outputs/pad_counter.sdf

3

点赞

刚表态过的朋友 (3 人)

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 74

    粉丝
  • 38

    好友
  • 42

    获赞
  • 52

    评论
  • 4346

    访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-5-18 00:38 , Processed in 0.015727 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部