• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

数字集成电路全流程设计、仿真、综合以和版图等设计,使用centosEDA软件。包括vcs仿真、DC综合、FM形式验证、Astro版图设计、物理验证、PT时序等各

武飞扬头像
chuanyi_wang
帮助1

概述

数字集成电路从RTL设计到版图实现是一个复杂的流程,此设计是在以前用verilog编写的单周期CPU的基础上,完成了整个数字集成电路的设计流程,完成了版图,并通过了RTL级仿真、门级仿真和物理验证。

数字集成电路全流程设计是一个复杂的过程,本设计都前端设计较为完整,后端较为粗略

需要工程设计源码以及数字IC EDA,联系 3270516346 企鹅号

一、设计功能概述与RTL仿真

1、设计文件目录

整个设计的文件组织如下:

CPU_make                          // 存放CPU_make的目录   
|----core                    // 存放原始rtl代码及仿真   
|----rtl                 // 存放rtl源码    
|----tb                  // 存放TestBench文件    
|----modelsim            // 存放仿真脚本(仿真工具为modelsim)    
|----core_ASIC               // 存放用于ASIC的源码     
|----rtl                 // 存放rtl源码     
|---tb                  // 存放仿真测试文件
|---modelsim            // 存放仿真脚本(仿真工具为modelsim) 
|---postdc              // 存放门级仿真脚本
|--post_APR_sim         //存放ARR后仿真脚本  
|----DC                    //存放综合脚本    
|---- run_dc_read_rtl.sh      //读入设计脚本  
|---- run_dc_constraint_compile.sh      //运行设计并添加约束脚本    
|--- scripts           // 脚本    
|----netlist           // DC综合生成的门级网表和sdf文件等
|----WORK              // DC运行工作目录    
|---- reports          //生成的各种报告
|---- logs             //存放DC运行时产生的输出    
|----doc                   // 存放设计相关文档   
|----lib                   // 存放设计相关库
|----FM_RTL_PostDC         //门级网表与RTL级形式验证
  |---- run_fm.scr       //运行脚本  
  |----cpu_ASIC.fms      //实际运行脚本
      |---- logs             //存放FM运行时产生的输出
|---Astro                  //存放版图设计 
      |--- mw_lib            //运行所需库
      |---data_fend          //设计所需文件目录
      |---data_bend          //设计生成文件目录
      |---logs               //运行输出内容
      |--- reports            //运行输出报告
      |---design_lib_cpu_ASIC   //Astro最终生成设计
 |---FM_PostDC_PostAPR        //Astro生成网表与RTL进行形式验证
     |---run_fm.scr           //运行文件
     |---data_bend -> ../Astro/data_bend/
     |---data_fend -> ../Astro/data_fend/
     |---netlist -> ../DC/netlist/
     |--- rtl -> ../core_ASIC/rtl
|---svf -> ../DC/svf/
|---layout                    //物理验证
|---ANT                   //天线效应验证
|---LVS                   //layout vs. schematic
|---DRC                   //design rule check
|---rule                  //设计规则文件
|---design_lib_cpu_ASIC   //设计版图
|---logo                 
|---mytools
|---SMIC18STDLIBM6
|---PT       //时序分析
  |---reports                 //生成报告
  |---logs                  //运行产生文件
  |---data_bend -> ../Astro/data_bend/
学新通

2、RTL代码概述

