Verilog与SystemVerilog编程陷阱:如何避免101个常犯的编码错误

Verilog与SystemVerilog编程陷阱:如何避免101个常犯的编码错误
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者: [美] (Stuart Sutherland) , (Don Mills) , ,
2015-07
版次: 1
ISBN: 9787111503163
定价: 55.00
装帧: 平装
开本: 16开
纸张: 胶版纸
页数: 155页
正文语种: 简体中文
原版书名: Verilog and System Verilog Gotchas 101 Common CodingErrors and How to Avoid Them
分类: 工程技术
46人买过
  •   《Verilog与SystemVerilog编程陷阱:如何避免101个常犯的编码错误》可以帮助工程师写出更好的Verilog/SystemVerilog的设计和验证代码,书中阐述了使用Verilog和SystemVerilog语言时超过100个常见的编码错误;每一个例子都详细说明了错误的症状、错误的语言规则以及正确的编码方式。《Verilog与SystemVerilog编程陷阱:如何避免101个常犯的编码错误》能帮助数字设计工程师和验证工程师有效地识别与避免这些常见的编码错误。书中列举的这些错误许多是非常微妙的,有可能需要花费几个小时或几天的时间才能发现或调试。   StuartSutherland,IEEE1800工作组的成员,该工作组负责起草Verilog和SystemVerilog标准。早在1993年也就是Verilog标准的诞生之际,他就已经涉足其标准的定义。同时他参与SystemVerilog标准也可追溯到2001年。此外,Stuart是IEEE官方Verilog和SystemVerilog语言参考手册的技术编辑。Stuart先生作为独立Verilog顾问,专注提供针对VerilogHDL、SystemVerilog和PLI的综合性专家训练。Stuart是《SystemVerilogforDesign》《Verilog-2001,AGuidetotheNewFeaturesintheVerilogHardwareDescriptionLanguage》的合著者,也是《TheVerilogPLIHandbook》和颇受推崇的《VerilogHDLQuickReferenceGuide》及《VerilogPLIQuickReferenceGuide》的作者。
      
      DonMills,从1986年开始涉足ASIC的设计。在此期间,他参与了超过30个ASIC项目。Don从1991开始使用自顶向下的设计方法(综合设计编译器1.2)。Don在几个公司开发并实施了自顶向下的ASIC设计流程。他精通工具整合和流程自动化。Don作为SystemVerilog和Verilog内部咨询师服务于美国微芯技术公司。Don是IEEEVerilog和SystemVerilog委员会的成员,该委员会致力于Verilog和SystemVerilog语言的发布和完善。Don是多篇文章的作者或合著者,例如《SystemVerilogAssertionsareforDesignEngineersToo!》及《RTLCodingStylesthatYieldSimulationandSynthesisMismatches》。 译者序

    关于作者
    第1章什么是“编程陷阱”
    什么是Verilog和SystemVerilog
    什么是陷阱
    Verilog和SystemVerilog标准

    第2章声明以及字符表述类陷阱
    陷阱1:字母大小写的敏感性
    陷阱2:网表的隐式声明
    陷阱3:默认的1bit内部网
    陷阱4:单文件和多文件编译的$unit声明
    陷阱5:局部变量的声明
    陷阱6:分层路径的转义名称
    陷阱7:自动变量的分层引用
    陷阱8:未命名模块中的变量分层引用
    陷阱9:分层引用一个导入的包项目
    陷阱10:从程序包中导入枚举类型
    陷阱11:导入多个程序包
    陷阱12:默认的整数进制
    陷阱13:有符号整数
    陷阱14:有符号数的位宽扩展
    陷阱15:变量位宽与赋值位宽的不一致
    陷阱16:将矢量全置为1
    陷阱17:合并数组和并置
    陷阱18:端口连接的几点规则
    陷阱19:后驱动端口
    陷阱20:实型(浮点型)数字的端口间传送

    第3章RTL建模中的陷阱
    陷阱21:包含函数调用的组合逻辑灵敏度列表
    陷阱22:灵敏度列表中的数组
    陷阱23:时序逻辑灵敏度列表中的向量
    陷阱24:灵敏度列表中的操作
    陷阱25:使用begin…end的时序逻辑块
    陷阱26:带复位的顺序逻辑块
    陷阱27:异步设置/复位触发器仿真和综合
    陷阱28:顺序程序块中的阻塞赋值
    陷阱29:要求阻塞赋值的顺序逻辑
    陷阱30:组合逻辑中的非阻塞赋值
    陷阱31:错误顺序的组合逻辑赋值语句
    陷阱32:case表达式中casez/casex掩码用法
    陷阱33:不完备的判决语句
    陷阱34:重叠判决语句
    陷阱35:不恰当使用unique条件语句
    陷阱36:2-状态模型的复位
    陷阱37:枚举类型锁定状态机的建模
    陷阱38:4-状态逻辑中隐藏的设计问题
    陷阱39:2-状态类型中隐藏的设计问题
    陷阱40:越界数组访问中的隐藏问题
    陷阱41:枚举类型的越界赋值
    陷阱42:模块中未检测到共享变量
    陷阱43:在接口和程序包中未见共享变量

    第4章运算符陷阱
    陷阱44:表达式的赋值
    陷阱45:操作符的自定义和上下文定义
    陷阱46:赋值语句中的运算位宽和符号扩展
    陷阱47:有符号数的算数运算规则
    陷阱48:基于位选择的操作
    陷阱49:递增、递减和赋值运算符
    陷阱50:前加与后加运算
    陷阱51:一条语句中变量的多次改变
    陷阱52:运算求值短路
    陷阱53:逻辑非(!)与按位求反符(~)
    陷阱54:数组的运算
    陷阱55:针对数组子集的运算

    第5章常见的编程陷阱
    陷阱56:验证零时刻的异步和同步复位
    陷阱57:if…else嵌套语块
    陷阱58:4-状态值下等号求值
    陷阱59:事件触发竞争条件
    陷阱60:使用信号量的同步
    陷阱61:使用邮箱的同步
    陷阱62:时钟块的触发
    陷阱63:判断语句后错误使用分号
    陷阱64:for循环语句中分号的错误使用
    陷阱65:死循环
    陷阱66:由于并发for循环引起的死锁
    陷阱67:循环控制变量的引用
    陷阱68:函数返回默认的位宽
    陷阱69:任务/功能函数的默认值
    陷阱70:为避免毛刺而采用延迟的连续赋值

    第6章面向对象和多线程编程中的陷阱
    陷阱71:类定义的编程语句
    陷阱72:基于面向对象接口的测试平台
    陷阱73:邮箱中的所有对象具有相同的值
    陷阱74:使用input或ref参数的句柄传递
    陷阱75:构建一个基于对象的数组
    陷阱76:静态任务和功能的非可重入性
    陷阱77:静态变量与自动变量的初始化
    陷阱78:叉型编程线程需要自动变量
    陷阱79:禁用fork将终止多个线程
    陷阱80:禁用一个语句块却未如所愿
    陷阱81:仿真在测试完毕前过早退出

    第7章随机化、覆盖率和断言类陷阱
    陷阱82:随机化声明的变量并未随机化
    陷阱83:未被检测的随机化失败
    陷阱84:$assertoff可以禁止随机化
    陷阱85:两个以上随机变量的布尔约束条件
    陷阱86:不必要的负随机值
    陷阱87:覆盖报告默认基于组而非箱
    陷阱88:覆盖率始终报告0%
    陷阱89:覆盖报告将所有实例混在一起
    陷阱90:覆盖组的参数方向具有粘黏性
    陷阱91:断言传递语句与空成功一同执行
    陷阱92:程序块中的并发断言
    陷阱93:assert…else语句中的不匹配
    陷阱94:不能失败的断言

    第8章工具兼容性陷阱
    陷阱95:默认的仿真时间单位和精度
    陷阱96:程序包链接
    陷阱97:不同工具的随机数生成不一致
    陷阱98:使用always_latch/always_ff来加载存储器模型
    陷阱99:非标准语言扩展
    陷阱100:数组常量的级联
    陷阱101:传输浮点数值(实数类型)的模块端口
  • 内容简介:
      《Verilog与SystemVerilog编程陷阱:如何避免101个常犯的编码错误》可以帮助工程师写出更好的Verilog/SystemVerilog的设计和验证代码,书中阐述了使用Verilog和SystemVerilog语言时超过100个常见的编码错误;每一个例子都详细说明了错误的症状、错误的语言规则以及正确的编码方式。《Verilog与SystemVerilog编程陷阱:如何避免101个常犯的编码错误》能帮助数字设计工程师和验证工程师有效地识别与避免这些常见的编码错误。书中列举的这些错误许多是非常微妙的,有可能需要花费几个小时或几天的时间才能发现或调试。
  • 作者简介:
      StuartSutherland,IEEE1800工作组的成员,该工作组负责起草Verilog和SystemVerilog标准。早在1993年也就是Verilog标准的诞生之际,他就已经涉足其标准的定义。同时他参与SystemVerilog标准也可追溯到2001年。此外,Stuart是IEEE官方Verilog和SystemVerilog语言参考手册的技术编辑。Stuart先生作为独立Verilog顾问,专注提供针对VerilogHDL、SystemVerilog和PLI的综合性专家训练。Stuart是《SystemVerilogforDesign》《Verilog-2001,AGuidetotheNewFeaturesintheVerilogHardwareDescriptionLanguage》的合著者,也是《TheVerilogPLIHandbook》和颇受推崇的《VerilogHDLQuickReferenceGuide》及《VerilogPLIQuickReferenceGuide》的作者。
      
      DonMills,从1986年开始涉足ASIC的设计。在此期间,他参与了超过30个ASIC项目。Don从1991开始使用自顶向下的设计方法(综合设计编译器1.2)。Don在几个公司开发并实施了自顶向下的ASIC设计流程。他精通工具整合和流程自动化。Don作为SystemVerilog和Verilog内部咨询师服务于美国微芯技术公司。Don是IEEEVerilog和SystemVerilog委员会的成员,该委员会致力于Verilog和SystemVerilog语言的发布和完善。Don是多篇文章的作者或合著者,例如《SystemVerilogAssertionsareforDesignEngineersToo!》及《RTLCodingStylesthatYieldSimulationandSynthesisMismatches》。
  • 目录:
    译者序

    关于作者
    第1章什么是“编程陷阱”
    什么是Verilog和SystemVerilog
    什么是陷阱
    Verilog和SystemVerilog标准

    第2章声明以及字符表述类陷阱
    陷阱1:字母大小写的敏感性
    陷阱2:网表的隐式声明
    陷阱3:默认的1bit内部网
    陷阱4:单文件和多文件编译的$unit声明
    陷阱5:局部变量的声明
    陷阱6:分层路径的转义名称
    陷阱7:自动变量的分层引用
    陷阱8:未命名模块中的变量分层引用
    陷阱9:分层引用一个导入的包项目
    陷阱10:从程序包中导入枚举类型
    陷阱11:导入多个程序包
    陷阱12:默认的整数进制
    陷阱13:有符号整数
    陷阱14:有符号数的位宽扩展
    陷阱15:变量位宽与赋值位宽的不一致
    陷阱16:将矢量全置为1
    陷阱17:合并数组和并置
    陷阱18:端口连接的几点规则
    陷阱19:后驱动端口
    陷阱20:实型(浮点型)数字的端口间传送

    第3章RTL建模中的陷阱
    陷阱21:包含函数调用的组合逻辑灵敏度列表
    陷阱22:灵敏度列表中的数组
    陷阱23:时序逻辑灵敏度列表中的向量
    陷阱24:灵敏度列表中的操作
    陷阱25:使用begin…end的时序逻辑块
    陷阱26:带复位的顺序逻辑块
    陷阱27:异步设置/复位触发器仿真和综合
    陷阱28:顺序程序块中的阻塞赋值
    陷阱29:要求阻塞赋值的顺序逻辑
    陷阱30:组合逻辑中的非阻塞赋值
    陷阱31:错误顺序的组合逻辑赋值语句
    陷阱32:case表达式中casez/casex掩码用法
    陷阱33:不完备的判决语句
    陷阱34:重叠判决语句
    陷阱35:不恰当使用unique条件语句
    陷阱36:2-状态模型的复位
    陷阱37:枚举类型锁定状态机的建模
    陷阱38:4-状态逻辑中隐藏的设计问题
    陷阱39:2-状态类型中隐藏的设计问题
    陷阱40:越界数组访问中的隐藏问题
    陷阱41:枚举类型的越界赋值
    陷阱42:模块中未检测到共享变量
    陷阱43:在接口和程序包中未见共享变量

    第4章运算符陷阱
    陷阱44:表达式的赋值
    陷阱45:操作符的自定义和上下文定义
    陷阱46:赋值语句中的运算位宽和符号扩展
    陷阱47:有符号数的算数运算规则
    陷阱48:基于位选择的操作
    陷阱49:递增、递减和赋值运算符
    陷阱50:前加与后加运算
    陷阱51:一条语句中变量的多次改变
    陷阱52:运算求值短路
    陷阱53:逻辑非(!)与按位求反符(~)
    陷阱54:数组的运算
    陷阱55:针对数组子集的运算

    第5章常见的编程陷阱
    陷阱56:验证零时刻的异步和同步复位
    陷阱57:if…else嵌套语块
    陷阱58:4-状态值下等号求值
    陷阱59:事件触发竞争条件
    陷阱60:使用信号量的同步
    陷阱61:使用邮箱的同步
    陷阱62:时钟块的触发
    陷阱63:判断语句后错误使用分号
    陷阱64:for循环语句中分号的错误使用
    陷阱65:死循环
    陷阱66:由于并发for循环引起的死锁
    陷阱67:循环控制变量的引用
    陷阱68:函数返回默认的位宽
    陷阱69:任务/功能函数的默认值
    陷阱70:为避免毛刺而采用延迟的连续赋值

    第6章面向对象和多线程编程中的陷阱
    陷阱71:类定义的编程语句
    陷阱72:基于面向对象接口的测试平台
    陷阱73:邮箱中的所有对象具有相同的值
    陷阱74:使用input或ref参数的句柄传递
    陷阱75:构建一个基于对象的数组
    陷阱76:静态任务和功能的非可重入性
    陷阱77:静态变量与自动变量的初始化
    陷阱78:叉型编程线程需要自动变量
    陷阱79:禁用fork将终止多个线程
    陷阱80:禁用一个语句块却未如所愿
    陷阱81:仿真在测试完毕前过早退出

    第7章随机化、覆盖率和断言类陷阱
    陷阱82:随机化声明的变量并未随机化
    陷阱83:未被检测的随机化失败
    陷阱84:$assertoff可以禁止随机化
    陷阱85:两个以上随机变量的布尔约束条件
    陷阱86:不必要的负随机值
    陷阱87:覆盖报告默认基于组而非箱
    陷阱88:覆盖率始终报告0%
    陷阱89:覆盖报告将所有实例混在一起
    陷阱90:覆盖组的参数方向具有粘黏性
    陷阱91:断言传递语句与空成功一同执行
    陷阱92:程序块中的并发断言
    陷阱93:assert…else语句中的不匹配
    陷阱94:不能失败的断言

    第8章工具兼容性陷阱
    陷阱95:默认的仿真时间单位和精度
    陷阱96:程序包链接
    陷阱97:不同工具的随机数生成不一致
    陷阱98:使用always_latch/always_ff来加载存储器模型
    陷阱99:非标准语言扩展
    陷阱100:数组常量的级联
    陷阱101:传输浮点数值(实数类型)的模块端口
