模拟电路提取Verilog模型的方法

合集下载

verilog取模运算

verilog取模运算

verilog取模运算Verilog取模运算是数字电路设计中常用的一种运算方式。

在这篇文章中,我们将探讨Verilog取模运算的原理和应用。

Verilog是一种硬件描述语言,用于描述和设计数字电路。

在数字电路中,取模运算是一种常见的运算方式,用于计算一个数除以另一个数后的余数。

例如,10 mod 3等于1,因为10除以3的余数是1。

在Verilog中,取模运算可以使用取余操作符实现。

取余操作符是一个百分号(%),用于计算两个数相除后的余数。

例如,a % b表示将a除以b后的余数。

Verilog取模运算的实现方式有多种。

一种常见的方式是使用循环和条件语句来实现。

例如,我们可以使用一个循环来不断减去除数,直到被除数小于除数为止,然后返回被除数作为余数。

这种方式比较简单,但在处理大数时效率较低。

另一种更高效的方式是使用移位和减法来实现取模运算。

该方法利用了二进制表示中的规律,通过将除数不断左移,然后与被除数进行减法运算,直到被除数小于除数为止。

这种方式在处理大数时效率更高。

Verilog取模运算在数字电路设计中有许多应用。

一个常见的应用是用于计算时钟周期。

在数字电路中,时钟周期是一个重要的参数,用于控制电路的工作速度。

通过使用取模运算,我们可以确定时钟信号的周期,从而精确控制电路的工作频率。

另一个应用是用于数据处理和校验。

在通信系统中,数据传输的正确性非常重要。

通过使用取模运算,我们可以计算数据的校验和,并在接收端对数据进行校验,以确保数据的完整性和准确性。

Verilog取模运算还可以用于实现数字信号处理中的滤波器和算法。

例如,通过使用取模运算,我们可以实现数字滤波器来去除信号中的噪声和干扰,从而提高信号的质量和可靠性。

总结起来,Verilog取模运算是数字电路设计中常用的一种运算方式。

它可以通过循环和条件语句或移位和减法来实现。

Verilog取模运算在计算时钟周期、数据处理和校验以及数字信号处理等方面有广泛的应用。

模拟电路提取Verilog模型的方法

模拟电路提取Verilog模型的方法

模块电路提取Verilog模型的方法总结陈锋2018-1-181.在原理图目录,运行icfb。

2.选Tools -> Library Manager …3.在Library找到要提取的库(一般是项目名称),这里选NV3030A1P_GRAM。

在Cell里选要提取的顶层模块,这里选GRAM。

View里选schematic,并右击选open4.在打开的原理图Virtioso Schematic菜单里,选Tools -> Simulation -> NC-Verilog5.在设置窗口里,Run Directory手工填入提取Verilog网表的目录名,比如xxx/GRAM_run66.Top Level Design里,点Browser…,选择要提取的顶层,我们这里选择与第3步相同的Library、Cell和View。

如下图,选好后点Close。

7.点左边“跑步的人”来Initial Design。

会看到“三个勾”(Generate Netlist)的图标显示出来了。

8.选Setup -> Netlist …9.设置提取参数。

我们需要修改“Netlist These Views”和“Stop Netlisting at Views”,如下图设置。

另外时间和精度也可以在此设置,默认是1ns/1ns,是全局的设置。

我建议不要修改,在生成Verilog Netlist后,手工修改一些特殊模块来提高精度即可。

设置好后,点Apply,OK。

10.点击“三个勾”生成Verilog Netlist。

稍等片刻后,第三个图标“模块图”显示出来,说明网表也生成好。

11.我们进入GRAM_run6目录,并进入子目录ihnl。

会看到很cdsxx开头的文件夹,再看cdsxx目录里面有个netlist文件。

用文本编辑器打开netlist,你就看到了提取出来的Verilog网表了。

12.我们在GRAM_run6目录里,用如下的命令来合并各个模块的Verilog网表。

一种oled的verilog-a仿真模型的实现方法

一种oled的verilog-a仿真模型的实现方法

