在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 15108|回复: 28

[求助] 请教DC综合的问题,了解DC的请进,我是新手,请大家给点建议

[复制链接]
发表于 2011-3-21 16:28:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
我最近在用DC综合一个RTL级代码,代码是用verilog写的。

综合的经历如下:
因为我是新手,以前没用过DC,所以就从DC的图形界面design_vision入手,施加了一些约束,然后编译。
约束包括:set target_library,set link_library,set symbol_library,read_file -format verilog,current_design,link,reset_design,set_operating_conditions,set auto_wire_load_selection true,set_wire_load_mode enclosed,set_driving_cell,set_load,set_fanout_load,create_clock,set_dont_touch_network,set_clock_latency -source,set_clock_latency,set_clock_uncertainty,set_clock_transition,set_dont_touch,set_drive 0 [list SCLK rst],set_max_capacitance,set_max_fanout,set_max_transition,set_input_transition,set_input_delay,set_output_delay,set_max_area 0,set_structure -boolean true -boolean_effort high,set_fix_multiple_port_nets -all -buffer,check_design,check_timing,uniquify,compile,compile -map_effort high -incremental_mapping。
我编译之后,发现保持时间和建立时间的SLACK都是负的,显然不满足要求。

而且有一个很重要的问题,我是需要根据什么来设置约束的大小。比如说,设置set_input_delay,set_max_capacitance,要设置多大???
怎么选择设置的大小才能使综合出来的电路能在芯片生产出来之后不会出现问题,保证设计的正确性???

有人说,需要查看库文件,查找每个原件的延时信息等参数,这是真的吗???
还有就是,我需要设置哪些参数,我列举的都需要吗???还需要添加别的约束吗???

我用的是中芯国际.18的库。

请大家给我点建议,最好详细点,我第一次用DC,第一次综合。先谢谢大家了。
发表于 2011-3-21 20:28:42 | 显示全部楼层
我也是新手,把我知道的分享下吧,大家共同进步。
set_input_delay,这个一般是前端设计者定的,如果自己设的话,可以设得稍微悲观些。
set_max_capacitance,一般要根据的你器件库的参数来定,问下组里做过的人吧,我没看库,我也不知道。
时序是负的,很正常,所以才需要后端设计去做。一般不要太大就好。
还有一个综合建议,注意选择元件。某些元件,驱动能力太小,或者延迟过大,可以用
don't use 来禁止掉,这个方法比较有效
 楼主| 发表于 2011-3-21 21:23:01 | 显示全部楼层
回复 2# xixizhihua


先谢谢了,但是还有几个问题。
set_input_delay,如果自己设的话,可以设得稍微悲观些,那比如时钟周期为10ns,我设为4ns可行。set_output_delay我也设为4ns。
还有元件也可以自己选择吗?怎么选择?
发表于 2011-3-21 21:23:21 | 显示全部楼层
set_input_delay和set_output_delay主要看你设计的相关引脚是否有很强的时序需求,比如UART的RX和TX时序要求就很低,“多多”的放松影响也不是很大,但是像SDRAM接口等时序要求比较高的引脚,你就得根据SDRAM芯片的时序要求来设置约束了,可以下个SDRAM芯片的数据手册来查查时序信息。至于怎么根据片外芯片的时序要求来设置输入输出延时,你可以在资料区里面查查DC教程,有说的很清楚的PDF文件。
 楼主| 发表于 2011-3-21 21:38:03 | 显示全部楼层
回复 4# bestyanjun


    我写的是一个ADC芯片的SPI接口,用用来配置的芯片的。要求是100MHZ。
下面是我的脚本文件,只是顶层(SPI_ADC)的脚本文件,不知道底层的模块用不用设置约束。

#################

#set search_path

set target_library {/project/DAC_Project/library/chartered/arm-lib-frontend/aci/sc-x/synopsys/scx_csm_18ic_ss_1p62v_125c.db}

set link_library {* /project/DAC_Project/library/chartered/arm-lib-frontend/aci/sc-x/synopsys/scx_csm_18ic_ss_1p62v_125c.db}

set symbol_library {/project/DAC_Project/library/chartered/arm-lib-frontend/aci/sc-x/symbols/synopsys/scm18ic.sdb}

