Verilog与SystemVerilog编程陷阱:怎样避免101个常犯的编码错误
这篇是计算机类的优质预售推荐>>>>《Verilog与SystemVerilog编程陷阱:怎样避免101个常犯的编码错误》
编辑推荐
纠错式学习,从“陷阱”中学习编程,加深对语言本身的理解。
逆向式学习,从错误中学习避免错误的方法。让读者写出更好的代码。
案例式学习,将101个“陷阱”分类汇编,以针对性案例引导读者掌握编程要点。
译者序
译者序
随着电子设计自己主动化(Electronic Design Automation,EDA)技术的广泛应用。使用硬件语言完毕现场可编程门阵列(Field-Programmable Gate Array。FPGA)是大势所趋。迄今为止,基本的硬件描写叙述语言包含VHDL、Verilog HDL和SystemVerilog。
相比于后两者。VHDL发展更早,语法更为严格,因而对刚開始学习的人来说上手较慢,在实际使用中常常由于不规范的代码遭遇编译报错。相比而言,Verilog及SystemVerilog具有语法灵活的优势。当然也会因这样的灵活性在综合过程中产生程序猿意料之外的结果。眼下,相比于VHDL,Verilog和其高级版本号的SystemVerilog应用更为广泛。
这是由于在集成电路(Integrated
Circuit。IC)设计领域。90%以上的公司都採用Verilog进行IC设计。因此对集成电路设计(Application Specific Integrated Circuit, ASIC)人员来说。必须掌握Verilog。另外,因为Verilog和C语言有非常多类似的语法和keyword。鉴于C语言普及人群广泛,Verilog更能使刚開始学习的人突破语言障碍,高速入门。
正如我们提到的。Verilog因为其固有的灵活性。便于刚開始学习的人入门。而也正因于此,过于灵活的语法常常会使project师们陷入不当使用Verilog的陷阱,从而造成意料之外的错误。
本书是由Verilog和SystemVerilog方面的资深专家依据自身实际project经验倾心撰写的一本有用的Verilog和SystemVerilog手冊。本书给出了硬件project师在使用Verilog和SystemVerilog时easy陷入的101个陷阱。
本书的翻译工作主要由戴成然和高镇完毕。当中戴成然完毕了前言和第1~4章的翻译,高镇完毕了第5~8章的翻译。因为译者水平有限。文中难免出现不妥之处。敬请读者批评指正。
高镇
2015年3月
序言
序
人的爱好各有不同,有人喜欢收集棒球卡片,有人喜欢收集老旧的汽车杂志,也有人喜欢收集橡皮鸭子,而我喜欢收集Verilog方面的书籍。
这要追溯到1989年一本用三孔夹夹着的活页《VERILOG-XL Reference Manual Version 1.5a》复印版。当时的Verilog相对简单——令人难以相信的是,现现在已经能够用一种类型的程序分配来设计芯片(在当时非堵塞式分配还不是一种语言)。不仅如此,当时我们仅仅能在VAX或阿波罗工作站上仿真。
从那时起,我差点儿买下了关于Verilog的每一本书。我所写过的书中已经包括了一些综合性的书。
将来我将写一本VHDL的必备手冊。又或者是一本介绍硬件描写叙述性语言历史的书,当然书的内容大多是有关Verilog的。
对于这些书。有一件有趣的事儿。在我翻阅它们后,就会把它们放在架子上。非常少再次翻阅。我承认当你看到我装满Verilog书的书架时,你会对此留下非常深的印象。目光敏锐的客人会注意到我的书是崭新的。
确实。我没用过它们,没读过它们,由于它们对我帮助非常少。
令人失望的是。我非常难找到一本相应用project师有用的书。我想要的是一本每天带在身边,及时和有效地助我迈出第一步的书。
Stu和Don编著了本书。我们认识非常多年了,他们在Verilog上有非常深的造诣。他们将毕生所学的精华总结成这本非常有用的书。本书一定不会让你失望。
假设你是一个通过慘痛教训而跳出Verilog陷阱的内行,微笑着对自己说:“太好了,我以前在这出过问题。”
欢迎刚開始学习Verilog和SystemVerilog的朋友们!
通过阅读本书,你能够拥有向这个领域的两个顶级专家学习的机会。
假设你有机会參加这两位专家中随意一位的课程,一定要报名。
我保证你不会懊悔。
顺便提一下,我最喜欢的陷阱是“陷阱65:死循环”。由于我以前犯过这种错误。相信我。假设你以前由于建模错误致使打坏计算机,那么这辈子你都不会忘记错误的原因。
但是你比我幸运,由于本书能够帮助你。将这本书放在手边。常常翻阅,那么你的模型都能够通过编译,循环都能够终止。
Steve Golson
Verilog与SystemVerilog编程陷阱:怎样避免101个常犯的编码错误的更多相关文章
- 对比 Verilog 和 SystemVerilog 中的基本数据类型
作为引子,首先来看一段描述,该段介绍了SystemVerilog对比Verilog在RTL设计和建模时的新特性之一(logic数据类型),然后下文我再展开对比介绍Verilog和SystemVeril ...
- Socket编程, 在server端read()函数调用后显示错误:Transport endpoint is not connected (犯了低级错误)
for(;;){ socklen_t len = sizeof(client_address); connfd = accept(listenfd, (struct sockaddr *)&c ...
- Java中try catch finally语句中含return语句的执行情况总结-编程陷阱
前言:有java编程基础的人对java的异常处理机制都会有一定了解,而且可能感觉使用起来也比较简单,但如果在try catch finally语句块中遇到return语句,开发者可能就会遇到一些逻辑问 ...
- Java编程陷阱-类成员初始化
原文地址:http://blog.csdn.net/veryitman/article/details/6450523 如果你忽略Java的细节,恐怕你的代码会充满bug,下面讨论关于类成员初始化问题 ...
- 高并发编程陷阱之check and set
今天公司CTO跟隔壁部门开技术会,旁听了一下.所讲的内容感觉好高大上啊!简单记录一下 场景是这样的: if(check(id)===true) { }else{ set(id); } 什么意思呢? 就 ...
- 基于verilog的FPGA编程经验总结(XILINX ISE工具)
1.用ISE仿真的时候.所用变量一定要初始化. ISE默认初始量为"XXXXX", 而Quarters是默认为"00000"的, 其实实际上, 下到FPGA里后 ...
- HAL驱动的串口编程陷阱
http://bbs.elecfans.com/jishu_464356_1_1.html 手上有块NUCLEO STM32L053x板子,用来做串口实验,看了下ST的最新库HAL驱动,于是想用HAL ...
- 《Java编程思想》笔记 第十二章 通过异常处理错误
1.异常也是对象 标准异常类都有两个构造器,一个默认,一个接受字符串. 抛异常与方法返回类型不同,但有相似效果使当前方法退出并返回,抛异常可以看作是一种不同的返回机制.(异同点不必深究) Throwa ...
- iOS网络高级编程:iPhone和iPad的企业应用开发之错误处理
本章内容 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcWluZ2h1YXdlbmthbmc=/font/5a6L5L2T/fontsize/400/fi ...
随机推荐
- 51nod 1222 莫比乌斯反演
思路: yhx找的反演题 题解已经烂大街了 #pragma GCC optimize("O3") //By SiriusRen #include <bits/stdc++.h ...
- MVC系列学习(四)-初识Asp.NetMVC框架
注:本文章从伯乐那盗了两张图,和一些文字: 1.MVC设计模式 与 Asp.Net Mvc框架 a.MVC设计模式 MVC设计模式 是一种 软件设计模式,将业务逻辑 与 界面显示 分离,并通过某种方式 ...
- ios9 -3dtouch 手势添加到app上
模拟器实现3dtouch参考以下网站: http://my.oschina.net/u/2340880/blog/511509 - (BOOL)application:(UIApplication * ...
- [ CTSC 2007 / BZOJ 2151 ] Backup / 种树
\(\\\) \(Description\) 给出一个数轴上\(N\)个点的坐标\(A_i\),选择\(K\)个点对,使得这\(K\)个点对每个点对的距离之和尽可能小. \(N\in [0,10^5] ...
- Android传递中文参数方法(之一)
最近在做app,用的volley传参,有一个地方传中文参数不行(貌似是get方式),我又试了下post方式,成功了,记录下,以后有用! RequestQueue requestQueue = Voll ...
- OpenCV绘制检测结果
OpenCV绘制检测结果 opencv rtcp timestamp 一.介绍 由于在验证阶段,使用FPGA时我们的算法检测速度很慢,没法直接在主流上进行绘图,否则的话,主流就要等待算法很久才能 ...
- Ajax——异步基础知识(一)
基础概念 1.异步请求可以做到偷偷向服务器发送请求,而页面却不刷新 2.get异步请求传递参数是通过url追加键值对的方式 3.post异步请求比较特殊,需要设置请求的类型 User-Agent:浏览 ...
- 通过offset值的设置使html元素对齐
今天是我第一次写这个随笔,为了记录我发现的一个jquery的offset的值的问题. 这个offset的值会因为页面标签是否处于隐藏状态而表现出不同的值,隐藏状态时,offset的值是相对于直接父亲的 ...
- ESLint =》tslint.json
结论:将ESLint提示注意()里面的规则属性在tslint.json中"rules": { } 里设置为false 1.ES6: ESLint提示"Require Ob ...
- sublime右键菜单,anaconda设置
1.sublime_addright.inf [Version]Signature="$Windows NT$" [DefaultInstall]AddReg=SublimeTex ...