查看详情
系列丛书 / 更多
Verilog与SystemVerilog编程陷阱:如何避免101个常犯的编码错误
DSP嵌入式实时系统权威指南
Robert Oshana 作者
Verilog与SystemVerilog编程陷阱:如何避免101个常犯的编码错误
硬件架构的艺术:数字电路的设计方法与技术
[印度]Mohit Arora 编
Verilog与SystemVerilog编程陷阱:如何避免101个常犯的编码错误
电子与嵌入式系统设计译丛:FPGA快速系统原型设计权威指南
[美]R.C.Cofer、[美]Benjamin F.Harding 著
Verilog与SystemVerilog编程陷阱:如何避免101个常犯的编码错误
综合与时序分析的设计约束:Synopsys设计约束(SDC)实用指南
[美]斯里达尔·甘加达兰(Sridhar Gangadharan)、[印度]桑杰·丘里瓦拉(Sanjay、Chur 著;韩德强 张丽艳 王宗侠 译
Verilog与SystemVerilog编程陷阱:如何避免101个常犯的编码错误
电子与嵌入式系统设计译丛·ARM快速嵌入式系统原型设计:基于开源硬件mbed
[美]Rob、[美]Tim Wilmshurst 著;韩德强、鲁鹏程 译
Verilog与SystemVerilog编程陷阱:如何避免101个常犯的编码错误
电子与嵌入式系统设计译丛:嵌入式软件开发精解
[美]瓦尔斯(Colin Walls) 著;何小庆、张浩中、何灵渊 译
Verilog与SystemVerilog编程陷阱:如何避免101个常犯的编码错误
数字系统测试和可测试性设计
[美]塞纳拉伯丁·纳瓦比(Zainalabedin,Navabi) 著;贺海文、唐威昀 译
Verilog与SystemVerilog编程陷阱:如何避免101个常犯的编码错误
电子与嵌入式系统设计译丛:嵌入式系统数字视频处理权威指南
[美]Michael、[美]Suhel Dhanani 著;邓天平 译
Verilog与SystemVerilog编程陷阱:如何避免101个常犯的编码错误
Linux嵌入式实时应用开发实战(原书第3版)
[美]Doug Abbott 著;周艳 译
Verilog与SystemVerilog编程陷阱:如何避免101个常犯的编码错误
嵌入式系统安全:安全与可信软件开发实战方法
[美]戴维·克勒德马赫、[美]迈克·克勒德马赫 著;周庆国、姚琪、刘洋 译
Verilog与SystemVerilog编程陷阱:如何避免101个常犯的编码错误
深入理解8051单片机系统
[美]穆罕默德·阿里·马齐迪 著;张红英 译
Verilog与SystemVerilog编程陷阱:如何避免101个常犯的编码错误
Cortex-M处理器设计指南
[美]Trevor Martin 著;孙彪、周跃庆 译
相关图书 / 更多
Verilog与SystemVerilog编程陷阱:如何避免101个常犯的编码错误
Verilog HDL数字设计与综合(第二版)(本科教学版)
[美]Samir Palnitkar (萨米尔 · 帕尔尼卡
Verilog与SystemVerilog编程陷阱:如何避免101个常犯的编码错误
VerilogHDL设计实用教程
黄海、于斌 编
Verilog与SystemVerilog编程陷阱:如何避免101个常犯的编码错误
Verilog数字系统设计与FPGA应用(第2版)(MOOC版)
赵倩;叶波;邵洁;周多;林丽萍
Verilog与SystemVerilog编程陷阱:如何避免101个常犯的编码错误
Vert.x实战
[法]于连·蓬热(Julien Ponge) 著;黄灰红 译
Verilog与SystemVerilog编程陷阱:如何避免101个常犯的编码错误
Verilog HDL与CPLD/FPGA项目开发教程 第3版
聂章龙 周凌翱 主编
Verilog与SystemVerilog编程陷阱:如何避免101个常犯的编码错误
VerilogHDL实验教程/理工科电子信息类DIY系列丛书
钱敏、曲波、黄旭、胡丹峰、黄秋萍 著
Verilog与SystemVerilog编程陷阱:如何避免101个常犯的编码错误
Verilog HDL数字系统设计与验证 ——以太网交换机案例分析
乔庐峰
Verilog与SystemVerilog编程陷阱:如何避免101个常犯的编码错误
Verilog HDL项目式教程
贺敬凯
Verilog与SystemVerilog编程陷阱:如何避免101个常犯的编码错误
VerilogHDL与FPGA数字系统设计第2版
罗杰 著
Verilog与SystemVerilog编程陷阱:如何避免101个常犯的编码错误
VerilogHDL算法与电路设计(通信和计算机网络典型案例)/电子信息前沿技术丛书
乔庐峰、陈庆华、晋军、续欣、赵彤 编
Verilog与SystemVerilog编程陷阱:如何避免101个常犯的编码错误
Verilog HDL实用教程
王金明
Verilog与SystemVerilog编程陷阱:如何避免101个常犯的编码错误
Verilog HDL设计实例手册
王金明