一种oled的verilog-a仿真模型的实现方法
实现OLED电路的VerilogA仿真模型的步骤如下:
1. 确定OLED的电路结构,并通过手册或数据表确定需要考虑的器件和参数。

2. 根据电路结构,建立电路的VerilogA仿真模型。

这一步需要编辑VerilogA 代码,并定义电路的输入、输出和内部参数等信息。

3. 根据电路模型,定义仿真测试的输入源并进行仿真模拟。

4. 分析仿真结果,进行模型调试和优化。

5. 验证模拟结果与实际电路性能的一致性,并进行进一步的优化和验证。

需要注意的是,在建立VerilogA模型时,需要了解基本的数字电路和模拟电路知识,以及OLED的器件特性和参数,才能确保模拟结果的精度和可靠性。

另外,OLED的仿真模型也需要考虑多种实际应用情景,比如低温、大尺寸、长寿命、高亮度等,以确保电路的稳定性和可靠性。

BunnyGS 软件网表提取手册说明书

BunnyGS 软件网表提取手册说明书

BunnyGS软件网表提取手册V3.0版本手册仅限于使用BunnyGS软件提取网表的用户使用,未得到苏州芯联成软件有限公司的许可,不得用于其他目的。

下载地址: 或:8000 用户名: bunny 密码: bunny技术支持信息用户可以通过以下方式获得本公司的技术支持:电话:*************企业网址:技术咨询:*********************公司二维码:前言BunnyGS是一款用于集成电路逆向分析,支持工艺厂商PDK和兼容Cadence的EDA软件。

主要功能有:●芯片图像浏览●器件分析与提取●使用PCELL绘制版图●电路浏览与层次化整理●电路和标注交叉查错●导出EDIF200、Verilog、CDL等数据交互格式BunnyGS的特点:●支持海量芯片图像数据●多平台支持●B/S模式工作,多人异地合作●芯片图像分层显示●提取器件●电路浏览与整理●相似或者相同单元搜索并替换●电路图和标注视图的线网、实例间的交叉定位●能够将数据库导出成各种标准格式文件BunnyGS提供了标准、简洁的用户界面,帮助用户快速熟悉并熟练地运用软件。

本文档适用于将要使用BunnyGS软件进行网表提取的工程师,对于初次使用软件或对逆向工程不了解的工程师,建议先跳过第三章和第四章,等到熟悉后,再了解这两个章节的内容。

