图书介绍

EDA精品智汇馆 Verilog编程艺术PDF|Epub|txt|kindle电子书版本网盘下载

EDA精品智汇馆 Verilog编程艺术
  • 魏家明编著 著
  • 出版社: 北京:电子工业出版社
  • ISBN:7121220616
  • 出版时间:2014
  • 标注页数:433页
  • 文件大小:80MB
  • 文件页数:458页
  • 主题词:

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

EDA精品智汇馆 Verilog编程艺术PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

第一部分 设计原则2

第1章 美的设计2

1.1美学观点2

1.2美是修养3

1.3专业术语4

第2章 高效之道5

2.1敏捷开发5

2.2代码质量6

2.3版本控制7

2.4提早集成7

第3章 组织管理9

3.1植物分类9

3.2 SoC特性11

3.3设计流程12

3.4仔细规划12

3.5管理表格13

3.6模块层次14

3.7目录组织14

第4章 使用工具19

4.1使用Emacs19

4.1.1 Emacs介绍19

4.1.2 Emacs安装19

4.1.3常用快捷键20

4.1.4我的.emacs21

4.1.5 cua-base.el22

4.1.6 verilog-mode.el23

4.1.7 shell buffer23

4.2使用Shell24

4.2.1 Shell介绍24

4.2.2 Shell例子24

4.2.3 Perl例子25

4.3使用CVS26

4.3.1 CVS介绍26

4.3.2 CVS术语27

4.3.3 CVS初始化27

4.3.4 CVS常用命令29

第5章 编码风格31

5.1干干净净32

5.2代码划分32

5.3代码要求33

5.3.1 Venlog部分33

5.3.2 SystemVerilog部分40

5.4名字定义40

5.5书写格式42

5.5.1模块端口声名42

5.5.2模块实例化45

5.5.3函数和任务调用47

5.5.4书写语句47

5.5.5书写表达式48

5.6添加注释49

5.7参数化50

5.8 lint检查52

第二部分 语言特性54

第6章 Verilog特性54

6.1 Verilog标准54

6.2抽象级别54

6.3可综合子集55

6.4保持一致57

第7章 常数58

7.1整数(integer)58

7.2实数(real)60

7.3字符串(string)60

7.4标识符(identifier)60

第8章 数据类型61

8.1线网(net)61

8.1.1 wire和tn61

8.1.2 wor、wand、trior、triand61

8.1.3 tri0、tri161

8.1.4 uwire61

8.1.5 supply0、supplyl62

8.1.6驱动强度62

8.1.7默认net62

8.2变量(variable)62

8.3线网和变量的区别63

8.4向量(vector)64

8.5数组(array)65

8.6多维数组65

第9章 表达式67

9.1操作符(Operator)67

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

9.1.2表达式中使用整数68

9.1.3算数操作符(Arithmetic operators)69

9.1.4算术表达式中的regs和integers69

9.1.5比较操作符(Compare operators)70

9.1.6逻辑操作符(Logical operators)70

9.1.7位运算操作符(Bitwise operators)71

9.1.8归约操作符(Reduction operators)71

9.1.9移位操作符(Shift operators)71

9.1.10条件操作符(Conditional operator)72

9.1.11连接操作符(Concatenations)72

9.2操作数(Operands)73

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

9.2.2 part-select的例子75

9.2.3数组的访问75

9.2.4字符串76

9.3表达式位长(Expression bit lengths)77

9.3.1表达式位长规则77

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

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

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

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

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

9.4符号表达式(Signed expressions)80

9.4.1表达式类型规则81

9.4.2计算表达式的步骤81

9.4.3执行赋值的步骤82

9.4.4 signed表达式中处理x和z82

9.4.5 signed应用的例子82

9.4.6 signed应用的错误83

9.5赋值和截断(Assignments and truncation)84

9.6与x/z比较85

第10章 赋值操作86

10.1连续赋值86

10.2过程赋值87

第11章 门级和开关级模型88

11.1门和开关的声明语法88

11.1.1门和开关类型88

11.1.2驱动强度88

