首页>参考读物>电子电工>电子工程

Perl语言IC设计实践
作者 : 滕家海 编著
出版日期 : 2021-12-29
ISBN : 978-7-111-69643-8
定价 : 79.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 235
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

本书采用集成电路设计工作中的实际案例,介绍了Perl的各类基本知识,包括:变量、子例程、正则表达式,文件操作等。针对模拟线路设计,数字线路设计和版图设计等设计过程,分别选取了有代表性的应用案例,实现并讲解和分析了完整的Perl代码。还介绍了集成电路设计工作中可能常用的模块,以及代码风格建议等进阶内容。本书zui后介绍了图形用户界面(Perl/Tk)的入门和常用功能.

图书特色

零基础 
循序渐进 
注重实践

图书前言

Perl语言的特点
Perl语言是一门解释型编程语言,与C/C++语言相比,它的程序不需要用户编译,可以直接运行。Perl的一个特点是,它提供了简洁的数据类型,包括标量、数组和散列(在其他高级语言中,常称为关系数组或字典),其中数组和散列可以是任意深度的嵌套组合—这使我们可以高效地描述数据。Perl内嵌的正则表达式是它的另一大特点,不仅提供了极其强大而全面的功能,而且使用起来非常方便。
IC设计为什么需要编程
如果你是IC设计领域的在职人员,那么你可能知道,许多EDA软件厂商为该领域提供了各式各样满足不同需求的EDA软件。在这种情形下,还需要我们编程吗?目前的答案仍然是肯定的。EDA软件专注于某个特定的任务,而无法满足公司定制的具体需求(比如根据公司内部的实际需求,生成特定格式的报告),也无法把多个可能来自不同厂商的软件串联起来运行。还有一些烦琐的手动编辑工作,暂时没有专门的软件来完成。这些都要通过编程来完成。
Perl语言可以应用在IC设计过程中的以下场景
在IC设计中,仿真、验证、版图设计等工作,都有专用的EDA软件。那么,Perl语言主要用在哪里呢?笼统地说,Perl语言可以用于以下场景:
处理输入文本。
运行某个EDA软件。
分析输出文本。
Perl语言也可以用于这三者的某种组合。比如,运行某个EDA软件并分析其结果,或者先处理输入文本,然后运行某个EDA软件,最后分析其结果,甚至根据结果去调整输入文本,循环运行EDA软件直至获得预期的结果。本书中的“文本”或“文本文件”是指netlist(网表)、Verilog文件、log文件等,不包括Word文档或PDF文档等包含格式信息的文件。
基于这些应用场景,本书会较全面地介绍Perl知识,以满足实际工作的需求。但一些内容,比如面向对象、嵌入C代码和二进制文件的处理等,这些在IC设计实践中很少用到的,本书没有涉及。
Perl语言的版本
本书的代码在Perl 5.10.1(CentOS 6.0)和Perl 5.34.0上均通过运行测试。只要所安装的语言版本不太老,都可以顺利运行本书的代码。
代码和勘误
本书所有带编号的代码均可从华章图书官网http://www.hzbook.com下载,或者向笔者发送电子邮件索取。笔者才疏学浅,尽管做了最大努力,书中仍难免有错,欢迎各位读者朋友指正。笔者的邮箱为jhteng@outlook.com。
本书面向的读者
本书主要面向Perl的初学者。如果你是IC设计行业的工程师(包括模拟IC设计、数字IC设计,版图设计和布局布线工程师等),希望你看到本书的实例时,会感到亲切。
如果你只了解一点Perl,但不熟悉它,或者不曾将Perl应用到IC设计过程中,又或者编写的代码只能自己使用,不知道该达成哪些规范来提高质量,那么本书会给你提供一些帮助。
本书目标
本书的目标就是使你学会Perl,并且能将Perl应用到IC设计实践中,提高工作效率。本书将介绍一些代码规范,使你的代码既正确又优雅,既利于他人阅读学习,也利于自己未来更新或扩充。
本书特点
零基础:对编程经验没有要求。
循序渐进:在介绍基础知识的过程中,逐步改进和完成一个处理命令行参数的模块,该模块可以应用到未来的实践中。
注重实践:本书遵循实际的IC设计过程,根据需求来完成相关的Perl编程工作。
本书内容
本书主要包含以下几章内容:
第1章 介绍Perl的基本知识。首先介绍准备工作,包括操作系统和Perl的安装,以及代码编辑软件的选择等;其次介绍如何逐步改进和完成命令行参数,包括变量、控制结构、正则表达式、子例程和模块等。
第2章 介绍Perl与操作系统的交互,包括文件/目录操作、执行shell命令和设计Perl程序的参数等。
第3章 介绍正则表达式。
第4章 对第1章和第2章完成的模块进行补充和改进,为后续第5~7章做准备。
第5章 介绍Perl在模拟IC电路设计中的应用—处理PVT仿真的程序。
第6章 介绍Perl在版图验证过程中的应用—处理版图验证的程序。
第7章 介绍Perl在数字IC电路设计过程中的应用—连接数字模块(Verilog)的程序,重点介绍Perl数据结构的灵活性。
第8章 介绍如何提升代码质量以及其他话题。
第9章 介绍特殊名称、常用函数和模块。
致谢
本书得以出版,首先要感谢陈刚先生,我曾经的上级主管。在2020年春节前夕,他建议我写一本书,总结一下自己的经验,分享给本行业的年轻设计人员。在编写过程中,他也时常鼓励我,还仔细审阅了书稿,并提出了一百多条改进意见。
我还要感谢我的同事黄飞鹏、方亮亮、董庆祥和张劼。黄飞鹏先生是模拟电路设计专家,他向我推荐了PVT自动化的实例,并给予了细致的说明和指导。方亮亮女士是数字电路设计专家,她向我推荐了自动连接Verilog的实例,也热心解答了我的关于数字电路设计方面的问题。董庆祥先生是模拟电路设计专家,他建议我花点篇幅介绍Perl的特点,我希望本书能达成他的期望。张劼先生是模拟电路设计专家,我经常向他请教各类电路知识,避免了一些电路设计方面的错误。
我还要感谢机械工业出版社的编辑杨福川先生、王颖女士、张梦玲女士和李美莹女士。杨先生是我之前译作的责任编辑,在得知我有意编写本书后,积极将本选题推荐给了王颖女士。王颖女士帮助我确定了此书的结构和内容框架,并告知我许多成书方面的注意事项。张梦玲女士在书稿定稿前期给予了许多细节上的指导。李美莹女士是本书的责任编辑,她全面仔细地审阅了全书,并给予了书稿编辑加工方面的指导。
我很荣幸邀请到王添平先生为本书作序。他是IC领域的资深专家,曾在多家国际知名IC公司任高级主管,在行业内辛勤付出近三十年,现任高云半导体公司CTO。他作为我的领导,对本书的出版也非常关心,经常给予我鼓励与支持。
最后,感谢我的家人,永远给予我宽容与鼓励。

