新書推薦:
《
马拉松名将手记2:每个人都有自己的决战
》
售價:HK$
79.4
《
大家小书 译馆 骑士:历史与文化
》
售價:HK$
56.4
《
没有一种人生是完美的:百岁老人季羡林的人生智慧(读完季羡林,我再也不内耗了)
》
售價:HK$
56.9
《
日耳曼通识译丛:复原力:心理抗逆力
》
售價:HK$
34.3
《
海外中国研究·未竟之业:近代中国的言行表率
》
售價:HK$
135.7
《
我们为何建造(城市与生态文明丛书)
》
售價:HK$
89.7
《
算法经济 : 商业逻辑与人类生活的智能演进(生动呈现AI与算法的创新应用与商业价值)
》
售價:HK$
79.4
《
家书中的百年史
》
售價:HK$
79.4
|
內容簡介: |
本书采用集成电路设计工作中的实际案例,介绍了Perl的各类基本知识,包括:变量、子例程、正则表达式,文件操作等。针对模拟线路设计,数字线路设计和版图设计等设计过程,分别选取了有代表性的应用案例,实现并讲解和分析了完整的Perl代码。还介绍了集成电路设计工作中可能常用的模块,以及代码风格建议等进阶内容。本书zui后介绍了图形用户界面(Perl/Tk)的入门和常用功能.
|
目錄:
|
序前言第1章 Perl语言基础 11.1 准备工作 11.1.1 安装环境 11.1.2 选择编辑器 21.1.3 查阅官方文档 31.1.4 运行本书中的程序 31.2 初识命令行参数 41.2.1 标量 71.2.2 数组 81.2.3 循环结构for 91.3 改进命令行参数 101.3.1 散列 131.3.2 判断结构if 141.3.3 “真”与“假” 151.4 继续改进命令行参数 161.4.1 数组的散列 201.4.2 散列的散列 211.5 完成命令行参数 221.5.1 引用 251.5.2 子例程 271.5.3 模块 29第2章 与操作系统交互 342.1 识别文件或目录 342.2 读取文件 352.3 写入文件 372.4 读取目录 392.5 创建目录 392.6 执行操作系统命令 402.7 获取系统命令的输出 412.8 获取和设置环境变量 412.9 读取命令行参数 41第3章 正则表达式 453.1 匹配的基本过程 463.2 匹配 483.2.1 普通字符 483.2.2 元字符 493.2.3 反斜杠家族 543.2.4 修饰符 563.2.5 内插变量 573.3 分组和捕获 593.3.1 分组并捕获 593.3.2 匹配的特点 623.3.3 分组不捕获 643.3.4 分组捕获并反向引用 653.4 替换 663.4.1 修饰符 673.4.2 界定符 673.4.3 不改变原变量 67第4章 模块的改进 684.1 参数值存为标量 684.2 增加data_type的类型识别 694.3 提供默认值 704.4 新增子例程 724.4.1 把文件读取到数组中 724.4.2 把数组写入文件中 734.4.3 新建目录 734.5 参数值可以短划线开头 74第5章 模拟IC电路仿真实践 755.1 模拟IC电路设计流程简介 755.2 PVT仿真的过程 765.3 定义PVT仿真程序的功能 775.4 程序的主体 795.5 各子例程 815.5.1 define_opt_rule 815.5.2 run_pvt 825.5.3 generate_netlist 835.5.4 run_sim 845.5.5 get_sim_result 855.5.6 generate_report 865.6 补充说明 86第6章 版图设计实践 886.1 版图设计流程简介 886.2 DRC程序的功能定义和参数设计 896.3 程序的主体 906.4 各子例程 936.4.1 prepare_run_dir 936.4.2 export_gds 946.4.3 prepare_drc_rule 956.4.4 replace_array 966.4.5 get_match_word 976.4.6 run_drc 986.4.7 report_result 996.5 补充说明 99第7章 数字IC电路设计实践 1017.1 Verilog连接程序的功能定义和参数设计 1017.2 程序的主体 1047.3 各子例程 1067.3.1 read_f?ile_list 1067.3.2 read_verilog_f?ile 1077.3.3 con_top_verilog 1097.3.4 generate_lines 1117.3.5 output_verilog 1137.4 补充说明 115第8章 提升代码质量 1168.1 正确的代码 1168.1.1 use strict 1168.1.2 use warnings 1198.1.3 程序的结构 1208.1.4 轻度debug 1228.2 好看的代码 1238.2.1 缩进和大括号 1238.2.2 断行 1258.2.3 注释 1268.2.4 POD 1278.3 中文处理 1298.3.1 常量 1308.3.2 变量名 1308.3.3 文件的内容 1318.4 递归 1328.5 监控长时间运行的任务 1348.6 杂项 1458.6.1 <<操作符 1458.6.2 Schwartz变换 1478.6.3 其他运算符 1478.6.4 非十进制数处理 1508.7 更多阅读推荐 153第9章 特殊名称、常用函数与模块 1569.1 特殊名称 1569.1.1 $0 1569.1.2 @ARGV 1579.1.3 $_ 1579.1.4 @_ 1609.1.5 $a和$b 1619.1.6 $. 1619.1.7 %ENV 1619.1.8 $$ 1629.1.9 $! 1629.1.10 STDERR、STDIN、STDOUT 1629.2 常用函数 1639.2.1 数学计算 1649.2.2 标量操作 1669.2.3 列表和数组处理 1719.2.4 仅数组处理(不能处理列表) 1749.2.5 散列处理 1779.2.6 输入输出 1799.2.7 文件(和目录)操作 1939.2.8 流程控制 1989.2.9 范围 2019.2.10 时间处理 2059.2.11 其他函数 2069.3 常用模块 2119.3.1 strict 2119.3.2 warnings 2149.3.3 parent 2159.3.4 Benchmark 2169.3.5 Cwd 2189.3.6 Data::Dumper 2199.3.7 Digest::MD5 2209.3.8 File::Basename 2219.3.9 Spreadsheet::XLSX 222
|
內容試閱:
|
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的特点,我希望本书能达成他的期望。张劼先生是模拟电路设计专家,我经常向他请教各类电路知识,避免了一些电路设计方面的错误。我还要感谢机械工业出版社的编辑杨福川先生、王颖女士、张
|
|