目录第一章网表提取标准工作流程 (1)1.1. 网表提取标准流程图 (1)1.2. 创建/打开项目 (2)1.3. 配置项目参数 (2)1.4. 划分工作区 (3)1.5. 器件提取、修正 (4)1.6. 线孔提取、修正 (4)1.7. 基本单元提取、修正 (4)1.8. 工作区合并 (5)1.9. 基本电学规则检查 (5)1.10. 生成网表 (6)1.11. 生成管脚 (6)1.12. 生成原理图 (6)1.13. 电路层次化整理 (7)1.14. 数据导出 (7)基本概念 (8)第二章2.1. 工艺层 (8)2.2. 孔 (10)2.3. 模拟器件 (10)2.4. 实例命名规则 (13)2.5. 线网命名规则 (13)2.6. 单元名称 (13)第三章快捷键一览表 (14)第四章常用操作 (19)4.1. 打开标注视图 (19)4.2. 拷贝库 (19)4.3. 拷贝单元 (20)4.4. 拷贝视图 (20)4.6. 重命名视图 (21)4.7. 器件提取 (22)4.8. 设置器件管脚大小和字体高度 (22)4.9. 忽略提取器件时提示W/L Mark约束 (23)4.10. 修改器件参数 (23)4.11. 修改器件类型 (24)4.12. 重设标记大小 (24)4.13. 重设器件管脚大小 (25)4.14. 删除选中管脚 (26)4.15. 修改管脚名称 (26)4.16. 指定线网名称 (26)4.17. 坐标定位 (27)4.18. 多层浏览 (29)4.19. 同时显示上下两层图像 (29)4.20. 浏览图像 (30)4.21. 切换图像层 (31)4.22. 显示和隐藏芯片背景图 (32)4.23. 隐藏和显示未选中图元 (33)4.24. 设置元素对应工艺层的可见可写 (34)4.25. 查看线网连接关系 (34)4.26. 高亮多根线网 (35)4.27. 雷达图 (37)4.28. 交叉定位 (37)4.29. 线孔提取 (40)4.30. 连线 (41)4.31. 生成线网 (43)4.32. 生成管脚 (43)4.33. 手动添加管脚 (44)4.34. 更新管脚 (45)4.36. 枚举工作区 (48)4.37.导出原理图 (49)第五章BunnyGS软件界面 (50)5.1. 运行BunnyGS (50)5.2. BunnyGS库管理界面 (51)5.3. BunnyGS标注视图主界面 (52)5.4. 窗口管理 (66)创建项目及配置 (67)第六章6.1. 创建新项目 (67)6.2. 绑定工程图像 (67)6.3. 创建顶层单元 (68)6.4. 参数设置 (68)6.5. 模拟器件设置 (73)第七章模拟单元网表提取工作流程 (75)7.1. 创建项目 (75)7.2. 项目参数设置 (75)7.3. 划分工作区 (75)7.4. 器件提取 (75)7.5. 模拟基本单元提取 (76)7.6. 连线 (76)7.7. 生成网表 (77)7.8. 生成管脚 (77)7.9. ERC电学规则检查 (77)7.10. 导出原理图 (77)第八章标准数字区提取工作流程 (78)8.1. 创建项目 (78)8.2. 项目参数设置 (78)8.3. 划分工作区 (79)8.5. 单元实例自动搜索 (85)8.6. 单元透视,确认实例 (86)8.7. 线孔提取 (87)8.8. 工作区合并与解散 (89)8.9. 生成网表 (89)8.10. 生成管脚 (90)8.11. ERC电学规则检查 (90)8.12. 导出原理图 (90)第九章电路层次化整理 (91)工作区数据导出 (92)第十章10.1. 导出Verilog (93)10.2. 导出Edif200 (94)10.3. 导出CDL (95)10.4. 导出Spice (96)10.5. 导出GDSII (97)网表提取标准工作流程第一章 1.1. 网表提取标准流程图每个芯片可以划分为若干个模块,可以按如下步骤进行网表提取:1、项目经理进行模块划分2、对每个模块分别进行网表提取3、将各模块的网表数据合并到一起4、进行电学规则检查5、导出网表数据图 1 网表提取流程图 划分工作区器件提取、修正 基本单元提取、修正工作区合并基本电学规则检查数据导出数据 服 务 器 创建/打开项目线孔提取、修正 电路层次化整理配置项目参数生成原理图生成网表生成管脚具体实施中,分别完成各个模块的器件提取/线孔提取/基本单元提取,再将它们合并,完成模块间接缝处的引线后,再进行ERC检查。

模拟集成电路设计流程(中国科学技术大学)

模拟集成电路设计流程(中国科学技术大学)

28
运放小信号仿真示例
电源电压Vdc=1.8V; 交流信号源acm=1 V; 负载电容Cload=5p F; 采用Spectre分析方式,选择交流分析(ac),设置如下:
Sweep Variable: Frequency Sweep Range :1 Hz~100M Hz 仿真完成后,点击 Result -> Direct Plot -> AC Gain&Phase 查看运放的幅频特性和相频特性
Library
Cell
Schematic Symbol
Layout (View)
Verilog
Library,Cell以及View的关系
1、library(库)的地位相当于文件夹,它用来存放一整个设计 的所有数据,包括子单元(cell)以及子单元(cell)中的 多种视图(view)。新建库时注意选择链接所用工艺pdk 的techfile。
仿真不可能覆盖所有的工艺偏差与温度,所以 需要选取一些典型值去验证
>=1um Total Width 表示总的沟道宽度 Finger Width 表示一个finger的宽度 Fingers 表示finger的个数 Total width = finger witdth × finger width 设计时 尽量使mos管接近方形,而不是长条形
11/16/2019

退出
18
Setup菜单
Setup菜单
Design Simulator/directory/host Temperature Model Library Environment
选择所要 模拟的线
路图
选择模拟使用 的模型一般有