滕家海
2021年6月

上架指导

集成电路设计

封底文字

Perl语言以其强大的文字处理能力和简单的语法在IC设计领域得到了广泛应用。本书详细阐述了 Perl语言从基础、进阶到IC实战的相关内容。对于立志从事IC设计的新兵和想要提升工作效率的老兵,本书既是快速查询的宝典,又是拓展Perl高级用法的不可多得的好书。
—— 杜兴东,高通信息科技(上海)有限公司工程技术总监
随着人工智能、高性能计算、自动驾驶等应用的发展,芯片规模和设计难度越来越大,芯片设计自动化也越来越重要。Perl语言以其强大的文本处理能力,简洁灵活的编程特点,在芯片设计流程中发挥着重要作用。本书用典型实例讲解了如何使用Perl语言提高设计效率,是芯片设计领域学习Perl语言的好书。
—— 郭俊,AMD图形芯片设计总监
Perl语言高效、易用,且具有强大的文本处理能力。实践表明,在集成电路设计领域,用Perl语言比传统的设计方法更为高效,设计质量也明显提升。本书对于集成电路设计工程师而言是一本值得信赖的参考书,堪称集成电路设计领域的“小骆驼书”。
—— 刘慧,华大半导体设计总监
学会一种编程语言不难,但如何更好地运用在实际工作中,却不容易。这本书结合实例表明Perl语言可以灵活运用于IC设计和验证过程中。书中介绍的IC研发中运用Perl语言实现EDA工具、系统环境和设计要求协调工作的方法和思路,值得参考和借鉴。本书对IC设计行业的读者特别有用,强烈推荐!
—— 陈国胜,莱迪思半导体(中国)EDA经理
除了Perl语言初学者,我还推荐芯片研发工程师阅读本书。本书告诉你如何使计算机自动处理一系列重复性的工作。不需要精通Perl语言,只要掌握本书介绍的技巧,你就可以成倍地提高工作效率。
—— 陈刚,曾任ATMEL主任工程师

图书目录


