您的位置 首页 报告

fpga/asic规划入门常识 数字电路规划的使命是什么

fpga/asic设计入门知识 数字电路设计的任务是什么-说到这里入门必须要两个基本功:逻辑电路基础,硬件描述语言。有了这两个基本功,就算你其他都不会也能找到工作,呵呵,或许你会说,现在面试要问fpga,要问时序分析,有那么简单么?其实这些东西在你有了这两个基本功之后,其他的都可以慢慢学习。注意硬件描述语言和逻辑电路的学习可以同步学习,而且要牢记,学习硬件描述语言进步取决于你对电路的理解和你对仿真器的使用。

  首要要知道自己在干什么?数字电路(fpga/asic)规划便是逻辑电路的完结,这姿态说太窄了,由于asic还有不少是模仿的,呵呵。咱们这儿只评论数字电路规划。实践上便是怎样把咱们从讲堂上学到的逻辑电路运用原理图(很少有人用这个拉),或许硬件描绘言语(Verilog/VHDL)来完结,或许你觉得这太简略了,其实再杂乱的规划也便是用逻辑门电路搭起来的。你学习逻辑电路的时分或许会为卡拉图,触发器状况推倒公式而感到利诱,可是其实有一点可以定心的是,实践规划中只需求你懂得接口时序和功用就可以了,用不着那么杂乱得推倒公式,只需你可以用言语把逻辑联系表述清楚就可以了,详细这个逻辑联系选用什么门电路搭的,可以不关怀,归纳东西(synthesis tool)可以帮你处理。当然你要知道根本门电路的功用,比方D触发器,与门,非门,或门等的功用(不说多的,两输入的仍是比较简略的)。---一句话,选用verilog或许VHDL描绘规划方针的逻辑功用,这便是数字电路规划的使命!

  说到这儿入门必需求两个根本功:逻辑电路根底,硬件描绘言语。有了这两个根本功,就算你其他都不会也能找到作业,呵呵,或许你会说,现在面试要问fpga,要问时序剖析,有那么简略么?其实这些东西在你有了这两个根本功之后,其他的都可以渐渐学习。留意硬件描绘言语和逻辑电路的学习可以同步学习,并且要紧记,学习硬件描绘言语前进取决于你对电路的了解和你对仿真器的运用。为什么这姿态说呢?由于硬件描绘言语RTL(寄存器传输级)首要是用来给归纳东西归纳成电路的,所以要满意特定的coding style,这些coding style将对应这特定的逻辑,比方时序电路应该怎样写,组合电路怎样写,这是有必定束缚的,为此若你对逻辑电路比较了解,你就知道自己写代码大体归纳后会选用什么门电路来组成;别的,写代码就要仿真,这是不可以防止的---不仿真,你怎样知道自己写的代码契合规划的要求呢?可以娴熟运用仿真器,你就有了调试代码的根本才能,不然,写再多的代码也没有用。这也是今日我感到振奋的一个要素,现在正在运用vera验证言语,选用类C++的风格,关于习气 verilog的我开端还不习气高档言语的调试环境,定位一个问题得花上一天;可是一旦你可以娴熟运用编译仿真东西之后,你就会发现其实自己的许多主意可以很快的写成代码,并经过调试来前进自己对言语的了解。----学习的前进在于,把自己的主意用言语来完结,并调试验证是否正确。

  学习fpga应该从xilinx和altera器材的下手,这是当今世界最大的两家可编程器材供货商,当然学习fpga应该你具有必定的Verilog的根底。咱们就用xilinx作为比方来解说吧。

