主页 详情

《EDA精品智汇馆 Verilog编程艺术》_魏家明编著_13470839_7121220616

【书名】:《EDA精品智汇馆 Verilog编程艺术》
【作者】:魏家明编著
【出版社】:北京:电子工业出版社
【时间】:2014
【页数】:433
【ISBN】:7121220616
【SS码】:13470839

最新查询

内容简介

第一部分 设计原则

第1章 美的设计

1.1美学观点

1.2美是修养

1.3专业术语

第2章 高效之道

2.1敏捷开发

2.2代码质量

2.3版本控制

2.4提早集成

第3章 组织管理

3.1植物分类

3.2 SoC特性

3.3设计流程

3.4仔细规划

3.5管理表格

3.6模块层次

3.7目录组织

第4章 使用工具

4.1使用Emacs

4.1.1 Emacs介绍

4.1.2 Emacs安装

4.1.3常用快捷键

4.1.4我的.emacs

4.1.5 cua-base.el

4.1.6 verilog-mode.el

4.1.7 shell buffer

4.2使用Shell

4.2.1 Shell介绍

4.2.2 Shell例子

4.2.3 Perl例子

4.3使用CVS

4.3.1 CVS介绍

4.3.2 CVS术语

4.3.3 CVS初始化

4.3.4 CVS常用命令

第5章 编码风格

5.1干干净净

5.2代码划分

5.3代码要求

5.3.1 Venlog部分

5.3.2 SystemVerilog部分

5.4名字定义

5.5书写格式

5.5.1模块端口声名

5.5.2模块实例化

5.5.3函数和任务调用

5.5.4书写语句

5.5.5书写表达式

5.6添加注释

5.7参数化

5.8 lint检查

第二部分 语言特性

第6章 Verilog特性

6.1 Verilog标准

6.2抽象级别

6.3可综合子集

6.4保持一致

第7章 常数

7.1整数(integer)

7.2实数(real)

7.3字符串(string)

7.4标识符(identifier)

第8章 数据类型

8.1线网(net)

8.1.1 wire和tn

8.1.2 wor、wand、trior、triand

8.1.3 tri0、tri1

8.1.4 uwire

8.1.5 supply0、supplyl

8.1.6驱动强度

8.1.7默认net

8.2变量(variable)

8.3线网和变量的区别

8.4向量(vector)

8.5数组(array)

8.6多维数组

第9章 表达式

9.1操作符(Operator)

9.1.1操作符的优先级(Operator priority)

9.1.2表达式中使用整数

9.1.3算数操作符(Arithmetic operators)

9.1.4算术表达式中的regs和integers

9.1.5比较操作符(Compare operators)

9.1.6逻辑操作符(Logical operators)

9.1.7位运算操作符(Bitwise operators)

9.1.8归约操作符(Reduction operators)

9.1.9移位操作符(Shift operators)

9.1.10条件操作符(Conditional operator)

9.1.11连接操作符(Concatenations)

9.2操作数(Operands)

9.2.1向量的抽取(bit-select and part-select)

9.2.2 part-select的例子

9.2.3数组的访问

9.2.4字符串

9.3表达式位长(Expression bit lengths)

9.3.1表达式位长规则

9.3.2表达式位长问题的例子A

9.3.3表达式位长问题的例子B

9.3.4表达式位长问题的例子C

9.3.5表达式位长问题的例子D

9.3.6表达式位长问题的例子E

9.4符号表达式(Signed expressions)

9.4.1表达式类型规则

9.4.2计算表达式的步骤

9.4.3执行赋值的步骤

9.4.4 signed表达式中处理x和z

9.4.5 signed应用的例子

9.4.6 signed应用的错误

9.5赋值和截断(Assignments and truncation)

9.6与x/z比较

第10章 赋值操作

10.1连续赋值

10.2过程赋值

第11章 门级和开关级模型

11.1门和开关的声明语法

11.1.1门和开关类型

11.1.2驱动强度

11.1.3延迟

11.1.4实例数组

11.2 and、nand、nor、or、xor、xnor

11.3 buf、not

11.4 bufif1、bufif0、notif1、notif0

