您的位置:首页 > 其它

【知乎】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等。

学习以上知识之前,应该具备数字集成电路基本知识,这样才能对以上的知识有更深入的理解。除了基础知识外,还需一定项目开发的历练,即可达到“精通”的目的了。

待续
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: