【知乎】verilog相关知识杂谈
2016-05-07 22:57
405 查看
如何才能看到verilog,就知道综合出来的电路呢?
就是一看到verilog 就知道被综合成什么电路,通过什么方法训练多久能达到这样的水平?或者至少一些基本的电路能看出来,各位有资料推荐吗?作者:Podes
链接:https://www.zhihu.com/question/27579255/answer/39585837
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
不看代码都知道,一定是:组合逻辑+时序逻辑。
例外:没有电路概念或者基础的初级ICer偶尔会出现组合逻辑环或者不期望的锁存器的情况。这些错误工具都可以帮你找出来。
你可能要说,这不是屁话么?不是屁话,IC前端工程师绝大多数情况下只关心到这个层次。
例外:全定制设计或者模拟/RF工程师写的很小电路,可能会需要更深入,组合逻辑内部结构会影响速度。
IC前端工程师需要关注的是面积,速度和功耗这些因素。因为你的老大不会让你设计一个模块而无任何约束。一般情况下,代码写完了一综合,哦,速度达不到老板的要求,回头重改! 改了之后,哦,面积又不行了,再改!
折腾久了,你在啪啦啪啦敲代码的同时,内心就会多一双眼睛。我搞这么大这么复杂的一个组合逻辑,会不会速度起不来啊? 我把逻辑拆分这么细,随手就定义一个64bit的寄存器,会不会面积超过预算? 这部分逻辑信号是否可以在idle时约束到固定值,节省动态功耗?
==========================================================
菜鸟到码神的进阶之路
==========================================================
心中无电路,代码无电路
这个估计就是第一天学硬件描述语言的情形。或者是一个软件专业的工程师转行来做电路设计时的窘态。
建议:好好上课,认真听讲吧。
心中有电路,代码无电路
我想设计一个交通灯控制逻辑,逻辑关系图都画好了,脑袋里已经把各个转换条件都想通透了,但就是不知道代码怎么下手哇。这是没有掌握语言工具的情形。
建议:死磕语言语法。
心中有电路,代码有电路
刚毕业加入职场,上级分配一些小规模的模块给你。这怎么搞哇,脑容量不够,无法完整地想象出电路的结构。好吧,先在稿纸上研究。三天奋战后,几张A4纸上已经是满满的电路。蓝图绘就,只待转码。这个算是生硬的直译。
建议:多加班,少玩知乎。
心中无电路,代码有电路
经过几年的码农生活历练,收获白发的同时也成IC编码老鸟了。拿到设计需求,花半个小时通读SPEC,就直接开始编码了。语言工具烂熟于胸,文思如泉涌,一切信手拈来。代码一看就有美感,assign,always错落有致,时序层次清晰,组合逻辑大小合适。光看代码就知道这个电路结构。武林高手就此诞生!
建议:多跑主管办公室,涨薪水。
心中无电路,代码无电路
经过多少次将写好的代码推倒重构,经过多少次否定之否定的哲学沉思,你从此走上了码农到码神的修炼之路!
一切数字逻辑,小至1bit的寄存器,大至一个CPU内核,难道不可以归一化为一个FSM?
一个FSM难道不就是一个组合逻辑云后面加一组寄存器做时序定序?
一个组合逻辑云不就是一个算法描述吗?
一个无时序算法描述跟C程序不一样吗?
FSM本质上就是算法描述,跟电路结构无关。从FSM代码去想背后的电路结构毫无意义。
FSM代码就是直观的算法描述,一看就懂,最容易被人懂。
直观的算法描述跟功能SPEC最接近。我可以把文字的spec直接翻译成算法的代码描述!
Okay,既然上升到形而上的高度,你已经是码神了。即便一个带复位和使能的触发器设计,你也有欲望把他写成FSM,而不用always,if-else这种语法结构。这样才是一代码神的风范!
建议:你在这一行的路已经走到头,绝世高手一般都是退隐江湖的。
至此,我们又回到了心中无电路代码无电路的境界,一个循环结束。回到起点你的感觉如何? 开个小饭馆?水吧?或者咖啡店? 反正好歹我是再不干这个了,大家都这样想。
人在江湖,岂能轻易上岸?金盆洗手一般都是痴心妄想!电影里面都是这样描述的。
作者:Forever snow
链接:https://www.zhihu.com/question/27579255/answer/37196173
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
初学者容易有这方面的困惑,但是这个问题的层次还不够深入。尽管VerilogHDL是数字IC入门的基础和工程师的基本技能,但是还是需要掌握一定的知识后才能精通,注意是“精通”。“精通”应该达到什么样的能力呢?
1、看到电路功能需求后知道何种电路结构是最优的。
2、设计出电路结构后,知道如何使用VerilogHDL进行描述。
3、设计电路和使用VerilogHDL 描述的时候能够从性能、面积、功耗、可测性等方面去考虑。
4、能够精确理解“RTL”的含义。VerilogHDL和电路是相通的,看到代码之后能够知道电路结构是怎么样的?包含多少个寄存器?
5、在第4条的基础上,看到VerilogHDL代码后能够大致推断出电路的性能、功耗、面积等,包括关键路径在何处、关键路径大约包含多少级逻辑链路、那部分对功耗、面积、性能等影响最大(当然,这些在设计电路结构的时候就应该考虑好,从verilog反推也应该能达到这样的能力)。
(大概是这些吧,想到了其他项再补充。)
先来看Synopsys公司的一个tool:LEDA。LEDA在做coding style审查时,主要包括Synthesis、simulation、DFT、design style等等很多个方面,这些都是对设计人员书写VerilogHDL的全面约束和指导,从而在项目初始就保证Verilog code在style方面是有一定质量保证的。这些约束和上面说到的5条技能是息息相关和一一对应的。从上面的技能要求可知,达到精通VerilogHDL需要有以下的基础知识(默认以学过VerilogHDL基本语法):
1、VerilogHDL与电路结构的一一对应:
Synopsys DesignCompiler的workshop和关于HDL Compiler for Verilog User Guide。
2、VerilogHDL与电路性能等一一对应:
这方面涉及到的知识比较多,主要包括Standard Cell Library、STA等,参考书有(1)Static Timing Analysis forNanometer Designs: A Practical Approach. J. Bhasker, Rakesh Chadha. SpringerScience Business Media, LLC 2009. (2)DC和PT手册中关于timing的 User Guide。
同步学习1-2理论基础的同时,需要学习、熟悉、精通相对应的EDA tool,即:LEDA、DC、PT、Primepower等。
学习以上知识之前,应该具备数字集成电路基本知识,这样才能对以上的知识有更深入的理解。除了基础知识外,还需一定项目开发的历练,即可达到“精通”的目的了。
待续
相关文章推荐
- C#二进制文件读写
- caffe简易上手指南(二)—— 训练我们自己的数据
- android remote submix 录制系统内置的声音
- scala——traits
- drawable包对应手机分辨率,像素密度,dp,dip,sp,px,pt简单分析
- 【CodeForces】C. Drazil and Factorial
- AFNetworking 2.0 新特性讲解之AFHTTPSessionManager
- How To Use Netcat to Establish and Test TCP and UDP Connections on a VPS
- 解决Hexo博客的ERROR Process failed: layout/_partial/.DS_Store
- Android中,对SQLite的‘批处理’操作
- Android通用流行框架大全
- c++ 中 pair 的 使用方法
- 平均值不等式证明(数学归纳法)
- HTTP GET和POST区别
- ScrollView的坑
- 331. Verify Preorder Serialization of a Binary Tree
- 我的第三个springboot项目,servlet实现一个转盘抽奖程序
- 项目2-存储班长信息的学生类(1)
- modbus 资源
- 20150311+微信-01