前言
第1章 Perl语言基础 1
1.1 准备工作 1
1.1.1 安装环境 1
1.1.2 选择编辑器 2
1.1.3 查阅官方文档 3
1.1.4 运行本书中的程序 3
1.2 初识命令行参数 4
1.2.1 标量 7
1.2.2 数组 8
1.2.3 循环结构for 9
1.3 改进命令行参数 10
1.3.1 散列 13
1.3.2 判断结构if 14
1.3.3 “真”与“假” 15
1.4 继续改进命令行参数 16
1.4.1 数组的散列 20
1.4.2 散列的散列 21
1.5 完成命令行参数 22
1.5.1 引用 25
1.5.2 子例程 27
1.5.3 模块 29
第2章 与操作系统交互 34
2.1 识别文件或目录 34
2.2 读取文件 35
2.3 写入文件 37
2.4 读取目录 39
2.5 创建目录 39
2.6 执行操作系统命令 40
2.7 获取系统命令的输出 41
2.8 获取和设置环境变量 41
2.9 读取命令行参数 41
第3章 正则表达式 45
3.1 匹配的基本过程 46
3.2 匹配 48
3.2.1 普通字符 48
3.2.2 元字符 49
3.2.3 反斜杠家族 54
3.2.4 修饰符 56
3.2.5 内插变量 57
3.3 分组和捕获 59
3.3.1 分组并捕获 59
3.3.2 匹配的特点 62
3.3.3 分组不捕获 64
3.3.4 分组捕获并反向引用 65
3.4 替换 66
3.4.1 修饰符 67
3.4.2 界定符 67
3.4.3 不改变原变量 67
第4章 模块的改进 68
4.1 参数值存为标量 68
4.2 增加data_type的类型识别 69
4.3 提供默认值 70
4.4 新增子例程 72
4.4.1 把文件读取到数组中 72
4.4.2 把数组写入文件中 73
4.4.3 新建目录 73
4.5 参数值可以短划线开头 74
第5章 模拟IC电路仿真实践 75
5.1 模拟IC电路设计流程简介 75
5.2 PVT仿真的过程 76
5.3 定义PVT仿真程序的功能 77
5.4 程序的主体 79
5.5 各子例程 81
5.5.1 define_opt_rule 81
5.5.2 run_pvt 82
5.5.3 generate_netlist 83
5.5.4 run_sim 84
5.5.5 get_sim_result 85
5.5.6 generate_report 86
5.6 补充说明 86
第6章 版图设计实践 88
6.1 版图设计流程简介 88
6.2 DRC程序的功能定义和参数设计 89
6.3 程序的主体 90
6.4 各子例程 93
6.4.1 prepare_run_dir 93
6.4.2 export_gds 94
6.4.3 prepare_drc_rule 95
6.4.4 replace_array 96
6.4.5 get_match_word 97
6.4.6 run_drc 98
6.4.7 report_result 99
6.5 补充说明 99
第7章 数字IC电路设计实践 101
7.1 Verilog连接程序的功能定义和参数设计 101
7.2 程序的主体 104
7.3 各子例程 106
7.3.1 read_f?ile_list 106
7.3.2 read_verilog_f?ile 107
7.3.3 con_top_verilog 109
7.3.4 generate_lines 111
7.3.5 output_verilog 113
7.4 补充说明 115
第8章 提升代码质量 116
8.1 正确的代码 116
8.1.1 use strict 116
8.1.2 use warnings 119
8.1.3 程序的结构 120
8.1.4 轻度debug 122
8.2 好看的代码 123
8.2.1 缩进和大括号 123
8.2.2 断行 125
8.2.3 注释 126
8.2.4 POD 127
8.3 中文处理 129
8.3.1 常量 130
8.3.2 变量名 130
8.3.3 文件的内容 131
8.4 递归 132
8.5 监控长时间运行的任务 134
8.6 杂项 145
8.6.1 <<操作符 145
8.6.2 Schwartz变换 147
8.6.3 其他运算符 147
8.6.4 非十进制数处理 150
8.7 更多阅读推荐 153
第9章 特殊名称、常用函数与模块 156
9.1 特殊名称 156
9.1.1 $0 156
9.1.2 @ARGV 157
9.1.3 $_ 157
9.1.4 @_ 160
9.1.5 $a和$b 161
9.1.6 $. 161
9.1.7 %ENV 161
9.1.8 $$ 162
9.1.9 $! 162
9.1.10 STDERR、STDIN、STDOUT 162
9.2 常用函数 163
9.2.1 数学计算 164
9.2.2 标量操作 166
9.2.3 列表和数组处理 171
9.2.4 仅数组处理(不能处理列表) 174
9.2.5 散列处理 177
9.2.6 输入输出 179
9.2.7 文件(和目录)操作 193
9.2.8 流程控制 198
9.2.9 范围 201
9.2.10 时间处理 205
9.2.11 其他函数 206
9.3 常用模块 211
9.3.1 strict 211
9.3.2 warnings 214
9.3.3 parent 215
9.3.4 Benchmark 216
9.3.5 Cwd 218
9.3.6 Data::Dumper 219
9.3.7 Digest::MD5 220
9.3.8 File::Basename 221
9.3.9 Spreadsheet::XLSX 222

教学资源推荐
作者: 周元钧 编著
作者: 吴建华 李华 等编著
作者: [美]穆罕默德·阿里·马齐迪(Muhammad Ali Mazidi) 詹尼斯·吉利斯皮·马齐迪(Janice Gillispie Mazidi) 罗兰D.麦金利(Rolin D. Mckinlay)著
作者: 何海波 (Haibo He)著
参考读物推荐
作者: 阙志达 蔡佩芸 赖以威 著
作者: 白海潮 编著
作者: 黄文恺 伍冯洁 陈虹 著
作者: [澳]苏巴斯·钱德拉·穆科霍达耶(Subhas Chandra Mukhopadhyay) [印]塔里库尔·伊斯拉姆(Tarikul Islam )著