verilog的三种描述方式

verilog的三种描述方式

verilog的三种描述方式(最新版)目录1.引言2.Verilog 描述方式概述1.结构描述2.数据流描述3.行为描述4.混合描述3.结构描述1.门级结构描述2.模块级结构描述4.数据流描述1.逻辑关系2.持续赋值语句5.行为描述1.寄存器传输级描述2.状态机描述6.混合描述7.结论正文一、引言Verilog 是一种硬件描述语言,广泛应用于数字电路和模拟混合信号电路的设计验证。

在 Verilog 中,有多种描述方式可以实现逻辑功能,包括结构描述、数据流描述、行为描述和混合描述。

本文将对这些描述方式进行详细介绍。

二、Verilog 描述方式概述1.结构描述:通过调用逻辑原件,描述它们之间的连接来建立逻辑电路的 Verilog 模型。

这里的逻辑元件包括内置逻辑门、自主研发的已有模块、商业 IP 模块。

结构描述分为门级结构描述和模块级结构描述。

2.数据流描述:根据信号之间的逻辑关系,采用持续赋值语句描述逻辑电路的行为。

数据流描述关注信号的传输和处理过程,适用于组合逻辑电路的设计。

3.行为描述:通过描述电路的输入输出行为,以及电路内部状态的变化,来实现逻辑功能的描述。

行为描述主要包括寄存器传输级描述和状态机描述。

4.混合描述:结合结构描述、数据流描述和行为描述,实现对逻辑功能的全面描述。

混合描述可以充分利用 Verilog 的各种特性,提高描述的准确性和效率。

三、结构描述1.门级结构描述:通过实例化内置逻辑门或使用自定义模块,构建逻辑电路的结构。

例如,可以使用与门、或门、非门等逻辑门实现组合逻辑电路。

2.模块级结构描述:将具有一定功能的模块进行组合,形成复杂的逻辑电路。

模块可以是自主研发的已有模块,也可以是商业 IP 模块。

四、数据流描述1.逻辑关系:根据信号之间的逻辑关系,使用持续赋值语句进行描述。

例如,对于一个与非门,可以使用`assign #5 neg(a);`语句描述其输出信号与输入信号 a 的逻辑关系。

寄存器传输级Verilog设计的安全验证属性自动提取方法与设计方案

图片简介:本技术介绍了一种寄存器传输级Verilog设计的安全验证属性自动提取方法,包括:Verilog实例化树步骤,采用静态分析Verilog设计的方法得到实例化树,树中的每个节点代表一个模块的控制流图;Daikon 生成不变量属性步骤,遍历控制流图,生成Daikon的输入文件,包括声明文件、追踪文件和条件分离文件,然后利用Daikon生成不变量属性;安全验证属性步骤,依据生成的不变量属性文件,将其中的不变量属性的语法格式转换为安全验证属性;对Verilog设计进行模型检测验证,发现硬件设计安全漏洞。

本技术可以实现自动化提取安全验证属性,大大提高了安全验证效率;可以为硬件安全验证提供有力的支撑。

技术要求1.一种寄存器传输级Verilog设计的安全验证属性自动提取方法,其特征在于包括:Verilog实例化树步骤,采用静态分析Verilog设计的方法得到实例化树,树中的每个节点代表一个模块的控制流图;Daikon生成不变量属性步骤,遍历控制流图,生成Daikon的输入文件,包括声明文件、追踪文件和条件分离文件,然后利用Daikon生成不变量属性;安全验证属性步骤,依据生成的不变量属性文件,将其中的不变量属性的语法格式转换为安全验证属性;对Verilog设计进行模型检测验证,发现硬件设计安全漏洞。

2.根据权利要求1所述的寄存器传输级Verilog设计的安全验证属性自动提取方法,其特征在于,Verilog 实例化树步骤:依据RTL硬件木马测试向量的生成方法,生成寄存器传输级Verilog设计的实例化树。