11.5 MOS switches

11.6 Bidirectional pass switches

11.7 pullup、pulldown

第12章 用户定义原语

12.1 UDP定义

12.1.1 UDP状态表

12.1.2状态表符号

12.2组合UDP

12.3电平敏感时序UDP

12.4沿敏感时序UDP

第13章 行为模型

13.1概览

13.2过程赋值

13.2.1阻塞赋值

13.2.2非阻塞赋值

13.3过程连续赋值

13.3.1 assign和deassign过程语句

13.3.2 force和release过程语句

13.4条件语句

13.5循环语句

13.5.1 for循环例子

13.5.2 disable语句

13.6过程时序控制

13.6.1延迟控制(Delay control)

13.6.2事件控制(Event control)

13.6.3命名事件(Named events)

13.6.4事件or操作符(Event or operator)

13.6.5隐含事件列表(Implicit event_expression list)

13.6.6电平敏感事件控制(Level-sensitive event control)

13.6.7赋值间时序控制(Intra-assignment timing controls)

13.7块语句

13.7.1顺序块(Sequential block)

13.7.2并行块(Parallel block)

13.7.3块名字(Block names)

13.7.4开始和结束时间(Start and finish times)

13.8结构化过程

13.8.1 initial construct

13.8.2 always construct

13.8.3 always的敏感列表

13.8.4并发进程

13.9 always有关的问题

13.9.1敏感列表不完整

13.9.2赋值顺序错误

第14章 case语句

14.1 case语句定义

14.2 case语句的执行

14.3 Verilog和VHDL对比

14.4 case的应用

14.5 casez的应用

14.6描述状态机

14.7 casex的误用

14.8 casez的误用

14.9 full case和parallel_case

14.10 full case

14.10.1不是full的case语句

14.10.2是full的case语句

14.10.3使用full case综合指令

14.10.4 full case综合指令的缺点

14.10.5使用full case指令后还是生成Latch

14.11 paralle_ase

14.11.1不是parallel的case语句

14.11.2是parallel的case语句

14.11.3使用parallel case综合指令

14.11.4 parallel case综合指令的缺点

14.11.5没有必要的parallel case指令

14.12综合时的警告

14.13 case语句的编码原则

第15章 task和function

15.1 task和function之间的不同点

15.2 task的声明和使能

15.2.1 task的声明

15.2.2 task的使能和参数传递

15.2.3 task的内存使用和并发进程

15.3 disable语句

15.3.1 disable语句的例子A

15.3.2 disable语句的例子B

15.4 function的声明和调用

15.4.1 function的声明

15.4.2 function的返回值

15.4.3 function的调用

15.4.4 function的规则

15.4.5 constant function

15.5 task的误用

15.6 function的误用

第16章 调度和赋值

16.1仿真过程

16.2事件仿真

16.3仿真参考模型

16.4分层事件队列

16.4.1事件队列分类

16.4.2事件队列特性

16.4.3事件调度例子

16.5确定性和不确定性

16.5.1确定性(Determinism)

16.5.2不确定性(Nondeterminism)

16.6赋值的调度含义

16.6.1连续赋值

16.6.2过程连续赋值

16.6.3阻塞赋值

16.6.4非阻塞赋值

16.6.5开关处理

16.6.6端口连接

16.6.7任务和函数

16.7阻塞赋值和非阻塞赋值

16.7.1阻塞赋值

16.7.2非阻塞赋值

16.8赋值使用原则

16.9自己触发自己

16.10仿真零延迟RTL模型

16.11惯性延迟和传输延迟

16.11.1门级仿真中的传输延迟

16.11.2各种#delay的位置

16.11.3仿真时钟生成方法

16.12延迟线模型

16.13使用#1延迟

16.14多个公共时钟和竞争条件

16.15 避免混杂阻塞赋值和非阻塞赋值

16.16 RTL和门级混合仿真

16.16.1 RTL-to-Gates仿真

16.16.2 Gates-to-RTL仿真

16.16.3有时钟偏差的门级时钟树

16.16.4有时钟偏差的Vendor模型

16.16.5错误的Vendor模型