11.1.3延迟89

11.1.4实例数组89

11.2 and、nand、nor、or、xor、xnor90

11.3 buf、not90

11.4 bufif1、bufif0、notif1、notif090

11.5 MOS switches90

11.6 Bidirectional pass switches91

11.7 pullup、pulldown91

第12章 用户定义原语92

12.1 UDP定义92

12.1.1 UDP状态表92

12.1.2状态表符号93

12.2组合UDP93

12.3电平敏感时序UDP93

12.4沿敏感时序UDP94

第13章 行为模型97

13.1概览97

13.2过程赋值98

13.2.1阻塞赋值98

13.2.2非阻塞赋值99

13.3过程连续赋值102

13.3.1 assign和deassign过程语句103

13.3.2 force和release过程语句103

13.4条件语句104

13.5循环语句105

13.5.1 for循环例子106

13.5.2 disable语句107

13.6过程时序控制108

13.6.1延迟控制(Delay control)108

13.6.2事件控制(Event control)108

13.6.3命名事件(Named events)109

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

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

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

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

13.7块语句113

13.7.1顺序块(Sequential block)113

13.7.2并行块(Parallel block)114

13.7.3块名字(Block names)114

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

13.8结构化过程116

13.8.1 initial construct116

13.8.2 always construct116

13.8.3 always的敏感列表117

13.8.4并发进程117

13.9 always有关的问题118

13.9.1敏感列表不完整118

13.9.2赋值顺序错误119

第14章 case语句120

14.1 case语句定义121

14.2 case语句的执行122

14.3 Verilog和VHDL对比123

14.4 case的应用123

14.5 casez的应用125

14.6描述状态机126

14.7 casex的误用127

14.8 casez的误用128

14.9 full case和parallel_case128

14.10 full case129

14.10.1不是full的case语句129

14.10.2是full的case语句129

14.10.3使用full case综合指令130

14.10.4 full case综合指令的缺点131

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

14.11 paralle_ase132

14.11.1不是parallel的case语句132

14.11.2是parallel的case语句133

14.11.3使用parallel case综合指令133

14.11.4 parallel case综合指令的缺点134

14.11.5没有必要的parallel case指令135

14.12综合时的警告135

14.13 case语句的编码原则136

第15章 task和function137

15.1 task和function之间的不同点137

15.2 task的声明和使能137

15.2.1 task的声明137

15.2.2 task的使能和参数传递138

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

15.3 disable语句141

15.3.1 disable语句的例子A141

15.3.2 disable语句的例子B143

15.4 function的声明和调用145

15.4.1 function的声明145

15.4.2 function的返回值147

15.4.3 function的调用147

15.4.4 function的规则147

15.4.5 constant function148

15.5 task的误用149

15.6 function的误用149

第16章 调度和赋值151

16.1仿真过程151

16.2事件仿真151

16.3仿真参考模型152

16.4分层事件队列153

16.4.1事件队列分类154

16.4.2事件队列特性155

16.4.3事件调度例子155

16.5确定性和不确定性157

16.5.1确定性(Determinism)157

16.5.2不确定性(Nondeterminism)157

16.6赋值的调度含义158

16.6.1连续赋值159

16.6.2过程连续赋值159

16.6.3阻塞赋值159

16.6.4非阻塞赋值159

16.6.5开关处理159

16.6.6端口连接159

16.6.7任务和函数160

16.7阻塞赋值和非阻塞赋值160

16.7.1阻塞赋值160

16.7.2非阻塞赋值161

16.8赋值使用原则161

16.9自己触发自己162

16.10仿真零延迟RTL模型163

16.11惯性延迟和传输延迟165

16.11.1门级仿真中的传输延迟166

16.11.2各种#delay的位置168

16.11.3仿真时钟生成方法169

16.12延迟线模型170

16.13使用#1延迟171

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

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

16.16 RTL和门级混合仿真176

16.16.1 RTL-to-Gates仿真177

16.16.2 Gates-to-RTL仿真177

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

16.16.4有时钟偏差的Vendor模型178

16.16.5错误的Vendor模型179