3.根据权利要求2所述的寄存器传输级Verilog设计的安全验证属性自动提取方法,其特征在于:依据生成的实例化树,分析仿真Verilog设计生成的VCD文件,生成Daikon工具的输入文件,包括声明文件,追踪文件和条件分离文件。

4.根据权利要求3所述的寄存器传输级Verilog设计的安全验证属性自动提取方法,其特征在于:依据生成的声明文件、追踪文件和条件分离文件,作为Daikon的输入文件,输出生成不变量文件。

Verilog-A

Verilog-A的模拟电路行为模型及仿真作者:朱樟明,张春朋,杨银堂,付永朝关键词:Verilog-A,行为,模型,仿真摘要:分析了模拟硬件描述语言Verilog-A的特点及模型结构,根据仿真速度和仿真精度的折衷考虑,设计实现了模拟开关、带隙基准电压源及运放的Verilog-A行为模型。

根据数模转换器(DAC)的特性,基于Verilog-A设计了DAC参数测试模型,也建立8位DAC 的行为模型。

所有行为模型都在Cadence Spectre仿真器中实现了仿真验证。

随着集成电路技术的不断发展,片上系统(SOC)设计正在成为集成电路设计的发展方向。

SOC芯片集成了大量的IP核,如微处理器、数字信号处理器(DSP)、模/数转换器(ADC)、数/模转换器(DAC)、模拟滤波器、存储器及射频(RF)单元等,使得芯片的设计规模远远超过了以往的设计,其片内通讯及IP核接口的复杂程度也大大提高,从而使其设计的难度和复杂度都达到了前所未有的程度[1],而SOC系统验证就成为了设计的难点。

SOC系统验证就是对基于IP核实现的SOC系统进行功能验证、静态时序分析、功耗分析等,以保证正确的系统功能和良好的产品性能。

以前的SOC验证方法是基于混合信号集成电路仿真方法,其中模拟IP核的仿真则采用Spice仿真方法实现。

虽然这种仿真方法具有较高的仿真精度,但是仿真速度无法满足产品开发的时间要求,也对仿真收敛性提出了新的要求。

本文基于模拟硬件描述语言Verilog-A,研究模拟电路的行为模型及仿真,建立了带隙基准电压源、运放等模拟IP核的精确行为模型。

如果对所有的模拟IP核建立精确行为模型,不仅可以很好的解决SOC的系统验证,也可以解决ADC等混合信号集成电路的参数测试问题。

1模拟硬件描述语言Verilog-AVerilog-A是描述模拟电路系统和模拟电路单元的结构、行为及特性参数的模块化硬件描述语言[2-3],也可以用于描述传统的信号系统,如固体力学、流体力学、热力学等系统。

模拟IC设计流程

IC模拟IC设计流程对于模拟Asic而言,在进行设计时是不能使用verilog或者其他的语言对行为进行描述,目前已知的可以对模拟电路进行描述的语言大部分都是针对比较底层的针对管级网表的语言,比如在软件hspice和hsim所使用的面向管级网表连接关系的语言——spice。

因此如果使用语言对电路进行描述的话,在遇到比较大型的电路时使用门级或者管级网表就比较麻烦。

所以,一般在进行模拟电路设计的时候可以使用图形化的方法来对模拟电路进行设计。

比较常用的工具有Cadence公司的Virtuso、Laker、Epd(workview),其中Cadence自带有仿真器spectra可以实现从电路图输入到电路原理图仿真,以及根据电路图得到版图并且可以利用cadence的其他工具插件实现完整的版图验证,从而完成整个模拟电路芯片的设计流程。

但是对于Laker和Epd而言,这些软件所能完成的工作只是利用foundry模拟库中基本单元构建模拟电路图,所得到的只是模拟电路的网表,而不能对该模拟电路进行仿真,因此一般在使用laker或者EPD的时候都需要将得到的模拟电路转化为网表的形式,利用第三方的仿真软件进行仿真,比如使用hsim、hspice或者pspice对得到的网表进行仿真。

然后再使用第三方的版图软件进行版图设计和DRC、ERC、LVS检查,所以从设计的方便性上讲使用Cadence的全系列设计软件进行模拟电路设计是最为方便的。

