图书目录

目录

配套资源

本书源码

数字电路及Verilog篇

第1章引言(15min)

1.1基础概念

1.1.1模拟信号和数字信号

1.1.2计算机和芯片的组成关系

1.1.3芯片设计的流程

1.1.4芯片设计的方向

1.1.5学习数字电路、Verilog和SystemVerilog的必要性

1.2设计与验证的常识

1.2.1设计与验证的关系

1.2.2验证方案要素

1.2.3测试平台组成

1.2.4覆盖率的分类

1.3本章小结

第2章数字逻辑电路基础(12min)

2.1数制及其表示

2.1.1数制

2.1.2有符号数

2.2布尔代数

2.3基本逻辑电路

2.3.1与门电路

2.3.2或门电路

2.3.3非门电路

2.3.4锁存器

2.3.5触发器

2.4逻辑电路结构

2.4.1建立时间和保持时间

2.4.2组合逻辑电路

2.4.3时序逻辑电路

2.5硬件描述的抽象级别

2.6本章小结

第3章Verilog基础(85min)

3.1数值表示

3.2数据类型

3.2.1变量

3.2.2线网

3.2.3参数

3.2.4字符串

3.3运算符

3.3.1基本运算符

3.3.2按位运算符

3.3.3逻辑运算符

3.3.4关系运算符

3.3.5移位运算符

3.3.6拼接运算符

3.3.7缩减运算符

3.3.8三目运算符

3.3.9复制运算符

3.3.10位选择运算符

3.3.11运算符的优先级别

3.4程序块语句

3.4.1顺序执行程序块

3.4.2并行执行程序块

3.4.3混合执行程序块

3.5结构语句

3.5.1initial语句

3.5.2always语句

3.6赋值语句

3.6.1阻塞和非阻塞赋值语句

3.6.2连线赋值语句

3.6.3强制赋值语句

3.7条件和循环语句

3.7.1条件语句

3.7.2循环语句

3.7.3程序块的自动生成

3.8任务和函数

3.8.1任务

3.8.2函数

3.9控制语句

3.9.1终止程序语句

3.9.2同步等待语句

3.10系统函数

3.10.1$display和$write,$time和$realtime

3.10.2$random

3.10.3$finish

3.10.4$readmemb和$readmemh

3.10.5$fopen、$fclose、$fdisplay和$fwrite

3.10.6$test$plusargs和$value$plusargs

3.10.7$realtobits和$bitstoreal

3.10.8$signed和$unsigned

3.10.9$monitor

3.11宏定义

3.11.1仿真时间单位和精度

3.11.2文件包含

3.11.3全局参数

3.11.4条件编译

3.12本章小结

第4章组合逻辑电路实例(46min)

4.1解码器

4.1.1真值表

4.1.2卡诺图及逻辑表达式

4.1.3电路图

4.1.4Verilog实现

4.1.5测试平台

4.1.6仿真验证

4.2加法器

4.2.1真值表

4.2.2卡诺图及逻辑表达式

4.2.3电路图

4.2.4Verilog实现

4.2.5测试平台

4.2.6仿真验证

4.3存储器

4.3.1Verilog实现

4.3.2测试平台

4.3.3仿真验证

4.4本章小结

第5章时序逻辑电路实例(84min)

5.1触发器

5.1.1Verilog实现

5.1.2测试平台

5.1.3仿真验证

5.2移位寄存器

5.2.1Verilog实现

5.2.2测试平台

5.2.3仿真验证

5.3计数器

5.3.1Verilog实现

5.3.2测试平台

5.3.3仿真验证

5.4状态机

5.4.1过程分析

5.4.2Verilog实现

5.4.3测试平台

5.4.4仿真验证

5.5本章小结

SystemVerilog篇

第6章SystemVerilog基础(169min)

6.1数据类型

6.1.1基本类型

6.1.2枚举类型

6.1.3字符串类型

6.1.4数组和队列类型

6.1.5自定义类型

6.1.6结构体和联合体类型

6.1.7常量

6.1.8变量转换

6.2运算符

6.3任务和函数

6.3.1Verilog与SystemVerilog的差异

6.3.2支持ref端口类型

6.4循环及其控制语句

6.4.1循环语句

6.4.2控制及结束语句

6.5结构语句

6.5.1final语句

6.5.2always_comb和always_ff语句

6.5.3末尾标签

6.6并行执行程序块语句

6.7控制语句

6.7.1wait fork等待语句

6.7.2iff条件控制语句

6.7.3inside匹配语句

6.7.4进程控制类

6.8分支语句

6.9面向对象编程

6.9.1面向对象的概念

6.9.2结构体和类

6.9.3类的封装

6.9.4类的继承

6.9.5类的多态

6.9.6类的模板

6.9.7类的静态和动态变量及方法

6.9.8类的复制和克隆

6.9.9类的参数化

6.10接口

6.10.1基本介绍

6.10.2端口分组

6.10.3时钟块

6.10.4虚接口和接口方法

6.11包

6.12断言

6.12.1立即断言

6.12.2并发断言

6.13随机化

6.13.1类的随机及约束

6.13.2随机种子

6.13.3单向约束

6.13.4双向约束

6.13.5权重分布

6.13.6约束开关控制

6.13.7随机开关控制

6.13.8随机回调方法

6.13.9检查器

6.13.10约束求解顺序

6.13.11权重分支

6.13.12软约束

6.13.13随机范围

6.14系统函数

6.14.1$isunknown

6.14.2$urandom_range

6.14.3$system

6.14.4$bits

6.14.5$typename

6.14.6$left、$right、$size、$dimensions

6.14.7$clog2

6.14.8$sformatf

6.14.9$fscanf

6.14.10$root

6.15宏函数

6.16线程间的通信

6.16.1旗语

6.16.2邮箱

6.16.3事件

6.17覆盖率收集

6.17.1基本介绍

6.17.2覆盖组

6.17.3设置覆盖仓

6.17.4设置采样条件

6.17.5参数化的覆盖组

6.17.6翻转覆盖率收集

6.17.7覆盖仓中的通配符

6.17.8交叉覆盖率

6.17.9忽略和非法覆盖仓

6.17.10覆盖率选项参数

6.17.11覆盖率方法接口

6.18绑定辅助代码

6.18.1绑定到模块

6.18.2绑定到接口

6.19与其他编程语言的通信

6.19.1基本介绍

6.19.2使用步骤

6.20本章小结

第7章参考实例

7.1对运算器的设计和验证

7.1.1设计说明

7.1.2设计实现

7.1.3测试计划

7.1.4搭建测试平台

7.1.5仿真验证

7.1.6覆盖率分析和提高

7.2对寄存器控制的运算器的设计和验证

7.2.1设计说明

7.2.2设计实现

7.2.3测试计划

7.2.4搭建测试平台

7.2.5仿真验证

7.3对基于APB总线的运算器的设计和验证

7.3.1设计说明

7.3.2设计实现

7.3.3测试计划

7.3.4搭建测试平台

7.3.5仿真验证

7.4本章小结

参考文献