16.16.6结论和建议183

16.17带有SDF延迟的门级仿真183

16.17.1全系统仿真183

16.17.2软件要花钱184

16.17.3门级回归仿真184

16.18验证平台技巧185

16.18.1在0时刻复位186

16.18.2时钟沿之后复位186

16.18.3创建仿真时钟186

16.18.4在无效沿输入激励187

第17章 层次结构188

17.1模块188

17.1.1模块定义188

17.1.2模块实例188

17.2参数188

17.2.1参数声明189

17.2.2参数调整189

17.2.3参数传递190

17.2.4参数依赖192

17.2.5内部参数193

17.2.6 clog2193

17.2.7指数**194

17.3端口194

17.3.1端口声明194

17.3.2端口连接195

17.3.3实数传递196

17.4 Generate语句196

17.4.1 Loop generate construct197

17.4.2 Conditional generate construct200

17.5实例数组201

17.6层次名字203

第18章 系统任务和函数205

18.1显示任务205

18.1.1显示和写出任务205

18.1.2探测任务208

18.1.3监控任务209

18.2文件读写209

18.2.1打开和关闭文件209

18.2.2文件输出211

18.2.3字符串输出212

18.2.4文件输入213

18.2.5文件定位216

18.2.6刷新输出216

18.2.7错误状态216

18.2.8检查文件尾部217

18.2.9加载文件数据217

18.3时间比例218

18.3.1 $printtimescale218

18.3.2 $timeformat218

18.4仿真控制218

18.4.1 $finish218

18.4.2 $stop218

18.5仿真时间218

18.6转换函数219

18.7概率分布220

18.7.1 $random220

18.7.2 $dist functions220

18.8命令行输入220

18.8.1 $test$plusargs221

18.8.2 $value$plusargs221

18.9数学运算223

18.9.1整数函数223

18.9.2实数函数223

18.10波形记录224

第19章 编译指令225

19.1 ?celldefine和?endcelldefine225

19.2 ?default_nettype225

19.3 ?define和?undef226

19.4 ?ifdef、?else、?elsif、?endif、?ifndef227

19.5 ?include228

19.6 ?resetall228

19.7 ?line228

19.8 ?timescale229

19.9 ?unconnected drive和?nounconnected drive230

19.10 ?begin_keywords和?end_keywords230

19.11 ?pragma230

第20章 Specify块231

20.1 specify块声明231

20.2 speparam231

20.3模块路径声明232

20.3.1模块路径要求232

20.3.2简单路径232

20.3.3沿敏感路径233

20.3.4状态依赖路径234

20.4模块路径延迟235

第21章 时序检查237

21.1概览237

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

21.2.1 $setup、$hold、$setuphold238

21.2.2 $recovery、$removal、$recrem238

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

21.3.1 $skew、$timeskew、$fullskew240

21.3.2 $width240

21.3.3 $period241

21.3.4 $nocbange241

21.4使用notifier响应时序违反241

21.5使用条件事件242

21.6时序检查中的Vector243

21.7 Negative timing check243

第22章 反标SDF246

22.1 SDF标注器246

22.2 SDF construct到Verilog的映射246

22.2.1 SDF路径延迟到Verilog的映射246

22.2.2 SDF时序检查到Verilog的映射247

22.2.3 SDF互连延迟的标注248

22.3 $sdf_annotate249

22.4 SDF文件例子250

第23章 编程语言接口252

23.1 DirectC252

23.2 SystemVerilog252

第24章 综合指令253

24.1 Synopsys综合指令253

24.2使用综合指令253

24.3使用translate_off/on254

24.4误用translate_off/on256

24.5使用attribute256

第三部分 书写文档260

第25章 书写文档260

25.1文档格式260

25.2定义文档261

25.3应用文档262

25.4设计文档262

25.5备份文档263

25.6 GPIO设计263

第26章 GPIO应用文档264

26.1 Overview264

26.2 Register Description264

26.2.1 PIN Level Register(PIN)265

26.2.2 Data Register(DAT)265

26.2.3 Data Set Register(DATS)265