fpga/asic规划入门常识 数字电路规划的使命是什么

  fpga的开发流程,首要是归纳,布局布线,生成bit文件,最终下载。

  归纳,可以用synplify,也可以用synopsys的fpga compiler,当然也可以用ISE自带的归纳东西,Mentor也供给fpga开发的东西。作为入门,synplify是一个很好的挑选,榜首,可以了解电路结构,第二,作为入门你可以在synplify的归纳流程中查看自己代码的质量。曾经没有用LEDA做代码QA的时分,我是经常用 synplify作为QA的东西的,当然你得对synplify的归纳战略和归纳陈述比较了解才行。归纳完毕之后生成EDIF文件。

  作为xilinx,第三方的归纳东西可以供给EDIF或许NCF文件,自带的XST归纳东西输出的是NGC,与此一起,咱们或许还会用到xilinx的 core,core文件首要以edn办法存在;有了这些文件咱们就进入implementaTIon阶段,这个阶段分translate,Map,PAR 三大部分,translate是把归纳得到网表和core的网表文件转化为NGD文件,作为Map的输入,Map是把网表文件映射到Xilinx中的根本元件中,如slice,blockram等等,最终PAR也便是place and route,最终就可以生成bit文件了。引荐的书本《FPGA/CPLD规划东西——Xilinx ISE5.x运用详解》,该书对整个规划流程有详细的描绘,还介绍了许多高档技巧,不过关于asic规划人员,除非要做FPGA验证,不然没有必要看这些东西,由于学习FPGA便是一个完好的ASIC规划流程,不像做ASIC那样规划人员还分前端后端,做FPGA触及的将会是许多要素,包含内部结构和板级的调试等等。

  学习fpga除了学习开发流程之外,别的一方面是学习其内部结构。xilinx的fpga的结构介绍如下:根本单元是LUT,由LUT组成SLICE,由 SLICE组成CLB,详细多少个LUT组成SLICE,多少个SLICE组成CLB由不同的器材类型决议,可以参阅datasheet。此外,便是 Block Ram,DLL或许是DCM,还有DSP等。现在盛行SOC,不少高端器材还嵌入了微处理器,有软核有硬核。学习硬件结构最好的入门书本是孟宪元先生的书,尽管时刻有点久了,不过从我看的书来看,只需他才是剖析得最为完全的。现在介绍这方面的书本也多了,不过,有点要提示的,用什么器材看什么器材的 datasheet,没有必要把这个东西当教科书学,查一查就可以了。

  学习fpga有时机买个板子自己写点程序跑一跑,应该是一件挺不错的作业。现在许多宽带通讯运用的fpga规划有Serdes接口,DDR接口之类的,不是特别要求,自己玩,估量也用不上那么杂乱的,写几个状况机或许是UART就可以。

  上回咱们评论了学习逻辑电路和硬件描绘言语的办法。怎样买书,怎样看书。这回咱们评论fpga和asic规划有什么区别。

  fpga现场可编程器材,PLD方面的东西,经过verilog编译成装备文件,加载到fpga中完结特定的功用。其实fpga自身便是一个芯片,仅仅你可以经过编程的办法批改内部逻辑衔接和装备完结自己想要的功用。

  asic专用集成芯片,是针对特定运用规划的芯片。完结asic,就如从一张白纸开端,你得有代码,之后归纳,之后布局,布线,得到GDSII后去流片。fpga器材也是经过这个流程过来的,不过他应该算一个通用器材,就如cpu,可以在许多状况下运用,不像mp3芯片,它就只能播映mp3,所以只能称为专用芯片。不管通用仍是专用,都有差不多的流程,留意上面说的是半定制的数字集成芯片的流程。作为模仿,还有一些特别的全定制芯片,一般都是从地图开端的。

  速度:相同的工艺和规划,在fpga上的速度应该比asic跑得慢。为什么呢?由于fpga内部是依据通用的结构,也便是LUT(look up table),它可以完结加法器,组合逻辑等等,而asic,一般你加法器便是加法器,而比较器便是比较器,fpga结构上的通用性必定导致冗余;别的,作为fpga根本单元是LUT(LUT组成SLICE,SLICE组成CLB--这是xilinx的结构),为此大的规划假设一个LUT完结不了,就得用两个LUT,一个SLICE完结不了就要用CLB,不同结构处于特定的方位,信号之间的互联,导致的wire delay是不行疏忽的一部分。而关于asic来说没有结构上的束缚,并且关于特定的实践可以在空间上靠得很近,相对之下wire delay和cell delay都应该比fpga小。当然LUT中也有DFF,作为高速的规划一般都会在一个简略的组合逻辑操作之后打一拍,再做下一步的处理。

  面积:从上面上看,fpga相关于asic来说仍是大许多的。要是你知道自己的手机基带芯片是一个fpga做的,你必定会气死。n大一个fpga,想让你放到口袋里边估量仍是有困难。

  功耗:也是显着的东西,fpga功耗比asic要大。

  以上都是依据相同制作工艺和规划的条件下比较的。从别的一个旁边面看,也便是开发速度和流程上看,fpga开发简略,asic开发流程长危险大。

  fpga除了代码之外,从归纳到布局布线生成装备文件都是经过软件主动发生的,当然可以有必定的束缚。可是,你要知道,你仅仅在一个房子里边画画,这个房子便是现成的fpga。画得不满意,你搽掉,再画一个。不会对房子有多大影响-只需你不把fpga烧掉。

  asic规划,你不只要关怀代码,并且你要关怀时序,关怀规划契合DFT的要求,关怀layout,关怀SI。。。。。。就适当于你什么都没有,现在房子要由你来盖,盖多大(floorplan),要怎样盖,电源线怎样走,水管怎样规划,门开在那个方向等等的东西。一旦房子盖好了,你觉得不满意?你就得拆掉,某一个缺点都影响这个房子。你想画画,可以,你得画得好,画欠好就不能改了。由于asic不是可编程的fpga,内部结构一旦流片后就承认下来了。 bugs是asic中丧命的东西!

  关于费用来说,fpga贵在单片,开发东西和危险根本不存在。关于asic贵在流片的费用和开发东西,NRE费用跟着工艺的前进变适当贵,除非你的芯片一次成功用够量产,不然单片费用将其贵无比!你想想留一次片50W,给你拿回来100颗样片,都是bugs。一片多少钱啊??!!

  开发周期,fpga6个月,asic一年。若是一个规划人员说自己一年之内tapout了4-5个片子,估量他也仅仅做做归纳或许后端。从规划到验证完毕是一段绵长的时刻,一旦验证开端完结,RTL2GDSII的进程是很快的。

  asic规划入门(前端)

  asic规划前后端是怎样分的呢?asic规划的前后端就如FPGA规划的ImplementaTIon之前之后(Xilinx)的区别,前端担任归纳网表之前的一切作业,而后端担任Netlist到GDSII的进程。留意这也不是必定的,现在前端也可以用Physical Compiler做一些后端做的作业(物理归纳),随殴ひ盏姆⒄梗昂蠖说姆纸庀咴嚼丛侥:恕5比籄SIC的前端还考虑到许多关于Power,DFT等等方面要素;后端呢,在这儿大略介绍一下,Floorplan,地图规划,首要指Macro的放置还有PG ring等的规划;Place-布局,首要指standard cell的放置;Route,布线;其间还触及到DFT,DRC,LVS还有STA。这些东西了解一下就可以了。

  ASIC前端规划入门,这个流程幸亏没有忘掉。不像FPGA那样(和器材联系太多),数字前端都应该是相同的。

  1 体系规划需求剖析----拟定SpecificaTIon

  2 模块区分-----依据SecificaTIon,开端区分模块,详细到接口时序和功用,最终书写详细规划文档。

  3 模块编码输入----留意契合Coding Style

  4 模块级仿真验证---行掩盖率应该到达99%(default句子是掩盖不到的)

  5 体系集成和体系仿真验证----验证渠道应该在Specification承认之后和代码编写并行进行。

  6 归纳----得到网表

  7 STA-----验证时序

  8 办法验证--验证网表和RTL的等效性

  若是Netlist2GDSII的话这些就应该可以了,象DFT之类的估量后端人员都可以协助你完结。看起来挺简略的,其实花时刻最多的仍是在前面,也便是归纳之前的进程是最费时刻的,包含拟定Specification,模块级的详细规划计划还有验证,一旦得到一个goden RTL,从RTL到GDSII是很快的。所谓garbage in garbage out,到了归纳之后的进程根本上不是对功用的批改,而是依照特定功用的完结,所以一个好的RTL是十分重要的。

  在体系规划方面,复位,时钟计划是最重要的要素,其次是DFT;在模块编码的时分便是要留意这些要求了,比方不要内部私自生成时钟和复位信号,防止呈现不必要的latch等等。模块级验证应该是体系验证要害部分,本来咱们做TDSCDMA手机终端芯片的时分,Viterbi验证的是好几个进程组成的,在模块级就验证做得十分完善,后来体系验证,FPGA验证到最终tapout回来都没有问题。当然咱们都关怀归纳怎样处理,STA怎样处理,办法验证怎样完结,由于这几个进程不是一切人都可以触摸的,究竟这些东西都价格不菲;一个公司可以随意找几个人一同开发FPGA,可是说要随意找几个人做ASIC,估量 Tool的费用就要砸掉好几百W--这儿指的是商用软件,假设你说其实D版的也可以用,^_^ 那就算你用了,流片的费用也不少啊。

  下面我就一部分一部分给咱们介绍asic前端规划的各个部分。

  在没有介绍归纳之后的流程之前,我先介绍一下从体系规划到归纳前的流程,前面FPGA和这儿的ASIC在这方面介绍的都不多,在这儿补过,期望对咱们有协助。 体系规划当然是体系人员拟定的,假设你想知道怎样拟定,大体上是体系功用,功用,体系接口,体系的时钟计划,复位计划,DFT计划;体系选用了多少 Memory,是否运用DSP,MCU,架构怎样,最终die size和power大约多大等等;作为一名规划人员大都你会分到一个模块的规划,一般状况下在体系计划拟定好之后便是模块区分了,许多状况下是依据功用来区分;模块区分之后,规划人员会不断评论完结计划和要害问题的处理办法,开端是模块之间的接口,接着是模块内部的完结计划和时序,经过详细的评论之后,这些都要写成详细规划计划。三年前自己的榜首个规划是画了几个图就做规划的,小小的一个东西,没有文档,看草图,做了一个月;在堆集了经历之后,改动了开发流程,也是大公司选用的办法,先写详细规划计划,再写代码;你会发现或许详细计划花了1个月,代码半个月就可以写完了。由于思路理清楚了,写代码当然简略了,千万不要一边写代码,一遍写规划计划,到了最终,问题一个都没有处理,代码改来改去,仍是不能用。

  再之便是调试,现在许多公司都在服务器上写代码,网络衔接速度很慢,愈加不用说调试了。我本来的习气,也是现在的习气便是在本机做规划,榜首书写快,第二仿真快,关于模块规划应该是规划完一个模块就调试一个模块,而不是等体系集成的时分再测验模块。所以仿真调试的速度很重要,而在服务器上用VCS调试小模块,还不如在本机上用Modelsim快。刚入新公司,做模仿规划,人家一个月要完结的规划,我用了两个星期,道理很简略,我有一个代码书写和调试的渠道,十分钟内就可以把一个代码调试n次。当然这个环境也不是咱们都有,都会用,这也是我三年堆集下来的东西^_^

  归纳东西

  榜首节: 什么是归纳呢?synthesis,台湾翻译为-组成,其效果便是将硬件描绘言语的RTL级代码转变为门级网表。当然,现在归纳技能现已很成熟了,还有推出的行为(behavioral)归纳和物理(physical)归纳。咱们这儿评论的是逻辑(logic)归纳。

  归纳技能是前进规划产能的一个很重要的技能,没有归纳技能的开展,咱们就不或许用HDL完结电路的规划,由于HDL开端是用来供电路仿真建模运用的,到了后来才把其间一部分子集作为可归纳的言语,也便是咱们运用的RTL CODE。许多人入门都用HDL做规划,就以为HDL就仅仅用来做规划的,没有看到HDL开端始的一面,所以在验证的时分,就无法用好HDL别的一部分强壮的功用。有时刻仍是可以看看Writing Testbench这本书,增强对HDL言语在验证方面效果的了解,也是前进对HDL知道很好的弥补。

  咱们以DesignCompiler为比方解说归纳的进程。

  首要,归纳就要必需求用归纳库,这个你可以向厂家要,归纳库可以经过.lib这个库文件转变成.db归纳库,这个进程可以在DesignCompiler 里边用完结,归纳库里边有什么内容呢?.db 是无法阅览的,.lib是可以阅览的,里边有库的根本参数的单位,库运转的条件,各种参数,最重要的是两个部分,一个是WLM-Wire Load Model,一个Gate的界说(输入输出,功用,时序参数,面积等等);这仅仅StandarCell的库,别的还有其他库,如RAM,DSP的归纳库,都以.db的办法存在。

  归纳需求三种输入,一个是代码,一个是归纳库,一个是归纳脚本script。归纳脚本首要包含了一下内容,对归纳东西环境的装备,对归纳方针外部环境的设置(operation condiction),对WLD的设置,对归纳方针的时序的束缚,归纳战略,归纳优化,归纳陈述和输出。下面给入门的人一个现成的script比方。(tcl script)

  ####### Set Directary #########

  set LIB typical

  set SYNDIR $HOME

  set SRCDIR $HOME/src

  set SCRDIR $HOME/script

  set RPTDIR $HOME/rpt

  set SYNDB $HOME/db

  set SYNOPSYS “/cad/synopsys/”

  ######Enviroment############

  define_design_lib WORK -path $SYNDIR/WORK

  set bus_naming_style %s_%d

  set verilogout_single_bit “false”

  set hdlin_enable_vpp “true”

  set hdlin_enable_vpp “true”

  set verilogout_no_tri “true”

  set write_name_nets_same_as_ports “true”

  set compile_preserve_sync_resets “true”

  set ultra_optimization true

  set verilogout_equation false

  set verilogout_no_tri true

  set sdc_write_unambiguous_names false

  ######Libary#################

  set synopsys_path “$SYNOPSYS/libraries/syn \\

  $SYNOPSYS/dw/sim_ver”

  set standarcell_path “*”

  set search_path “$search_path \\

  $synopsys_path \\

  $standarcell_path”

  set target_library “typical.db”

  set symbol_library “*”

  set synthetic_library “dw_foundation.sldb”

  set link_library “* $target_library dw_foundation.sldb”

  ######Read Design#############

  analyze -format verilog -lib WORK [list *] 》 $RPTDIR/analyze.rpt

  elaborate designtop -lib WORK -gate_clock 》 $RPTDIR/elaborate.rpt

  write -format db -hier -modified -output $SYNDB/$TOPMODULE.rtl.db

  current_design $TOPMODULE

  #######Set INTERFACE ENV#########

  set_drive 10 [all_inputs]

  set_fanout_load 10 [all_outputs]

  ######Timing Exceptions#######

  set_false_path -from rst_

  uniquify

  link

  ########Set Clock#############

  create_clock -name CLK -p $PERIOD [get_ports clk] -waveform {0, 5}

  set_clock_uncertainty 0.3 CLK

  set_input_delay 3 -clock CLK [all_inputs]

  set_output_delay 3 -clock CLK [all_outputs]

  set_dont_touch clk

  #######Compile Option############

  compile -map_effort medium 》 $RPTDIR/compile.rpt

  #######Report####################

  report_timing 》 $RPTDIR/report_timing.rpt

  report_area 》 $RPTDIR/area.rpt

  #######Result####################

  write -format db -hier -o $SYNDB/*.db

  write -format verilog -hier -o $SYNDB/*.v

  write_sdf -version 2.1 $SRCDIR/。。/netlist/*.sdf

  write_constraints -cover_design -format sdf-v2.1 -output *.syn.sdf

  write_script -hier -out $SCRDIR/*.sdc

  这是一个十分完善的script 结构(仅供参阅,这仅仅一个架构,详细语法或许还需弥补和批改,不行随意运用在研发上,面得你花许多时刻去调试脚本),运用于RTL2Netlist的归纳,当然PAR之后的归纳必定不是这姿态写的,其间原因主张咱们看看《《advance chip synthesis》》。往后有空我再把script各个部分做详细见地,今日就写到这儿。哎,写了那么多了,便是没有人助威啊!^_^

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

  第二节,归纳概述

  归纳技能的研讨可以追溯到20世纪60年代,IBM公司T.J.Watson研讨中心开发 ALERT体系,将寄存器传输级算法描绘转化成逻辑级的结构完结;20世纪70年代,归纳技能开展迅速,但首要致力于较低层次的逻辑归纳和地图归纳;20 世纪80年代中期,专用集成电路的广泛运用,要求芯片规划大规划、高功用、短周期,大大推动了从算法级规划描速向寄存器传输级规划描绘转化的高层次归纳技能。

  逻辑归纳概念

  逻辑归纳担任将寄存器传输级的结构描绘转化为逻辑层的结构描绘,以及将逻辑层的结构描绘转化为电路的结构描绘。在数字IC规划范畴常用的EDA归纳东西中,最威望的要算Synopsys公司供给的归纳东西。Synopsys公司供给的Design Compiler(DC)是业界盛行的、功用强壮的逻辑归纳东西。用户只需求输入规划标准的HDL描绘和时刻束缚,就或许得到较为优化的门级归纳网表。此外,DC还集成了功用强壮的静态时序剖析引擎,并支撑与后端布局布线东西交互作业。

  逻辑归纳的流程

  从某种意义而言,归纳便是将规划的HDL描速转化为门级网表的进程。Synopsys公司供给的归纳东西DC把归纳分为三个进程进行:synthesis=translation+mapping+optimization。 Translation是指把规划的HDL描绘转化为GTECH库元件组成的逻辑电路;GTECH库是Synopsys公司供给的通用的、独立于工艺的元件库。Mapping是指将GTECH库元件映射到某一特定的半导体工艺库上,此刻的电路网表包含了相关的工艺参数。Optimization是依据规划者设定的时延、面积、线负载模型等归纳束缚条件对电路网表进一步优化的进程。从归纳东西的运用流程来看,归纳包含归纳环境的设置,归纳束缚,归纳优化,归纳与后端流程等。

  归纳束缚用来设定电路归纳的方针,它包含规划环境束缚、时刻束缚和面积束缚。

  规划环境束缚指的是用来描绘规划在作业时的温度、电压、驱动、负载等外部条件的一系列特色。根本的环境设置内容包含作业条件、负载模型、体系接口驱动或扇出才能等设置。这些特色束缚在电路归纳时是有必要的,假如用户没有进行显现的阐明,则DC在归纳的时分会选用默许值。

  时刻束缚内容包含界说时钟、界说时钟网络的时刻束缚和时序途径时刻束缚设定,以及非同步规划的时刻束缚等。了解推迟的核算是界说恰如其分的时刻束缚的要害。Synopsys公司支撑几种推迟模型:一是CMOS通用的推迟模型,二是CMOS分段的线性推迟模型,三是非线性的查表推迟模型。深亚微米的规划,前两种模型并不常用,非线性的推迟模型以输入的迁越时刻和输出电容负载为参变量核算推迟的时刻值,其成果以表格的办法列出供DC查找。

  面积束缚和时刻束缚之间是一对对立且需求折中的联系,DC归纳默许为时刻束缚比面积束缚具有更高的优先级。DC优化时默许不进行面积优化,假如你重视于芯片的面积,可以运用set_max_area指令设定面积的束缚,使得DC完结时序束缚之后继续进行面积优化。

  在设定归纳束缚之后,一般并不立刻进行归纳优化。由于关于一个较大的规划来说,归纳一次时刻很长。因而,归纳前承认归纳束缚指令是否正确添加到规划中时很有必要的,可以削减由于归纳束缚不正确从头归纳优化的危险,削减归纳重复的时刻。查看归纳束缚设置的指令有report_design, report_port –verbose, report_clock [-skew], report_constraints, report_timimg_requirement等。

  许多地图东西只承受Verilog或EDIF格局的归纳网表作为输入。在归纳后供给Verilog格局的网表送给后端的地图东西,IC工程师还有必要对归纳的网表做好一下处理:

  1.完全处理屡次例化同一子模块的问题

  2.批改规划中部分连线的命名以简化归纳网表

  3.删去整个规划中悬空的端口

  4.确保每个实例化单元的引脚都是可见的

  5.防止网表中存在assign句子、传输门和三态连线的界说

  6.防止网表中存在不必要的门控时钟或门控复位信号

  7.防止网表中引证的实例化名不存在对应的完结逻辑

  在归纳之后,咱们还得对归纳后的网表进行门级仿真,在门级仿真上Synopsys公司供给的VCS仿真东西在服务器上运转的速度是比较快的。门级仿真进程中还有一步便是带时序反标的时序仿真,经过DC或许PT写出SDF文件,在网表中将逻辑推迟和线推迟反标入电路中,模仿愈加实在的状况。

  功用仿真及验证

  验证的意图视为了确保规划完结供给的功用特性是正确的,是与规划规范中界说的功用特性坚持共同。验证的意图在于证明规划没有过错。可是事实上验证只能证明某些规划过错存在或许不存在,验证是一个穷举规划中或许存在的过错的进程。业界中存在着适当度的验证手法和验证的战略,其间首要的验证手法可以大略地区分为功用仿真技能、静态时序剖析技能、办法验证技能等。

  功用仿真与调试

  功用仿真是规划验证的首要办法。从仿真的笼统层次来看,包含依据事情(event based)的仿真,依据时钟周期(cycle based)的仿真,依据业务买卖(tansaction based)的仿真。

  依据事情的仿真器把输入鼓励的改动以为是事情的触发,每一个仿真时刻仿真器处理一个事情触发,依据事情触发的内容对整个规划从头核算直到一个仿真稳态呈现停止。

  依据事情触发的仿真特色是一起掩盖了规划的功用和时序模型,仿真成果准确,它十分简单探测到规划中的毛刺电路,特别适用于异步电路的仿真。

  依据时钟周期的仿真在一个时钟周期那没有时刻的概念,它只在时钟的上升沿或下降沿进行触发,每一个时钟周期的时刻对电路核算一次。

  依据业务买卖的仿真以数据包、图形、语音等方针作为直接的仿真鼓励而不在是添加到规划引脚的鼓励波形。

  功用验证的办法首要有三种:黑盒法、白盒法和灰盒法。

  架构测验环境在软件仿真进程称作“writing testbenches”。Testbench通常是指这样的代码,它对规划进行恰当的装备、发生测验鼓励盒有挑选性地调查地呼应。Testbench一般用硬件描绘言语Verilog HDL或VHDL完结,也可以包含C言语或许C++言语发生地鼓励数据加上PLI,现在业界还有专门地验证言语Vera和Specman E。

  往后有空再跟咱们介绍一下Modelsim和VCS:)

  静态时序剖析

  静态时序剖析简称STA(Static Timming Analysis),它供给了一种针对大规划门级电路进行时序验证的有用办法。它指需求更具电路网表的拓扑,就可以查看电路规划中一切途径的时序特性,测验电路的掩盖率理论上可以到达100%,然后确保时序验证的齐备性;一起由于不需求测验向量,所以STA验证所需时刻远小于门级仿真时刻。可是,静态时序剖析也有自己的缺点,它无法验证电路功用的正确性,所以这一点有必要由RTL级的功用仿真来确保,门级网表功用的正确功用够用门级仿真技能,也可以用后边讲到的办法验证技能。值得留意的是,静态时序剖析只能有用地验证同步时序的正确性,关于大部分规划重或许包含地异步电路的时序验证,则有必要经过门级仿真来确保其时序的正确性。由此咱们可以得出这姿态的定论:静态时序剖析和门级时序仿真是从不同的偏重点来剖析电路以确保电路的时序正确,它们是相得益彰的。

  Synopsys公司的Prime time时序剖析的东西,对规划电路进行以下几种剖析:

  1.从首要的输入端口到电路中一切触发器

  2.从触发器到触发器

  3.从触发器到首要输出端口

  4.从首要的输出端口到首要的输出端口

  静态时序剖析东西把整个规划电路打散成上述四种类型的时序途径,剖析不同途径的时序信息,得到树立时刻和坚持时刻的核算成果。当然还有别的几条途径:如gated clock,DFF复位端的,详细可以拜见PrimeTime的手册。

  STA入门比较好的文章,也是5life转载过来的http://techcenter.dicder.com/data/2006/0114/article_102.htm

  办法验证

  办法验证是一种静态的验证手法,它依据电路静态地判别两个规划在功用上是否等价,常用来判别一个规划在批改前和批改后其功用是否坚持共同。它运转时无需测验向量,可是有必要有一个参照规划和一个待验证的规划。参照规划时规划者以为功用上齐备无缺的规划,理论上它可以用高档言语如C,C++完结的,也可以是用集成电路的建模镅詓ystemC,或许验证言语vera或SpecmanE完结的;可是就完结而言,大都办法验证进程中参照规划便是咱们的RTL规划,一般用verilog或VHDL完结的。

  当RTL级功用仿真或FPGA验证完毕后,传统的IC规划流程需求完结一下几回门级仿真:归纳后门级仿真;DFT之后的门级仿真;布局布线之后的门级仿真等,假如规划很大或许电路很杂乱,往往需求巨大的测验向量来验证规划的功用及时序是否正确,这就使得咱们花费在门级仿真的时刻跟着电路规划的增直线上升。

  办法验证在ASIC规划流程中犹如一个迭代算法,其开端的输入是RTL规划,每次比较,都将上一次比较后的规划(第n-1次)作为参照规划处理之后的成果(第n次)进行比较,之所以这么做,是依据以下考虑:

  1.办法验证东西开端比较前,首要在两个规划中找到一一对应的比较点。

  2.假如一个规划改动太大,改动前后的功用是完全共同的,但假如办法验证东西无法找到合适的比较点,也会以为这两个规划不等价

  办法验证在ASIC规划流程中首要运用在以下几个方面:RTL-RTL的比照,RTL-GATE的比照,GATE-GATE的比照。选用办法验证进行 RTL与RTL的比较,可以在较短的时刻内验证并确保代码批改的进程中没有引进功用性的过错;进行RTL与GATE的比照,是验证源代码与归纳之后的门级网表是否等价,以确保归纳进程中不会呈现任何过错;进行GATE与GATE的比照,首要是发生在验证刺进DFT后的电路网表在功用上是否共同;生成时钟树前后的电路网表在功用上是否共同;布局布线前后的电路网表在功用上是否共同等。

  什么是DFT,为什么要做DFT。

  可测验性技能(Design For Testability-DFT)便是企图添加电路中信号的可操控性和可观测性,以便及时经济地测验芯片是否存在物理缺点,运用户拿到杰出的芯片。其间包含Ad Hoc技能和结构化规划技能。现在,任何高集成度IC规划体系都选用结构化规划技能,其间首要扫描技能和内建自测两种技能。一个电路的测验性问题应该包含两个方面:

  1.由外部输入信号来操控电路中的各个节点的电平值,称为可操控性。

  2.从外部输出端观测内部毛病地难易程度,称为可观测性

  扫描技能是指电路中的任一状况移进或移出的才能,其特色使测验数据的串行化。比较常运用的是全扫描技能和鸿沟扫描技能。全扫描技能是将电路中的一切触发器用特别规划的具有扫描功用的触发器替代,使其在测验时链接成一个或几个移位寄存器,这样,电路分成了可以进行别离测验的纯组合电路和移位寄存器,电路中的一切状况可以直接从原始输入和输出端得到操控和调查。这姿态的电路将时序电路的测验生成简化成组合电路的测验生成,由于组合电路的测验生成算法现在现已比较完善,并且在测验主动化生成方面比时序电路的测验生成简单得多,因而大大降低了测验生成的难度。

  关于存储器模块的测验一般由出产厂家供给专门的BIST电路,经过BIST电路可以方便地对存储单元地存取功用进行测验,所谓的BIST电路是指把测验电路做到IC里边,使用测验电路固有的才能自行履行一个测验存储器的程序。别的MBIST还可以处理RAM SHADOW的问题前进芯片的可测验性。

  为什么要做DFT呢?由于咱们的规划,也便是RTL到GDSII交出去的仅仅一个地图,最终芯片需求出产编织是在foundry做的,也便是厂家依据你供给的数据GDSII做成芯片。这个流程进程中或许呈现缺点,这个缺点或许是物理存在的,也或许是规划傍边的遗留问题导致的,别的一方面在封装的进程也或许呈现缺点。为了确保咱们的芯片可以不存在物理上的缺点,所以就要做DFT。也便是说,你交给foundry一个加法器的GDSII,他在做的进程和封装的时分都或许引进缺点;拿到这个加法器芯片你怎样知道,里边的一个与门,厂家给你做的便是一个正常作业的与门呢?你怎样知道厂家做好的加法器的dier在封装之后引脚就能正常输入呢?一句话,便是经过DFT!怎样做DFT呢,便是上面说到的拉。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ceping/baogao/341038.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部