在得到模拟电路的版图后就可以根据版图提取寄生参数了,寄生参数的提取方法和前面所讲的数字电路的版图参数提取是完全相同的,利用提取得到的寄生参数就可以得到互联线所对应的延迟并且将该延迟或者是RC参数反标回模拟电路图中去,从而得到更符合实际版图情况的电路图。

对该电路图仿真就可以完成后仿真,得到更符合实际芯片工作情况的信号波形。

因此,在模拟电路设计中版图设计是非常重要的,一个有经验的版图设计师可以很好将各种模拟效应通过版图来避免,从而在相同设计的情况下得到性能更好的芯片设计。

如何选择合适的电子电路仿真模型

如何选择合适的电子电路仿真模型在电子电路设计中,仿真模型是一个不可或缺的工具。

通过电路仿真,设计师可以在实际制作和测试之前评估和优化电路的性能。

然而,在众多的仿真模型中选择适合的模型并不是一件简单的事情。

本文将介绍如何选择合适的电子电路仿真模型。

1. 确定仿真需求在选择仿真模型之前,首先需要明确你的仿真需求。

不同的仿真模型适用于不同的电路类型和设计目标。

例如,如果你需要仿真模拟模拟电路的性能,那么SPICE模型是一个不错的选择;如果你要仿真数字电路,VHDL和Verilog模型将是更好的选择。

因此,在选择仿真模型之前,弄清楚你的仿真需求是非常重要的。

2. 查找可靠的供应商一个可靠的供应商可以提供高质量的仿真模型。

在选择仿真模型之前,你可以在各种资源中寻找可靠的供应商,如官方厂商网站、电子设计社区和学术研究论文等。

同时,你还可以寻找用户评价和反馈,以了解供应商的声誉和服务质量。

3. 验证仿真模型准确性在选择仿真模型时,你需要验证模型的准确性和可靠性。

一个准确的仿真模型可以提供可靠的仿真结果,帮助你评估电路的性能。

你可以通过与实际测量数据进行比较,或者与其他可靠的仿真模型进行对比来验证模型的准确性。

4. 检查模型的适用性在选择仿真模型之前,你需要检查模型的适用性。

模型应该能够满足你的设计要求,并与你的仿真工具兼容。

例如,如果你使用的是第三方仿真工具,那么你需要确保所选的仿真模型与该工具相兼容。

同时,你还需要检查模型是否支持你所使用的工作温度范围和电压范围等。

5. 寻找模型的文档和支持一份完整的文档和良好的技术支持可以帮助你更好地使用所选的仿真模型。

在选择模型之前,你可以查找与之相关的文档和技术资料,了解模型的使用方法和注意事项。

另外,一家供应商提供的良好技术支持可以帮助你解决在使用过程中遇到的问题。

6. 评估仿真模型的性能最后,你可以对所选的仿真模型进行性能评估。

通过对比不同的仿真模型和实际测量数据,你可以评估所选模型的准确性和可靠性。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

模块电路提取V e r i l o g模型的方法总结
陈锋
2018-1-18
1.在原理图目录,运行icfb。

2.选Tools->LibraryManager…
3.在Library找到要提取的库(一般是项目名称),这里选NV3030A1P_GRAM。

在Cell里选
要提取的顶层模块,这里选GRAM。

View里选schematic,并右击选open
4.在打开的原理图VirtiosoSchematic菜单里,选Tools->Simulation->NC-Verilog
5.在设置窗口里,RunDirectory手工填入提取Verilog网表的目录名,比如xxx/GRAM_run6
6.TopLevelDesign里,点Browser…,选择要提取的顶层,我们这里选择与第3步相同的
Library、Cell和View。

如下图,选好后点Close。

7.点左边“跑步的人”来InitialDesign。

会看到“三个勾”(GenerateNetlist)的图标显示出
来了。

8.选Setup->Netlist…
9.设置提取参数。

我们需要修改“NetlistTheseViews”和“StopNetlistingatViews”,如下图
设置。

另外时间和精度也可以在此设置,默认是1ns/1ns,是全局的设置。