16.16.6结论和建议

16.17带有SDF延迟的门级仿真

16.17.1全系统仿真

16.17.2软件要花钱

16.17.3门级回归仿真

16.18验证平台技巧

16.18.1在0时刻复位

16.18.2时钟沿之后复位

16.18.3创建仿真时钟

16.18.4在无效沿输入激励

第17章 层次结构

17.1模块

17.1.1模块定义

17.1.2模块实例

17.2参数

17.2.1参数声明

17.2.2参数调整

17.2.3参数传递

17.2.4参数依赖

17.2.5内部参数

17.2.6 clog2

17.2.7指数**

17.3端口

17.3.1端口声明

17.3.2端口连接

17.3.3实数传递

17.4 Generate语句

17.4.1 Loop generate construct

17.4.2 Conditional generate construct

17.5实例数组

17.6层次名字

第18章 系统任务和函数

18.1显示任务

18.1.1显示和写出任务

18.1.2探测任务

18.1.3监控任务

18.2文件读写

18.2.1打开和关闭文件

18.2.2文件输出

18.2.3字符串输出

18.2.4文件输入

18.2.5文件定位

18.2.6刷新输出

18.2.7错误状态

18.2.8检查文件尾部

18.2.9加载文件数据

18.3时间比例

18.3.1 $printtimescale

18.3.2 $timeformat

18.4仿真控制

18.4.1 $finish

18.4.2 $stop

18.5仿真时间

18.6转换函数

18.7概率分布

18.7.1 $random

18.7.2 $dist functions

18.8命令行输入

18.8.1 $test$plusargs

18.8.2 $value$plusargs

18.9数学运算

18.9.1整数函数

18.9.2实数函数

18.10波形记录

第19章 编译指令

19.1 ?celldefine和?endcelldefine

19.2 ?default_nettype

19.3 ?define和?undef

19.4 ?ifdef、?else、?elsif、?endif、?ifndef

19.5 ?include

19.6 ?resetall

19.7 ?line

19.8 ?timescale

19.9 ?unconnected drive和?nounconnected drive

19.10 ?begin_keywords和?end_keywords

19.11 ?pragma

第20章 Specify块

20.1 specify块声明

20.2 speparam

20.3模块路径声明

20.3.1模块路径要求

20.3.2简单路径

20.3.3沿敏感路径

20.3.4状态依赖路径

20.4模块路径延迟

第21章 时序检查

21.1概览

21.2使用稳定窗口的时序检查

21.2.1 $setup、$hold、$setuphold

21.2.2 $recovery、$removal、$recrem

21.3时钟和控制信号的时序检查

21.3.1 $skew、$timeskew、$fullskew

21.3.2 $width

21.3.3 $period

21.3.4 $nocbange

21.4使用notifier响应时序违反

21.5使用条件事件

21.6时序检查中的Vector

21.7 Negative timing check

第22章 反标SDF

22.1 SDF标注器

22.2 SDF construct到Verilog的映射

22.2.1 SDF路径延迟到Verilog的映射

22.2.2 SDF时序检查到Verilog的映射

22.2.3 SDF互连延迟的标注

22.3 $sdf_annotate

22.4 SDF文件例子

第23章 编程语言接口

23.1 DirectC

23.2 SystemVerilog

第24章 综合指令

24.1 Synopsys综合指令

24.2使用综合指令

24.3使用translate_off/on

24.4误用translate_off/on

24.5使用attribute

第三部分 书写文档

第25章 书写文档

25.1文档格式

25.2定义文档

25.3应用文档

25.4设计文档

25.5备份文档

25.6 GPIO设计

第26章 GPIO应用文档

26.1 Overview

26.2 Register Description

26.2.1 PIN Level Register(PIN)

26.2.2 Data Register(DAT)

26.2.3 Data Set Register(DATS)

26.2.4 Data Clear Register(DATC)

26.2.5 Mask Register(IM)

26.2.6 Mask Set Register(IMS)

26.2.7 Mask Clear Register(IMC)

26.2.8 PULL Enable Register(PEN)

26.2.9 PEN Enable Set Register Register(PENS)

