版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、原型验证过程中的ASIC到FPGA的代码转换 在对ASIC设计进行FPGA原型验证时,由物理结构不同,ASIC的代码必须进行一定的转换后才能作为FPGA的输入 现代集成电路设计中,芯片的规模和复杂度正呈指数增加。尤其在ASIC设计流程中,验证和调试所花的时间约占总工期的70%。为了缩短验证周期,在传统的仿真验证的基础上,涌现了许多新的验证手段,如断言验证、覆盖率驱动的验证,以及广泛应用的基于现场可编程器件(FPGA)的原型验证技术。 采用FPGA原型技术验证ASIC设计,首先需要把ASIC设计转化为FPGA设计。但ASIC是基于标准单元库,FPGA
2、则是基于查找表,ASIC和FPGA物理结构上的不同,决定了ASIC代码需要一定的修改才能移植到FPGA上。但应该注意到这只是由于物理结构不同而对代码进行的转换,并不改变其功能,因此对代码的这种修改只能限制在定范围内。 基本原理 基于FPGA原型验证的流程 由于FPGA的可编程特性,基于FPGA的原型技术已经被广泛采用。和仿真软件相比,FPGA的硬件特性可以让设计运行在较高的频率上,加速仿真。另一方面,可以在ASIC芯片设计前期并行设计外围电路及应用软件,缩短了芯片验证周期。 FPGA原型验证和其他验证方法是不同的,任何一种其他验证方法都是ASIC验证中的一个环节,而FPGA验证却是一个过程。由
3、于FPGA与ASIC在结构,性能上各不相同,ASIC是基于标准单元库,FPGA用的是厂商提供的宏单元模块,因此首先要进行寄存器传输级(RTL)代码的修改。然后进行FPGA器件映射,映射工具根据设置的约束条件对RTL代码进行逻辑优化,并针对选定的FPGA器件的基本单元映射生成网表。接着进行布局布线,生成配置文件和时序报告等信息。当时序能满足约束条件时,就可以利用配置文件进行下载。如果时序不能满足约束,可通过软件报告时序文件来确认关键路径,进行时序优化。可以通过修改约束条件,或者修改RTL代码来满足要求。 需要转换的代码 (1)存储单元 存储单元是必须进行代码转换的,ASIC中的存储单元通常用代工
4、厂所提供的Memory Compiler来定制,它可以生成.gsp、v等文件。v文件只用来做功能仿真,通常不能综合。而最后流片时,只需将标准提供给代工厂。如果直接将ASIC代码中的存储单元作为FPGA的输入,通常综合器是综合不出来的,即使能综合出来,也要花费很长时间,并且资源消耗多、性能不好。而FPGA厂商其实已经提供了经过验证并优化的存储单元。因此存储单元要进行代码转换。 (2)时钟单元 数字电路中,时钟是整个电路最重要,最特殊的信号。在ASIC中,用布局布线工具来放置时钟树,利用代工厂提供的PLL进行时钟设计。FPGA中通常已经配置一定数量的PLL宏单元,并有针对时钟优化的全局时钟网络,一
5、般是经过FPGA的特定全局时钟管脚进入FPGA内部,后经过全局时钟BUF适配到全局时钟网络的,这样的时钟网络可以保证相同的时钟沿到达芯片内部每一个触发器的延迟时间差异是可以忽略不计的。因此时钟单元也是需要进行转换的。 (3)增加流水 由于实现结构上的不同,FPGA器件内部的单元延时远大于ASIC的基本门单元延时。导致在同样设计的情况下,ASIC可以满足其时序,而FPGA有可能无法满足。为了验证的需要,修改ASIC代码实现FPGA原型时,对ASlC实现的流水结构在FPGA实现时需要适当增加流水。比如在一个很长的组合逻辑路径中加入寄存器。如图1所示。 (4)同步设计 在FPGA设计中,同步设计是应
6、该遵循的重要原则。异步设计容易导致电路处于亚稳态,产生毛刺。当从ASIC设计转向FPGA设计时,应该进行仔细的同步。具体体现在主时钟选取、功能模块的统一复位,同步时序电路设计。 在FPGA设计中要使用时钟使能代替门控时钟。在ASIC的设计中,为了减少功耗,使用门控时钟(clockgating),门控时钟的结构如图2所示。当写有效时,数据才写进存储器,那么只有写有效时,寄存器才会发生翻转,这样可以减少功耗。 由于设计的异步特性,对于FPGA来说,使用这种门控时钟容易产生毛刺,导致数据不正确。所以在FPGA设计中,使用有使能信号的电路来替换门控时钟电路。可以在寄存器前面加上MUX来实现时钟使能信号
7、,如图3所示。现在的FPGA厂商则提供可以直接有使能,同步SET和RESET引脚的寄存2S,如图4所示。 (5)充分利用FPGA中已有的IP核 FPGA厂商及第三方厂商已经实现井优化了很多典型的IP核,例如Xilinx提供了基础逻辑、总线接口与I/O、视频与图像处理、数字信号处理、存储器接口、微处理器、控制器等大量IP核。在代码转换时可以充分利用这些资源,对代码进行优化来提高设计性能。如在FPGA中使用SRL实现移位寄存器,用三态Buffer来替换三态总线和三态MUX,改进算术单元和有限状态机的编码。 代码转换的实现 结合同济大学微电子中心的“32位高性能嵌入式CPU开发”项目,为了在流片之前
8、确保功能的可靠性,对32位全定制高性能嵌入式CPU bc320进行了原型验证。 设计采用Memec Design公司的FFll52开发板。该板使用了Xilinx的Virtexn Pro系列芯片中的XC2VP30。该FPGA拥有30 816个逻辑单元,相当于有30多万的ASCI门。另有2Mb的片上Block RAM,644个I/O口。采用了Xilinx的全自动,完整的集成设计环境ISE 7.li进行FPGA综合使用的工具是Synplify Pro。 用bc320的ASIC RTL代码作为FPGA的输入,具体的代码转换如下。 存储单元 设计中用到了很多SRAM,例如Ieache中的SRAM。在FP
9、GA实现时根据所需RAM的宽度,深度和功能来决定采用哪种单元来进行替换。Xilinx提供了片外RAM、Block RAM和LUTRAM。 ISE提供了两种具体的实现方法:IP生成器(Core Generator)和语言模板(Language Templates)。IP生成器是Xilinx FPGA设计中的一个重要设计输入工具,它提供了大量Xilinx和第三方公司设计的成熟高效IP核。 这里是用Core Generator来产生了名为块存储器(BlockMemory)的单口存 储器模块。Core Generator用图形化设置参数的方式来提供块存储器,其界面如图5所示。块存储器的大小根据向量的大
10、小来制定,一个普通单元向量只需要4个512 x 32bit的块存储器就够了。Core Generator产生块存储器时,除了参数设置外,还需要输入一个为.coo的文件来初始化块存储器的内容。CoreGenerator产生的文件同时考虑了后端执行和仿真两方面,主要有三个文件:file.v,file.mif,file.edn。其中.v文件为Verilog格式的SRAM仿真模型:.mil文件为作为其初始化内容,其内容和.coe文件里的具体向量内容是一致的,而实际后端文件为.edn,包含了块存储器的全部信息。 Language Templates主要利用Xilinx的块存储器元件库,直接进行调用。xc
11、avP30内部的单口块存储器型号主要有:16k x lbit、比x 16bit,2kx 8bit、4kx4bit、512x32bit、8kx2bit。可以根据自己的需要随意调用这些模块,在RTL代码中实例化,并把SRAM初始值作为参数传递进去。这些模块在Synplify Pro中根据选定的FPGA型号被自动识别,然后综合成统一的.edn文件,再进行后续操作。语言模板方式的灵活性比较强,可以设置多个不同位宽,不同深度的块存储器,仿真也比较方便,但是参数设定时,SRAM初始值的设置比较麻烦。 另外,Xilinx提供工具Dataamem,它可以每次只改变FPGA中块存储器的内容,而不需将整个设计重新
12、翻译,映射和布局布线,为大量的向量验证节约了时间。 时钟单元 在bc320设计中,CPU内核通过SYSAD接口与外部SRAM连接。这些外部SRAM的时钟和主时钟是不一致的,在ASIC中,用一个PLL来实现,这个PLL模块是无法用Synplify Pro综合的,在FPGA上必须将它用Xilinx的数字时钟管理模块(DCM)来替换。同样可以利用Core Generator和LanguageTemplates这两种方法。 利用Core Generator产生mydcm.v文件来代替原先的PLLGL500.v,代码如下。第二段代码是修改后的代码。 module PLLOS500(PLLK, PLLM,
13、 PLLN, PLLPD, PLLTST, RESET, X1N, CLKOUT, TSTOUT), module mydcm(CLKIN1N, RST_IN, CLKFX_OUT, CLKIN-IBUFG-OUT, LOCKED_OUT): 时钟使能带代替门控时钟 把实现门控时钟信号转换成实现使能信号,例如信号PCEPL,代码如下。第二段代码是修改后的代码。 module(out,in,CLK,PCEPL), always(CLK or PCEPL) assign PCEPLV =PCEPL&clk; always(posedge PCEPLV) begin out<=in;
14、end endmodule module(out,in,CLK,PCEPL), always(posedge CLK) begin if(PCEPL) out<=in, else out<=out end endmodule 外部器件配置单元和顶层封装 在FFll52开发板上集成了很多接口和器件,在原型验证时,可以充分利用这些接口和器件做为和设计的交互环境。这些接口和器件需要正确配置后才能正常工作,这部分配置工作可以用FPGA实现。 设计增加了LCD接口单元、内部记分牌(scoreboard)模块和通用异步串行接收发送(UART)模块。作为保存向量内容的SRAM设定好后,可以用同样的方法将寄存器参考值也保存在另外的块存储器中。然后运行CPU,将CPU实际产生的寄存器值和已保存过的参考值在记分牌模块中进行实时比较,然后将结果输出到LCD显示屏上。 为了便于代码的管理和维护,可以对原RTL代码进行一定的封装。将原ASIC流程的代码单独封装在一个模块中,再和FPGA实现时添加的片外配置控制单元的代码一起形成新的FPGA实现顶层。 所以在ASIC代码的基础上增加了对这几个器件完成配置工作的代码部分。 为了原型系统获得更高的性能,还可以对其他一些模块的代码进行适当的改进,如算术单元和状态机的编码风格等。但对于全
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 防疫期间个人先进事迹(7篇)
- 赴企业调研报告8篇
- 游峨眉山的心得(31篇)
- 手机市场调查报告
- 心理健康教育的活动总结范文
- 消防年度工作总结15篇
- 情深意重,感恩演讲稿300字(3篇)
- 知识竞赛活动领导讲话稿
- 幼儿园卫生保健秋季传染病活动方案
- 2022年购物中心七夕节促销活动方案(7篇)
- 篆刻体验活动问印社宣传PPt解析课件
- 小学生数学思维品质的调查研究的开题报告
- 苏教版三年级数学上册《笔算两、三位数除以一位数》评课稿
- 服务机器人人工智能训练师技术应用题库学生组(附答案)
- GB/T 7702.7-2023煤质颗粒活性炭试验方法第7部分:碘吸附值的测定
- 中国历史的教训-习骅
- 抗痉挛体位专题知识讲座
- 水泥企业物料盘点及平衡管理制度
- 广东省3证书高职高考语文试卷和答案
- 茶多酚性质功效及应用
- 企业生产制造部门预算编制模板
评论
0/150
提交评论