#################

read_file -format verilog {/export/home/2011/wangx/wangx_spi_CODE/CODE/SPI_ADC.v}

read_file -format verilog {/export/home/2011/wangx/wangx_spi_CODE/CODE/ADDR_GEN.v /export/home/2011/wangx/wangx_spi_CODE/CODE/DATA_IN.v /export/home/2011/wangx/wangx_spi_CODE/CODE/DATA_OUT.v /export/home/2011/wangx/wangx_spi_CODE/CODE/MAIN_CONTROL.v /export/home/2011/wangx/wangx_spi_CODE/CODE/MEM.v}

#################

current_design SPI_ADC

link

reset_design

#################

#set_operating_conditions -max_library scx_csm_18ic_ss_1p62v_125c -max worst \

#-min_library  ***  -min best

set_operating_conditions -library scx_csm_18ic_ss_1p62v_125c ss_1p62v_125c

#set_wire_load_model -name csm18_wl50
-library #scx_csm_18ic_ss_1p62v_125c

set auto_wire_load_selection true

set_wire_load_mode enclosed

set_driving_cell  -lib_cell INVX2   -pin Y  -library scx_csm_18ic_ss_1p62v_125c [remove_from_collection [all_inputs] [get_ports {SCLK rst}]]

set_load 0.3 [all_outputs]

set_fanout_load 8 [get_ports SDIO]

#################

create_clock -name "clock" -period 10 -waveform { 0 5  }  { SCLK  }

set_dont_touch_network  [ find clock clock ]

set_clock_latency -source 1 [get_clocks clock]

set_clock_latency 1 [get_clocks clock]

set_clock_uncertainty 0.5 [get_clocks clock]

set_clock_transition 0.3 [get_clocks clock]

#################

set_dont_touch [get_nets rst]

set_drive 0 [list SCLK rst]

#set_drive 0 [get_ports SCLK]

#set_drive 0 [get_ports rst]

set_max_capacitance 6 [remove_from_collection [all_inputs] [get_ports {SCLK rst}]]

set_max_fanout 6 [remove_from_collection [all_inputs] [get_ports {SCLK rst}]]

set_max_transition 2 SPI_ADC

#################

set ain_ports [remove_from_collection [all_inputs] [get_ports SCLK]]

set_input_transition 0.3 $ain_ports

set_input_delay -clock clock -max 4 $ain_ports

set_input_delay -clock clock -min 0 $ain_ports

set_output_delay -clock clock -max 4 [all_outputs]

set_output_delay -clock clock -min 1 [all_outputs]

#################

set_max_area 0

#################

#recommend for reduce area

set_structure -boolean true -boolean_effort high

#fix the multiple port nets

set_fix_multiple_port_nets -all -buffer

#################

check_design > check_design.rpt

check_timing > check_timing.rpt

#################

uniquify

compile

compile -map_effort high -incremental_mapping

##################reports

report_timing -delay max -max_paths 1 > timing_setup.rpt

report_timing -delay min -max_paths 1 > timing_hold.rpt

report_constraint -all_violators > con_violators.rpt

report_timing -path full -delay max -max_paths 1 -nworst 1 > timing.rpt

report_area > area.rpt

##################write the database

change_names -rule verilog -h

write -format verilog -hier -output SPI_ADC.sv

write_sdf SPI_ADC.sdf

write_constraints -format sdf -cover_design -output constraints.sdf

write_sdc SPI_ADC.sdc

#################


不知道参数设置有没有问题,要怎么修改?我用的是最坏情况的库,建立和保持时间的SCLAK都为-0.26。

 楼主| 发表于 2011-3-23 13:37:54 | 显示全部楼层
自己顶一下
发表于 2011-3-23 15:09:14 | 显示全部楼层
top-down 流程,设置顶层就可以了。下面工具会自动 由 顶层 推得
发表于 2011-3-30 12:03:04 | 显示全部楼层
很难啊
发表于 2011-3-30 14:32:47 | 显示全部楼层
新手,关注,学习
发表于 2011-4-21 14:43:50 | 显示全部楼层
学习。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2024-9-27 10:22 , Processed in 0.025957 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表