26.2.4 Data Clear Register(DATC)265

26.2.5 Mask Register(IM)266

26.2.6 Mask Set Register(IMS)266

26.2.7 Mask Clear Register(IMC)266

26.2.8 PULL Enable Register(PEN)266

26.2.9 PEN Enable Set Register Register(PENS)266

26.2.10 PEN Enable Clear Register Register(PENC)266

26.2.11 PSEL Select Register(PSEL)266

26.2.12 PSEL Enable Set Register Register(PSELS)266

26.2.13 PSEL Enable Clear Register Register(PSELC)267

26.2.14 Function Register(FUN)267

26.2.15 Function Set Register(FUNS)267

26.2.16 Function Clear Register(FUNC)267

26.2.17 Select Register(SEL)267

26.2.18 Select Set Register(SELS)267

26.2.19 Select Clear Register(SELC)267

26.2.20 Direction Register(DIR)267

26.2.21 Direction Set Register(DIRS)268

26.2.22 Direction Clear Register(DIRC)268

26.2.23 Trigger Register(TRG)268

26.2.24 Trigger Set Register(TRGS)268

26.2.25 Trigger Clear Register(TRGC)268

26.2.26 FLAG Register(FLG)268

26.2.27 FLAG Clear Register(FLGC)269

26.3 Program Guide269

26.3.1 GPIO Function Guide269

26.3.2 Alternate Function Guide269

26.3.3 Interrupt Function Guide269

26.3.4 Disable Interrupt Function Guide270

第27章 GPIO设计文档271

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

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

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

第四部分 高级设计274

第28章 使用IP274

28.1 Cadence的IP274

28.2 Cadence的VIP275

28.3 Synopsys的IP275

28.4 DesignWare Building Block276

28.5在FPGA上使用DesignWare276

第29章 代码优化278

29.1代码可读278

29.2简洁编码279

29.3优化逻辑281

29.4优化迟到信号281

29.5括号控制结构282

第30章 状态机设计283

30.1状态机类型283

30.2状态编码方式283

30.3二进制编码FSM284

30.3.1两个always块284

30.3.2重要的编码规则285

30.3.3错误状态的转换285

30.3.4 next的默认值285

30.4独热码编码FSM286

30.5寄存器输出287

第31章 可配置设计289

31.1格雷码转换289

31.2通用串行CRC290

31.2.1 general_crc.v290

31.2.2 testbench292

31.3 FIFO控制器293

31.4 RAM Wrapper例子296

31.4.1常规方法296

31.4.2名字规范化297

31.4.3 RFl_wrapper.v298

31.4.4 gen_wrapper.pl302

31.4.5 ram_def.txt例子306

31.4.6生成wrapper307

31.5可配置的GPIO设计308

31.5.1 gpio.v308

31.5.2 gpio_params.v317

31.5.3 gpio_check.v317

31.5.4 gpio_reg.v318

31.5.5 gpio_sync.v319

31.6可配置的BusMatrix320

31.6.1 BusMatrix简介320

31.6.2设计ABM321

31.6.3 mini abm322

31.6.4 large-abm331

31.7可配置的Andes Core N801333

31.8可配置的ARM926EJS334

31.9灵活的coreConsultant336

第32章 可测性设计337

32.1内部扫描337

32.2内建自测339

32.3边界扫描340

第五部分 时钟和复位342

第33章 异步时序342

33.1亚稳态342

33.2 MTBF343

33.3同步器344

33.3.1电平同步器344

33.3.2边沿检测同步器345

33.3.3脉冲检测同步器345

33.4同步多位数据347

33.5异步FIFO348

33.6 Design Ware348

33.7 DW_fifoctl_s2_sf349

33.8门级仿真351

第34章 时钟生成352

34.1同步电路352

34.2设计原则353

34.3分频器353

34.3.1 1/n分频器353

34.3.2 n/d分频器355

34.4时钟切换355

34.5时钟生成358

第35章 时钟例子362

35.1 Overview362

35.2 CGU Clock362

35.2.1 Clock List362