26.2.10 PEN Enable Clear Register Register(PENC)

26.2.11 PSEL Select Register(PSEL)

26.2.12 PSEL Enable Set Register Register(PSELS)

26.2.13 PSEL Enable Clear Register Register(PSELC)

26.2.14 Function Register(FUN)

26.2.15 Function Set Register(FUNS)

26.2.16 Function Clear Register(FUNC)

26.2.17 Select Register(SEL)

26.2.18 Select Set Register(SELS)

26.2.19 Select Clear Register(SELC)

26.2.20 Direction Register(DIR)

26.2.21 Direction Set Register(DIRS)

26.2.22 Direction Clear Register(DIRC)

26.2.23 Trigger Register(TRG)

26.2.24 Trigger Set Register(TRGS)

26.2.25 Trigger Clear Register(TRGC)

26.2.26 FLAG Register(FLG)

26.2.27 FLAG Clear Register(FLGC)

26.3 Program Guide

26.3.1 GPIO Function Guide

26.3.2 Alternate Function Guide

26.3.3 Interrupt Function Guide

26.3.4 Disable Interrupt Function Guide

第27章 GPIO设计文档

27.1文件列表(见表27-1)

27.2端口列表(见表27-2)

27.3配置参数(见表27-3)

第四部分 高级设计

第28章 使用IP

28.1 Cadence的IP

28.2 Cadence的VIP

28.3 Synopsys的IP

28.4 DesignWare Building Block

28.5在FPGA上使用DesignWare

第29章 代码优化

29.1代码可读

29.2简洁编码

29.3优化逻辑

29.4优化迟到信号

29.5括号控制结构

第30章 状态机设计

30.1状态机类型

30.2状态编码方式

30.3二进制编码FSM

30.3.1两个always块

30.3.2重要的编码规则

30.3.3错误状态的转换

30.3.4 next的默认值

30.4独热码编码FSM

30.5寄存器输出

第31章 可配置设计

31.1格雷码转换

31.2通用串行CRC

31.2.1 general_crc.v

31.2.2 testbench

31.3 FIFO控制器

31.4 RAM Wrapper例子

31.4.1常规方法

31.4.2名字规范化

31.4.3 RFl_wrapper.v

31.4.4 gen_wrapper.pl

31.4.5 ram_def.txt例子

31.4.6生成wrapper

31.5可配置的GPIO设计

31.5.1 gpio.v

31.5.2 gpio_params.v

31.5.3 gpio_check.v

31.5.4 gpio_reg.v

31.5.5 gpio_sync.v

31.6可配置的BusMatrix

31.6.1 BusMatrix简介

31.6.2设计ABM

31.6.3 mini abm

31.6.4 large-abm

31.7可配置的Andes Core N801

31.8可配置的ARM926EJS

31.9灵活的coreConsultant

第32章 可测性设计

32.1内部扫描

32.2内建自测

32.3边界扫描

第五部分 时钟和复位

第33章 异步时序

33.1亚稳态

33.2 MTBF

33.3同步器

33.3.1电平同步器

33.3.2边沿检测同步器

33.3.3脉冲检测同步器

33.4同步多位数据

33.5异步FIFO

33.6 Design Ware

33.7 DW_fifoctl_s2_sf

33.8门级仿真

第34章 时钟生成

34.1同步电路

34.2设计原则

34.3分频器

34.3.1 1/n分频器

34.3.2 n/d分频器

34.4时钟切换

34.5时钟生成

第35章 时钟例子

35.1 Overview

35.2 CGU Clock

35.2.1 Clock List

35.2.2 Clock Diagram(见图35-1)

35.2.3 Clock Divider Rate(见表35-1)

35.3 Register Description(见表35-2)

35.3.1 CGU PLL Divider Register(CGU_PDR)

35.3.2 CGU Counter Regsister(CGU_CNT)

35.3.3 CGU PLL Control Register(CGU_PCR)

35.3.4 CGU Low Power Control Register(CGU_LPC)

35.3.5 CGU Status Register(CGU_CST)

35.3.6 CGU Divider 0 Register(CGU_DV0→1/s)

