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

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

日志

【原创】ASIC/FPGA随笔

已有 2451 次阅读| 2009-2-27 14:19 |个人分类:FPGA

Bruce Zhan

个人空间:http://www.socvista.com/?uid/260

http://brucezhan.spaces.eepw.com.cn/spacemanage

http://www.eetop.cn/blog/?7952/spacelist-bbs.html

邮件:zhanbin.dsp@gmail.com

2009-2-26

Version 1-0-0

History:

Version 1-0-0, released initiailly


(0) 逻辑设计基本思想

ü         逻辑表达式:yout = F(xin1, xin2, ... )

ü         乘积项表达:例子

上图的逻辑表达为:f=(A+B)*C*(!D)

转化为乘积项表达为:f=A*C*!D + B*C*!D

 

ü         设计对象:组合逻辑,时序逻辑

ü         设计思想:Data path + State Machine,高阶段还需要有同IC一样的时序分析思想

ü         设计手段:高层次语言(架构描述语言,状态机输入,c语言输入),硬件语言,电路图

ü         验证手段:仿真,仿真的基本思想,Delta延迟步

ü         c程序开发主要的思想区别

 

 

(1) FPGA/CPLD基本思想及与芯片设计Flow的区别

ü         FPGA/CPLD结构,

²        基于门阵列

 

²        基于RAM

²        其他

 

ü         IC区别

²        时钟树固定

²        资源数量/种类(乘法器,memory),位置固定;资源使用效率不同

²        用途,成本

 

ü         开发FlowIC区别

²        总的步骤基本一样(工具不同);但是根据FPGA的特点,除非特殊情况,在仿真阶段不会对FPGAPC simulationIC的那么严格

²        设计输入形式有更多的选择(chdl,原理图,状态机)

²        仿真形式有更多选择(画波形,写testbench

²        系统级的验证任务比较重(软,硬,逻辑设计结合)

²        IC设计的库的选择不同

²        RTL设计风格有所区别

²        IC设计的时序有所不同(FPGA验证着重逻辑的功能和系统验证,而非与芯片要求真实的时序)

 

ü         IC共同点

²        都有自己的methodology(工具链组合,signoff的条件)

²        平台建设(平台的内涵不同),自动化与效率

²        门级仿真难(速度慢,信号不好观察)

 

ü         FPGA验证的局限性

²        无法反映芯片的时序问题

²        规模有限,可能无法放下整个设计

²        速度有限,可能无法进行实时系统验证

²         

 

ü          

 

(2) 设计手段

ü         原理图,适合建立基本硬件概念(从学习角度用)和简单设计

ü         硬件语言(基本手段)

ü         C(算法建模验证)

ü         在做IC验证时,最主要的是,要了解ICFPGA所使用的不同的库,了解差别;另外就是要注意代码的风格

ü         Lint工具,最好ICFPGA能使用同样风格的RTLlint设置

ü         多种工具组合使用,例如synplicitylint,综合)+ quartus(布局布线)+ ncverilog + formality(一致性检查)

 

(3) 验证手段

ü         RTL仿真(与IC flow不同的是,使用FPGA的库做RTL仿真)

ü         综合后仿真。使用综合工具(quartussynplicity)综合生成的.vqm netlist文件仿真(较难debug

ü         Gate level仿真。用布局布线工具(quartus)生成的.vo文件仿真(较慢,难debug

ü         反标的gate level仿真。用布局布线工具(quartus)生成的.vo.sdo文件配合仿真(很慢,难debug

ü         对于难debug的问题,解决,

²        借助一些工具,例如qutarussignaltap,能够在一定程度的RTL级插入,保证要观察的信号能够在gate level保持住。

²        写一个通用的debug逻辑插入脚本。基本思想是,把要debug的信号,在RTL级别全部引到顶层模块的port。因为最深入的模块的内层要观察的信号要一层一层逐级引出,手动修改比较麻烦,所以要用脚本的方法。我不知道这个类似思想,是否有现成工具可以使用

²        跟上一个方法类似,但不用扩展模块的port,用module.inst.inst0.signal的方法饮用底层要观察的信号,但很多综合布局不支持(象quartus工具顶多支持引用两级深度)

²        其他办法(?)

 

ü          

 

(4) 主要工具

ü         设计输入

²        Quartus

²        Ultraedit

²        Vim

²        Synplicity

²        Modelsim

²        Visual c++/GNU (systemc)

 

ü         代码检查

²        nLint

²        synplicity

 

ü         仿真

²        Modelsim

²        Ncverilog

²        QuestaSim

 

ü         综合

²        Quartus

²        Synplicity

²        Fpga advantage

²        Presision

²        Catapult c/systemc综合)

²        Celoxica c fpga综合)

²        ConvergenSCsystemC综合)

 

ü         布局布线

²        quartus

 

ü         时序分析

²        Primetime

²        Quartus


点赞

评论 (0 个评论)

facelist

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

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

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 1

    粉丝
  • 0

    好友
  • 0

    获赞
  • 1

    评论
  • 365

    访问数
关闭

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

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

GMT+8, 2024-11-16 12:21 , Processed in 0.030459 second(s), 11 queries , Gzip On, Redis On.

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