图书介绍
EDA精品智汇馆 Verilog编程艺术PDF|Epub|txt|kindle电子书版本网盘下载
![EDA精品智汇馆 Verilog编程艺术](https://www.shukui.net/cover/8/35045306.jpg)
- 魏家明编著 著
- 出版社: 北京:电子工业出版社
- ISBN:7121220616
- 出版时间:2014
- 标注页数:433页
- 文件大小:80MB
- 文件页数:458页
- 主题词:
PDF下载
下载说明
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