35.3.7 CGU Divider 1 Register(CGU_DV1→1/x)

35.3.8 CGU Divider 2 Register(CGU_DV2→1/n)

35.3.9 CGU Divider 3 Register(CGU_DV3→1/n)

35.3.10 CGU Divider 4/5/6/7 Register(CGU_DV4/5/6/7→n/d)

35.3.11 CGU Divider 8 Register(CGU_DV8→n/d)

35.3.12 CGU Divider 9 Register(CGU_DV9→n/d)

35.3.13 CGU Module Stop 0 Register(CGU_MS0)

35.3.14 CGU Module Stop 1 Register(CGU_MS1)

35.3.15 CGU Module Stop 2 Register(CGU_MS2)

35.3.16 CGU Reset Control Register(CGU_RCR)

35.3.17 CGU Reset Status Register(CGU_RST)

35.4 PLL Structure

35.4.1 Frequency Calculation

35.4.2 VCO Frequency Limitation

35.4.3 PFD Clock Frequency Limitation

35.5 PLL Control

35.6 Sleep and Wakeup

35.6.1 State switch

35.6.2 How to wakeup

35.7 Module Stop

35.8 Application Notes

第36章 复位设计

36.1复位的用途

36.2寄存器编码风格

36.2.1有/无同步复位寄存器

36.2.2寄存器推导原则

36.3同步复位

36.3.1编码风格和电路

36.3.2同步复位的优点

36.3.3同步复位的缺点

36.4异步复位

36.4.1编码风格和电路

36.4.2既有异步复位又有异步置位的寄存器

36.4.3异步复位的优点

36.4.4异步复位的缺点

36.5异步复位的问题

36.5.1复位recovery时间

36.5.2复位撤销经历不同的时钟周期

36.6复位同步器

36.6.1复位同步器有亚稳态吗?

36.6.2错误的ASIC Vendor模型

36.6.3有缺点的复位同步器

36.6.4复位时的仿真验证

36.7复位分布树

36.7.1同步复位分布技巧

36.7.2异步复位分布技巧

36.7.3复位分布树的时序分析

36.8复位毛刺的过滤

36.9异步复位的DFT

36.10多时钟复位的问题

36.10.1非协调的复位撤销

36.10.2顺序协调的复位撤销

36.11结论

第六部分 验证之路

第37章 验证之路

37.1整洁验证

37.2验证目标

37.3验证流程

37.4验证计划

37.5随机验证

37.6直接验证

37.7白盒验证

37.8模块验证

37.9系统验证

37.9.1验证重点

37.9.2验证环境

37.9.3 IP互连

37.9.4性能验证

37.10 DFT验证

37.11网表验证

37.12高级抽象

37.13灵活验证

37.14 ARM926EJS的Validation环境

37.14.1 Validation tools

37.14.2 Validation configuration files

37.14.3 Validation test suites

37.14.4 Validation flow

37.14.5 Building the model

37.14.6 Running Validation test suites

37.14.7 Debugging a single Validation test

37.15 AHB BusMatrix的验证

37.16某芯片的SoC验证环境

第七部分 其他介绍

第38章 SystemVerilog特性

38.1 SystemVerilog与Systemc比较

38.2 SystemVerilog的特点

38.3新的数据类型

38.3.1整型和实型

38.3.2新的操作符

38.3.3数组

38.3.4队列

38.3.5枚举类型

38.3.6结构体和共同体

38.4 always comb、always_latch和always_ff

38.5 unique和priority

38.6 loop、break和continue

38.7 task和function

38.7.1静态和自动作用域

38.7.2参数传递

38.7.3参数中的默认值

38.8 Port connection

38.9 Tag

38.10 Interface

38.11 class和object

38.11.1对象的概念

38.11.2类的创建

38.11.3类的继承

38.11.4类的randomize

38.11.5类的cover group

38.12 VMM、OVM和UVM

参考文献

关于版权


书查询(www.shuchaxun.com)本网页唯一编码:
ef761dc94aa3d4d76639e5d2d163b859#e85d4f793850e9a36b8378e1cfd2602d#87159357#Verilog编程艺术_13470839.zip