35.2.2 Clock Diagram(见图35-1)363

35.2.3 Clock Divider Rate(见表35-1)364

35.3 Register Description(见表35-2)364

35.3.1 CGU PLL Divider Register(CGU_PDR)364

35.3.2 CGU Counter Regsister(CGU_CNT)365

35.3.3 CGU PLL Control Register(CGU_PCR)365

35.3.4 CGU Low Power Control Register(CGU_LPC)365

35.3.5 CGU Status Register(CGU_CST)365

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

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

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

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

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

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

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

35.3.13 CGU Module Stop 0 Register(CGU_MS0)367

35.3.14 CGU Module Stop 1 Register(CGU_MS1)368

35.3.15 CGU Module Stop 2 Register(CGU_MS2)368

35.3.16 CGU Reset Control Register(CGU_RCR)369

35.3.17 CGU Reset Status Register(CGU_RST)369

35.4 PLL Structure369

35.4.1 Frequency Calculation370

35.4.2 VCO Frequency Limitation370

35.4.3 PFD Clock Frequency Limitation370

35.5 PLL Control371

35.6 Sleep and Wakeup371

35.6.1 State switch371

35.6.2 How to wakeup372

35.7 Module Stop372

35.8 Application Notes373

第36章 复位设计374

36.1复位的用途374

36.2寄存器编码风格374

36.2.1有/无同步复位寄存器374

36.2.2寄存器推导原则376

36.3同步复位376

36.3.1编码风格和电路377

36.3.2同步复位的优点378

36.3.3同步复位的缺点379

36.4异步复位379

36.4.1编码风格和电路380

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

36.4.3异步复位的优点381

36.4.4异步复位的缺点382

36.5异步复位的问题382

36.5.1复位recovery时间383

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

36.6复位同步器383

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

36.6.2错误的ASIC Vendor模型385

36.6.3有缺点的复位同步器385

36.6.4复位时的仿真验证386

36.7复位分布树387

36.7.1同步复位分布技巧389

36.7.2异步复位分布技巧389

36.7.3复位分布树的时序分析390

36.8复位毛刺的过滤391

36.9异步复位的DFT391

36.10多时钟复位的问题392

36.10.1非协调的复位撤销392

36.10.2顺序协调的复位撤销393

36.11结论394

第六部分 验证之路396

第37章 验证之路396

37.1整洁验证397

37.2验证目标398

37.3验证流程398

37.4验证计划398

37.5随机验证399

37.6直接验证399

37.7白盒验证399

37.8模块验证400

37.9系统验证400

37.9.1验证重点400

37.9.2验证环境401

37.9.3 IP互连401

37.9.4性能验证401

37.10 DFT验证402

37.11网表验证402

37.12高级抽象403

37.13灵活验证405

37.14 ARM926EJS的Validation环境406

37.14.1 Validation tools407

37.14.2 Validation configuration files407

37.14.3 Validation test suites407

37.14.4 Validation flow408

37.14.5 Building the model408

37.14.6 Running Validation test suites408

37.14.7 Debugging a single Validation test410

37.15 AHB BusMatrix的验证411

37.16某芯片的SoC验证环境411

第七部分 其他介绍414

第38章 SystemVerilog特性414

38.1 SystemVerilog与Systemc比较414

38.2 SystemVerilog的特点414

38.3新的数据类型415

38.3.1整型和实型415

38.3.2新的操作符416

38.3.3数组416

38.3.4队列417

38.3.5枚举类型417

38.3.6结构体和共同体417

38.4 always comb、always_latch和always_ff417

38.5 unique和priority418

38.6 loop、break和continue419

38.7 task和function419

38.7.1静态和自动作用域419

38.7.2参数传递420

38.7.3参数中的默认值420

38.8 Port connection421

38.9 Tag421

38.10 Interface422

38.11 class和object425

38.11.1对象的概念425

38.11.2类的创建426

38.11.3类的继承427

38.11.4类的randomize428

38.11.5类的cover group429

38.12 VMM、OVM和UVM429

参考文献431

关于版权432

热门推荐