1、使用自己用verilog HDL编写的32位MIPS单周期CPU,实现了常用的各种指令,代码结构如下:
cpu_ASIC.v 添加PADded顶层文件
cpu_top.v   顶层文件,连接各模块
CU.v      控制单元
IM.v      指令寄存器
PC.v      程序计数器
NPC.v     下一地址生成单元
RF.v     寄存器
EXT.v     位扩展模块
DM.v     数据存储器
2、为端口添加PAD单元:

 PLBI8F	U_clk	(.D( clk ), .P( PAD_clk ), .A( 1'b0 ), .CONOF( 1'b1 ), .NEN( 1'b0 ), .PD( 1'b0 ), .PEN( 1'b0 ), .PU( 1'b1 ), .SONOF( 1'b0 )); //in
PLBI8F 	U_reset	(.D( reset ), .P( PAD_reset ), .A( 1'b0 ), .CONOF( 1'b1 ), .NEN( 1'b0 ), .PD( 1'b0 ), .PEN( 1'b0 ), .PU( 1'b1 ), .SONOF( 1'b0 )); //in
PLBI8F 	U_y0_0	(.D(  ), .P( PAD_y0[ 0] ), .A( y0[ 0] ), .CONOF( 1'b0 ), .NEN( 1'b1 ), .PD( 1'b0 ), .PEN( 1'b1 ), .PU( 1'b1 ), .SONOF( 1'b0 )); //out
PLBI8F 	U_y0_1	(.D(  ), .P( PAD_y0[ 1] ), .A( y0[ 1] ), .CONOF( 1'b0 ), .NEN( 1'b1 ), .PD( 1'b0 ), .PEN( 1'b1 ), .PU( 1'b1 ), .SONOF( 1'b0 )); //out

学新通

3、为测试系统功能,软件编写一个求平均数的二进制程序进行测试,并将用到的相关的寄存器的值引到输出,通过观察相关寄存器的值来判断试题功能是否正确。

3、RTL仿真

RTL仿真
使用modelsim进行RTL级仿真,verdi查看波形图。
学新通

                           Verdi波形

通过波形可以看出,PAD_y5为最终输出的平均数的值,PAD_y为计数值,RTL仿真通过。

二、DC综合与门级仿真、FM形式验证

1、DC综合概述

1、综合就是把行为级的RTL代码在工艺、面积、时序等约束下转换成对应的门级网表。综合是使用软件的方法来设计硬件,然后将门级电路实现与优化的工作留给综合工具的一种设计方法。DC综合分为三阶段:转换、优化、映射,即Synthesis=translation optimization mapping。
2、DC综合的流程
学新通

.synopsys_dc.setup文件设置

1、.synopsys_dc.setup为DC启动时读入的文件,预置DC运行环境,一般放置设置库的语句。
2、在.synopsys中设置库文件路径,生成报告、工作路径以及顶层模块路径
3、在设计中工艺库采用SMIC18,具体配置为:

# Define working directory
set TOPDIR	[sh pwd]

# Define RTL source files directory
set topDir 		"../core_ASIC/rtl"

# Output files directory
set reportsDir 		"$TOPDIR/reports"
set netlistDir 		"$TOPDIR/netlist"
set svfDir 		"$TOPDIR/svf"

# Design Compile system setting
set search_path      	". $topDir"
lappend search_path  	"../lib/SMIC18_Ver2.5/FEView_STDIO/IO/Synopsys/"
lappend search_path  	"../lib/SMIC18_Ver2.5/FEView_STDIO/IO/Verilog/"
lappend search_path  	"../lib/SMIC18_Ver2.5/FEView_STDIO/STD/Synopsys/"
lappend search_path  	"../lib/SMIC18_Ver2.5/FEView_STDIO/STD/Verilog/"
# Cell library
set target_library     	"smic18_ss.db"
# Pad library
lappend target_library "smic18IO_line_ss.db"
set synthetic_library 	"dw_foundation.sldb"
set link_library    	"* $target_library $synthetic_library"

# symbol library
set symbol_library	"smic18IO.sdb"
lappend symbol_library	"smic18.sdb"

# specify directory for intermediate files from analyze
define_design_lib DEFAULT -path ./analyzed

set cache_write ./

set cache_read $cache_write
# specify varibles
set sh_enable_line_editing true

set hdlin_ff_always_sync_set_reset "FALSE"

set write_name_nets_same_as_ports true

set high_fanout_net_threshold           60
set high_fanout_net_pin_capacitance     0.01
学新通

3、读入设计

将设计源文件读入并链接,将读入的设计存储为“.ddc”文件,方便在此调用,不用重复读入设计源文件。具体脚本大体为:

#从linux系统中获得“exit_switch”变量的值
set exit_switch 	[getenv exit_switch]
#设置顶层模块
set TOP_MODULE  cpu_ASIC
#生成svf文件,用于指导FM验证
set_svf ${svfDir}/${TOP_MODULE}.svf
#指定设计WORK文件位置
define_design_lib WORK -path WORK
#分析设计源文件
analyze -format verilog -lib WORK  [sh ls $topDir/*.v]
elaborate $TOP_MODULE
#确定当前设计并进行链接
current_design $TOP_MODULE	
link
if { [link] == 0 } {
	echo "Linking Error when deal with $TOP_MODULE"
	exit;
}
uniquify
#检查设计中是否存在问题,检查不通过则退出
if { [check_design] == 0 } {
	echo "Check Design Error when deal with $TOP_MODULE"
	exit;
}
#保存设计
write -format ddc -hierarchy -output ${netlistDir}/${TOP_MODULE}_unmapped.ddc
#  Finish and Quit
if {$exit_switch == "true"} {
exit
}

学新通

4、设置约束

1、为设计添加约束可以指导DC如何进行综合和优化,主要为时序约束、芯片工作环境约束、区域和位置约束、芯片引脚特性面积和功耗约束等,其中最重要的为时序约束。
2、为设计添加时序约束,指定时钟周期为“50”,指定面积、功耗、端口等的约束,具体约束为(详见文件DC/scripts/constraint.tcl):

#指定当前设计
current_design $TOP_MODULE
#移除任何已经存在的约束
remove_sdc
#****************************************************
#MAX freq : 20M 设置时钟频率
set SYS_CLK_PERIOD 50.0
#****************************************************
#指定复位与时钟引脚
set Rst_list		[list PAD_reset]
set Clk_list		[list PAD_clk]

#****************************************************
# Define The Design Enviroment
#****************************************************
set_min_library smic18_ss.db -min_version smic18_ff.db
set_min_library smic18IO_line_ss.db -min_version smic18IO_line_ff.db

set_operating_conditions -analysis_type bc_wc -min best -max worst
#用来为DC提供估计的线载信息,反过来DC使用线载信息把连线延迟建模为负载的函数。
set_wire_load_mode  "segmented"
set_wire_load_model -name reference_area_20000 -library smic18_ss

#****************************************************
# clock defination and reset
#****************************************************
#MAX freq : 2M
#physical clock and reset
#建立时钟,指定时钟引脚,时钟周期,波形
create_clock -name clk -period $SYS_CLK_PERIOD -waveform [list 0 [expr $SYS_CLK_PERIOD /2]]  [get_ports PAD_clk]

#设置“dont_touch_network”属性就是在优化的时候,不会对原有的器件进行替换
#设置“set_ideal_network”,相应模块就会0转换时间,0延时,综合优化的时候不会对路径的cell和net进行优化。
#clk
set_dont_touch_network  [all_clocks]
set_ideal_network [get_pins "U_clk/D"]
#reset
set_dont_touch_network  [get_ports "$Rst_list"]
set_ideal_network [get_ports "$Rst_list"]

#****************************************************
# clock constraints
#****************************************************
#实际时钟源到"create_clock"引脚的延时最大为0.8
set_clock_latency	-source -max 0.8	[all_clocks]
#时钟从“create_clock”的引脚到寄存器引脚的延时最大为0.8
set_clock_latency	-max 0.8	[all_clocks]
#设置时钟不确定时间为0.3,时钟树不同网络之间的最大延时
set_clock_uncertainty	0.3	[all_clocks]
#寄存器的时钟在上升沿和下降沿的最大转换时间为0.5
set_clock_transition    0.2     [all_clocks]
#生成时钟相关报告
report_clocks -nosplit >  ${reportsDir}/${TOP_MODULE}.clocks.txt

#****************************************************
# drive and load, max_fanout,max_capacitance
#****************************************************
set MAX_LOAD	[load_of smic18_ss/NAND2HD2X/A]
#set_drive命令用于指定输入端口的驱动强度,主要用于模块建模或芯片端口外驱动电阻。
#0值表示最高驱动强度且通常用于时钟端口。

set_drive 0	[get_ports "$Rst_list"]
set_drive 0 	[get_ports "$Clk_list"]

#设置输入端口的驱动单元
set_driving_cell -lib_cell PLBI8S [remove_from_collection [all_inputs] \
      [get_ports [list PAD_clk PAD_reset]]]
set_max_capacitance [expr $MAX_LOAD*12] [get_designs *]
#设置输出的最大电容负载
set_load -max [expr $MAX_LOAD*15] [all_outputs]

set_max_fanout 10 [all_inputs]

set_max_transition 1.0 $TOP_MODULE
#获得所有的输入输出引脚除clk和rst之外,为多个引脚设置约束
set in_ports [remove_from_collection [all_inputs]  [get_ports [list PAD_clk PAD_reset]]]
set out_ports [get_ports [list PAD_y0   PAD_y3 PAD_y4 PAD_y5 PAD_y]]

#no input remove clk\reset
#设置数据到达输入引脚的最大和最短时间
#min:50-0.2(transition)-0.3(uncertainty	)
set_input_delay -max 5 -clock clk $in_ports
set_input_delay -min 0.5 -clock clk $in_ports
#设置数据输出的最大和最小延时时间
set_output_delay -max 5 -clock clk $out_ports
set_output_delay -min -1 -clock clk $out_ports
#****************************************************
# false path,就是我们在进行综合分析时,不希望综合工具进行分析的那些路径。
#****************************************************
set_false_path -from [get_ports "$Rst_list"]

#****************************************************
# case_analysis
#****************************************************
#case_analysis 给某个Pin指定固定电平,然后时序分析会根据该结果优化原先的电路。
set_case_analysis 0 [get_pins "U_reset/D"]
# area and power设置面积和功耗
 set_max_area     20000   
 set_max_total_power 0 uw
#****************************************************
# don't touch
#****************************************************
#优化时不替换原有器件
set_dont_touch        [get_cells U_* ]
学新通

5、产生输出netlist网表和各种报告文件

1、输出相关文件:

#检查设计和时序
check_design  >  ${reportsDir}/${TOP_MODULE}.check_design.txt
check_timing  >  ${reportsDir}/${TOP_MODULE}.check_timing.txt

#****************************************************
#  Output Reports
#****************************************************
report_design -nosplit >  ${reportsDir}/${TOP_MODULE}.design.txt
report_port -nosplit >  ${reportsDir}/${TOP_MODULE}.port.txt
report_net -nosplit >  ${reportsDir}/${TOP_MODULE}.net.txt
report_timing_requirements -nosplit >  ${reportsDir}/${TOP_MODULE}.timing_requirements.txt
report_constraint -nosplit -all_violators >  ${reportsDir}/${TOP_MODULE}.constraint.txt
report_timing -nosplit >  ${reportsDir}/${TOP_MODULE}.timing.txt
report_area -nosplit >  ${reportsDir}/${TOP_MODULE}.area.txt
report_power -nosplit > ${reportsDir}/${TOP_MODULE}.power.txt

#****************************************************
#  Output Results
#****************************************************
#输出门级网表
write -format verilog   -hierarchy      -output  ${netlistDir}/${TOP_MODULE}.vg
#保存设计
write -format ddc -hierarchy -output ${netlistDir}/${TOP_MODULE}.ddc
#得到标准延时格式文件,用于后端布局布线
write_sdf  ${netlistDir}/${TOP_MODULE}_post_dc.sdf
#得到“.sdc”约束文件
write_sdc  -nosplit ${netlistDir}/${TOP_MODULE}.sdc
学新通

2、输出的门级网表,“.ddc”设计文件,约束文件等:
学新通
3、输出的时序、功耗等报告:
学新通
4、 查看时序分析报告,分析是否有时序违规
学新通
数据到达时间为207.34,数据应该到达时间为499.94,slack时间为292.60,满足时序条件

6、postDC后仿真

1、对DC生成的门级网表进行仿真,仿真的文件主要为DC生成门级网表、标准单元库、IO单元库,具体为(vlog.args):

 libext .v
-vlog01compat
 acc

 define DUMP_FSDB
 define POST_DC

-y /../rtl
-work work

../../DC/netlist/cpu_ASIC.vg

//PAD
../../lib/SMIC18_Ver2.5/FEView_STDIO/IO/Verilog/smic18IO_line.v
//Stdcell
../../lib/SMIC18_Ver2.5/FEView_STDIO/STD/Verilog/smic18.v

// Testbench files
 incdir ../../bench
../tb/tb.v
学新通

2、verdi观察到的波形为:
学新通
与RTL仿真的波形一致,门级仿真通过。

7、FM形式验证

1、形式验证是采用数学证明等方法,验证设计的属性等效性等,不需要电路动作,降低验证时间,形式验证的大体流程为:
学新通
2、FM在启动时会自动加载“.synopsys_fm.setup”,我们在这个文件中加载与工艺库相关的文件等:

# 设置工作目录
set TOPDIR 		[sh pwd]
# 设置源文件目录
set topDir 		"$TOPDIR/rtl"
# 设置输出文件目录
set reportsDir 		"$TOPDIR/reports"
set netlistDir 		"$TOPDIR/netlist"
set svfDir 		"$TOPDIR/svf"
#设置dw库目录
set hdlin_dwroot	/opt/synopsys/syn/P-2019.03-SP3/
#设置搜寻目录
set   search_path
". ./lib/SMIC18_Ver2.5/FEView_STDIO/STD/Synopsys/ ./lib/SMIC18_Ver2.5/FEView_STDIO/IO/Synopsys/ ./netlist ./rtl ./lib/SMIC18_Ver2.5/FEView_STDIO/STD/Verilog/ ./lib/SMIC18_Ver2.5/FEView_STDIO/IO/Verilog/"


3、进行形式验证:

设置顶层文件
set TOP_MODULE cpu_ASIC
#设置搜索目录
set	search_path	"$search_path  $topDir "

#让FM自动加载svf文件,指导FM
set 	synopsys_auto_setup 	true
set_svf ${svfDir}/${TOP_MODULE}.svf
#加载库文件
read_db "lib/SMIC18_Ver2.5/FEView_STDIO/STD/Synopsys/smic18_tt.db lib/SMIC18_Ver2.5/FEView_STDIO/IO/Synopsys/smic18IO_line_tt.db"
#读入参考设计并设置顶层文件
read_verilog -r [sh ls $topDir/*.v]
set_top ${TOP_MODULE}
#读入实现设计并设置顶层文件
read_verilog -i ${TOP_MODULE}.vg
set_top ${TOP_MODULE}
#进行对比
Match
#进行验证,如何验证失败进入调试
if [ verify ] {
   date
   exit
} else {
 	diagnose
       report_unmatched
       report_failing
       report_error_candidates
}
学新通

4、形式验证结果:
学新通

由此可见,形式验证通过。

三、版图设计

1、设计输入

1、将门级网表、设计约束、工艺库等导入到Astro目录下并对约束进行处理使Astro可以读入。
学新通

工艺库只用到了标准单元库与IO库:
学新通

2、建立设计,并把设计命名为“design_lib_cpu_ASIC”,使用图形化界面处理完之后,保存为脚本,以后直接加载脚本即可建立设计:

加载设计:
学新通

载入设计的脚本的主要操作(/1.0_design_setup.cmd):
学新通
建立设计之后并将此时的设计单元保存为“1.0_design_setup2、UART配置

2、布局规划(floorplan)

1、布局规划在整个流程中处于十分重要的地位,Floorplan一旦确定,整个芯片的面积、宏单元的位置等也就确定,Floorplan的质量也与设计的timing和布通率有着密切的关系,这一步决定着设计的好坏,需要反复调整。
2、DC报告的功耗值:
学新通

内核的功耗比较低,大约为1mW,内核的供电PAD一对就够了。
输出PAD有136个,136*8/51=21,所以给IO的电源PAD为21对,我们一个设置22对电源PAD,分别放置在芯片的四周。
编写tdf文件,规划电源PAD与引脚的排放位置,总引脚的个数为电源PAD24 137芯片引脚为161个,上下左右分别安排41、40、40、40个引脚,由于引脚所确定的面积大约core的面积,芯片面积有引脚的面积确定。其中左端引脚排列为:
学新通

3、设置内核大小(宽度和高度)为( 40(边PAD数)74(PAD宽度) 1842 ) - 802 - 1842=2800。然后在PAD中间填充PAD filler形成Pad rings环,再将电源PAD与core ring连接起来。

设置core大小:
学新通

连接电源环:
学新通

放置完PAD和电源环之后的版图为:
学新通

4、在适当的位置添加电源条,方便个cell电压均匀,添加了电源条的版图为:
学新通

5、进行stdcell摆放区域的规划,在某些电源PAD接入的地方,Metal 1很难接入,在此区域不放置cell。最后保存规划好版图的设计。

3、时序约束与布局

1、进行时序约束,导入sdc文件,检查sdc对设计的约束是否完备有效。
2、时序检查是分阶段进行的,布局前的、布局后的、时钟树综合前的、时钟树综合后的。越早阶段时,情况越理想,若早阶段时不能满足时序要求,说明可能存在时序不满足的可能;若不满足时序要求,但相差在5~10%之内,还是有较大的可能在后续步骤中修正的。
3、进行自动布局,首先设置工作环境和工作模式和各种优化选项,然后进行自动布局。
学新通

(空白区域是由于让在某些电源PAD接入的地方不放置stdcell)

4、时钟树综合、post-CTS优化

1、先报告时钟树情况,然后设定时钟树综合约束,最大扇出等信息。
学新通

2、设定优化选线,进行时钟树综合,在做post-DC阶段的place
学新通

3、在做post-place阶段的时钟树优化,检查时序,最后报告时序。Post-place的时序报告其中部分为:
学新通

4、布线

1、先布时钟信号线,指定只布时钟信号:
学新通

2、布时钟信号后设置时序、优化选项等,布标准单元
3、布线后进行检查和修复,设定检查次数为20次
4、在布线后进行优化时钟树
学新通

5、完成布线后的版图为:
学新通

5、DFM

1、检查和修复天线效应。加载ANT文件:
学新通

设定优化选项,并设定检查修复次数为20次:
学新通

2、添加core filler并重新连接一次PG环。
学新通

3、进行过孔优化:
学新通

4、添加label和wire track
学新通
学新通

5、做完DFM的版图为:
学新通

6、导出数据

导出网表用于后仿真、LVS等,导出GDSII用于流片,SPEF文件用于PT时序分析,SDF文件用于后仿真。
  学新通

四、版图后仿真以及形式验证

1、后仿真

1、对Astro生成的网表进行仿真,即对cpu_ASIC.lvs.vg、smic18IO_line.v、smic18.v进行仿真。
学新通

2、在tb中加入sdf时序相关文件:
学新通

3、仿真之后查看波形:
学新通

波形与RTL级仿真,DC门级网表仿真基本一致,后仿真通过。

2、FM形式验证

1、我们进行DC生成的网表与Astro生成的网表进行验证,验证方式与RTL和DC形式验证相似。仿真脚本为:

#设置顶层文件
set TOP_MODULE cpu_ASIC
#设置搜索目录
set	search_path	"$search_path "
set 	synopsys_auto_setup 	true
#读入库文件
read_db "lib/SMIC18_Ver2.5/FEView_STDIO/STD/Synopsys/smic18_tt.db lib/SMIC18_Ver2.5/FEView_STDIO/IO/Synopsys/smic18IO_line_tt.db"
#读入参考设计并设置顶层文件
read_verilog -r "${postDCDir}/${TOP_MODULE}.vg"
set_top ${TOP_MODULE}
#读入实现的设计并设置顶层文件
read_verilog -i "${postAPRDir}/${TOP_MODULE}.lvs.vg"
set_top ${TOP_MODULE}
#进行验证
match
if [ verify ] {
	date
	exit
} else {
  	diagnose
        report_unmatched
        report_failing
        report_error_candidates
}
学新通

2、形式验证的结果如下,可见设计通过了验证
学新通

五、物理验证

1、环境资源准备

1、拷贝“SmicVTTF_LO_SRAM_MR_MM_HV_LC_018.tf” display.drf 到layout目录
2、新建cds.lib文件,内容为:

INCLUDE $CDSHOME/share/cdssetup/cds.lib    //包含原有cds.lib内容
DEFINE SMIC18IOLIB_L_M6 SMIC18IOLIB_L_M6//加入IO库和标准单元库
DEFINE SMIC18STDLIBM6 SMIC18STDLIBM6
DEFINE mytools mytools            //加入自己的库
DEFINE logo logo               //加入自己的logo
DEFINE avTech /opt/cadence/assura/tools/assura/etc/avtech/avTech
DEFINE design_lib_cpu_ASIC design_lib_cpu_ASIC        //加载自己的设计
DEFINE design_lib_cpu_ASIC /home/class/user29/CPU_make/Astro/design_lib_cpu_ASIC

3、配置快捷键、Calibre等
学新通

4、标准库、IO库导入ic5141
学新通
学新通

5、将设计导入ic5141(stream_in_cpu_ASIC要在原有模板上修改)
学新通

6、打开设计库
学新通

2、LVS检查

1、为电源PAD添加label:
学新通

2、生成spi文件
学新通

3、运行LVS,由下图结果可知,LVS通过。
学新通
学新通

3、ANT检查

通过Calibre进行检查,由下图可知ANT检查通过,没有ANT错误出现
学新通

4、DRC检查

运行DRC进行检查
学新通
由分析结果可知,DRC大部分通过,只出现了较少个数的DRC问题,需要进行人工修正
学新通
学新通

六、PT时序分析

1、PT简要概述

PT是一个专门用来进行时序分析的工具,使用的步骤常为:
1、read  2、Constraints 3、Exceptions
4、Check 5、Analyze

2、添加约束,运行PT

PT的约束与DC中的时序约束非常相似,PT中只增加了来自Astro产生的“cpu_ASIC.spef”约束相关文件:
学新通

3、查看结果

PT运行产生相关报告的文件:
学新通
时序报告中slack时间为正,满足时序要求,不存在时序违规
学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhiaccih
系列文章
更多 icon
同类精品
更多 icon
继续加载