我建议不要修改,在生成VerilogNetlist后,手工修改一些特殊模块来提高精度即可。

设置好后,点Apply,OK。

10.点击“三个勾”生成VerilogNetlist。

稍等片刻后,第三个图标“模块图”显示出来,说
明网表也生成好。

11.我们进入GRAM_run6目录,并进入子目录ihnl。

会看到很cdsxx开头的文件夹,再看cdsxx
目录里面有个netlist文件。

用文本编辑器打开netlist,你就看到了提取出来的Verilog网表了。

12.我们在GRAM_run6目录里,用如下的命令来合并各个模块的Verilog网表。

find会查找到所以的名叫“netlist”的文件,用cat显示出这些文件的内容,再重定向到nv3030_sram.v。

13.用以下命令检查网表有无语法错误。

一般来说,我们网表提取到此结束。

14.但有时,我们还需要修改自动提取的网表。

比如:
a)删除共用的逻辑单元模块,因为这些模块很可能已经手动写好verilog形为级模型。

b)修改部分模块的精度,因为某些延时模块希望精确到100ps。

下面是一个用python写的示例脚本。

使用方法
importsys
importos
importre
importgetopt
#解析命令参数
try:
opts,args=getopt.getopt(sys.argv[1:],"hi:o:",["ifile=","ofile="]) exceptgetopt.GetoptError:
print('simplify_sram_netlist.py-i<inputfile>-o<outputfile>') sys.exit(2)
foropt,arginopts:
ifopt=='-h':
print('simplify_sram_netlist.py-i<inputfile>-o<outputfile>') sys.exit()
elifoptin("-i","--ifile"):
ifileName=arg
elifoptin("-o","--ofile"):
ofileName=arg
#读入待修改的Verilog网表
infile=open(ifileName,'r')
sfile=infile.read()
infile.close()
#此处指定要删除的模块名
libMod=["nand2_lv",
"delay3n",
"nand3_lv",
"ldecv4",
"nor3_lv",
"inv_lv",
"delay5n",
"delay500p",
"nand4_lv",
"tg_lv",
"dff_rl",
"bushold",
"dff_fl",
"mux2",
"delay1n",
"nor2_lv",
"rwckt",
"sramcell",
"inoutbuf"]
sMod={}
#分离成单个module
allmodule=re.findall(r'(module.*?endmodule)',sfile,re.S) ifnotallmodule:
print("Cannotfindanymodule!")
else:
forminallmodule:
searchModName=re.search(r'module\s([\w_]+)\s',m,re.S)
mName=searchModName.group(1)
ifmNameinlibMod:#如果是指定要删掉的模块,则丢掉
continue
else:
ifmName=="rwckts0":#处理时间单位和精度
strTimescale="`timescale1ns/100ps\n"
elifmName=="inoutbuf":
strTimescale="`timescale1ns/10ps\n"
else:
strTimescale="`timescale1ns/1ns\n"
#处理结束后,存入到sMode列表
sMod[mName]=strTimescale+m+'\n\n'
#对处理完的模块,按模块名排序
sModKeys=list(sMod.keys())
sModKeys.sort()
#把结果写到新文件
outfile=open(ofileName,'w')
forkinsModKeys:
outfile.write(sMod[k])
outfile.flush()
outfile.close()
15.注意:
a)如果模拟电路里有functionalView,则需要检查提取的对应模块是网表和自己写的
verilog模型。

b)需要检查Verilog网表里的晶体管级的模型,如nmos、pmos、cmos、tran等。


确认是否是必须的,如果不是请替换成形为级模型。

因为晶体管级模型仿真会慢很
多。

c)确认是否包含没有逻辑功能的驱动Buffer(如,两级反相器)。

一般模块电路里会
包含大量的这种驱动buffer。

d)确认DFF的模型已经替换成形为级模型。

e)确认必要的延时信息是否已经加入。

因为直接提取不到电容、电阻的RC延时,必
要时请手动加上。

否则可能造成逻辑不正确。

f)确认Verilog网表里是否有上拉的电路,很可能需要把rpmos替换成pullup语句。

相关文档
最新文档