目录

  • 前言
  • 电路编写及前后仿真
  • 布局布线
  • 总结

前言

本文主要描述了Linux环境下使用Verilog编写电路、对电路进行前后仿真并进行版图规划的过程。文中所使用的EDA工具为Candence公司的Encounter。Encounter在近年已更新并改名为Innovus,不过其进行版图规划的流程应该是基本相同的。

电路编写及前后仿真

在本次实验中,使用Verilog完成时序驱动的8位乘法器的设计,具体代码如下:

`timescale 1ps / 1psmodule multiplier(input     [7:0]       mula,input      [7:0]       mulb,input                  clk,input                   reset,output reg  [15:0]        result,output       [15:0]      temp);wire          [15:0]      sto0,sto1,sto2,sto3,sto4,sto5,sto6,sto7;assign sto0 = mulb[0]? mula : 16'd0;assign sto1 = mulb[1]? (mula << 1) : 16'd0;assign sto2 = mulb[2]? (mula << 2) : 16'd0;assign sto3 = mulb[3]? (mula << 3) : 16'd0;assign sto4 = mulb[4]? (mula << 4) : 16'd0;assign sto5 = mulb[5]? (mula << 5) : 16'd0;assign sto6 = mulb[6]? (mula << 6) : 16'd0;assign sto7 = mulb[7]? (mula << 7) : 16'd0;always@(posedge clk or negedge reset)beginif (!reset)beginresult <= 16'd0;endelse beginresult <= sto0 + sto1 + sto2 + sto3 + sto4 + sto5 + sto6 + sto7;endendendmodule

由代码可见,这是一个简单的基于移位原理的乘法器。

为测试设计的8位乘法器的功能,编写如下所示的testbench:

`timescale 1ns / 1nsmodule tb_mul;reg    [7:0]   mula,mulb;reg       clk,reset;wire [15:0]   result;multiplier m(mula, mulb, clk, reset, result);initial beginreset = 0;clk = 0;#5 reset = 1;#5 mula = 8'b0011_1100;mulb = 8'b0000_0000; #5 mula = 8'b0000_0000;mulb = 8'b1100_0011;//对某一乘数是0的情况进行测试#5 mula = 8'b0011_1100;mulb = 8'b0000_1101;//常规测试#5 mula = 8'b1111_1111;mulb = 8'b1111_1111;//2个乘数均为最大值的情况下的测试endalways begin#1 clk = ~clk;endinitial begin$shm_open("multiplier_test.shm");$shm_probe("AC");endendmodule

代码分不同情况对所设计的8位乘法器进行了测试,仿真波形如下所示:

计算结果正确,8位乘法器通过了逻辑验证。下面将对乘法器进行综合。

编写tcl文件,文件内容为:

使用tcl文件对乘法器进行综合:

综合完成后,得到了乘法器的门级网表文件及时序和面积报告。


面积报告上显示的Timing slack为1052ps,说明乘法器在3ns的时钟周期下,可在逻辑功能不受影响的前提下完成工作。

得到网表文件后,可对乘法器进行综合后仿真,观察附加门延时后乘法器的表现。编写如下的.f文件:

如上可见,后仿真的批处理文件中使用了门级网表、附加了sdf的test-bench和标准单元库。

后仿真结果如下:


附加门延时后,逻辑变化出现了大约130ps的延时。

至此,我们完成了前后仿真的全部步骤,接下来进行乘法器的布局布线。

布局布线

打开encounter,进行布局布线。

首先Import Design,插入综合生成的网表文件和标准单元库lef文件。


之后对版图进行预布局,确定core的宽高比和面积比率。


为版图添加电源环并进行Special Route,连接power与core。



本次实验实现的乘法器面积较大,为防止由于互连线过长而引起的电压下降,也添加Power Stripe。

如下图所示,添加3条Power Stripe。


加入Power Stripe后,在版图中加入标准单元。(Place Standard Cells)

接下来就可以对版图进行自动布局布线。

布局布线完成后,在版图中加入填充。

至此,我们完成了布局布线的所有内容。

总结

本次实验通过乘法器实现了一个设计从前端代码实现到后端布局布线的全过程,主要强调了Linux下前后端EDA软件和批处理文件的使用。

实验的前后端EDA主要通过命令行+批处理文件来实现。在批处理文件中定义前后端所要用到的文件,在需要时只需一行命令就可以对设计进行验证,十分简便。

在后端EDA过程中,采用某些通用的规则可以大大降低布局布线的难度。例如我们在走线时通常采用横向为一种金属,纵向为另一种金属的设计,这样可以最大程度避免因互连线材料相同而引起的短路问题。

Linux环境下Verilog电路的前后仿真及版图规划相关推荐

  1. Linux环境下EDA软件的使用——数字IC设计DC综合篇

    Linux环境下EDA软件的使用--数字IC设计DC综合篇   目前,绝大部分集成电路设计所用到EDA软件都是Linux版本,对于芯片工程师,熟悉一款EDA软件是入门的必修课,当然要真正的掌握会是十分 ...

  2. linux环境下查看进程,Linux下查看进程(程序)启动时的环境变量

    背景: 因最近试安装Linux下的jira,有一个中文插件安装后,一旦设置开机启动后,它是英文,而在终端再重新启动一次后呢,似乎插件生效,它又恢复为正常中文界面,我首先想这这涉及到一个环境变量的问题, ...

  3. linux svn更换数据仓库,Linux环境下SVN数据仓库迁移

    上一篇文章介绍了Windows环境下SVN数据的备份与还原,这篇文章介绍下Linux环境下数据迁移. 一准备工作 1安装环境 1 centOS7 2可上网 2软件需求 1 winSCP 2 PuTTy ...

  4. Linux环境下的网络编程

    本文介绍了在Linux环境下的socket编程常用函数用法及socket编程的一般规则和客户/服务器模型的编程应注意的事项和常遇问题的解决方法,并举了具体代  码实例.要理解本文所谈的技术问题需要读者 ...

  5. LINUX环境下资源下载中文目录及中文文件名称问题

    为什么80%的码农都做不了架构师?>>>    http://www.yeeach.com/2009/04/09/linux%E7%8E%AF%E5%A2%83%E4%B8%8B%E ...

  6. [原]对Linux环境下任务调度一点认识

    我一直以来有一个误解,那就是在终端运行某个程序时,按下Ctrl + D时我误以为就是杀死了这个进程,今天才知道原来不是.比如我利用libevent在Linux环境下写了一个网络监听程序,当启动程序之后 ...

  7. Linux环境下安装nginx

    大家好,本篇文章主要讲的是Linux环境下安装nginx教程,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览 1.安装所需环境 //安装gcc yum install gcc-c ...

  8. linux校园网客户端,Ubuntu Linux环境下校园网客户端安装使用

    最近发现好多兄弟姐妹不用Linux原因是在我们学校大大环境下上校园网有点费劲,或者干脆就不会弄,亦或者根本就没想到上网^_^ 这里我写上这么一段简单的过程,为了大家能够顺利上网,大牛直接掠过,不要喷我 ...

  9. Linux环境下段错误的产生原因及调试方法小结

    From:http://www.cnblogs.com/panfeng412/archive/2011/11/06/2237857.html 最近在Linux环境下做C语言项目,由于是在一个原有项目基 ...

最新文章

  1. 技术17期:近几年崛起的Pytorch究竟是何方神圣?
  2. 修改Kali Linux终端历史记录大小
  3. 软件开发项目的风险管理 (转)
  4. golang中的sync.WaitGroup
  5. IPO与上市的关系?
  6. ubuntu makefile交叉编译报错:file not recognized: file format not recognized
  7. authc过滤器 shiro_使用Shiro实现认证和授权(基于SpringBoot)
  8. Silverlight WCF 上传实现
  9. 使用Spring数据和Thymeleaf实现Bootstrap分页
  10. OpenGL画简单图形
  11. (2021) 25 [持久化] 文件系统实现:FAT和UNIX文件系统
  12. ONNX系列五 --- 在C#中使用可移植的ONNX AI模型
  13. RPC框架的实现原理是什么?-开课吧
  14. VC开发数据库基础之ADO篇
  15. tensorflow架构_TensorFlow半监督对象检测架构
  16. pip 下载whl文件
  17. 有利网2022最新兑付消息,开展部分债务资金清退
  18. u盘数据恢复软件哪个好?免费软件有哪些?
  19. 手机行业影像突破,谁能成为下一个“苹果”?
  20. 关于微信的APP支付、公众号(服务号)支付,商户问题

热门文章

  1. 黑马Pink老师DOM和BOM学习笔记
  2. 计算机网络技术专业适合女生学吗,计算机网络技术专业适合女生学吗?
  3. vue中velocity
  4. 详解CDN的智能调度,链路优化
  5. 缘与情历来缠缠绕绕,缘分与爱情相依并存
  6. mysql查询数据时自动生成序号
  7. L2行情实时数据有几种?多久可以获取数据一次呢?
  8. 送从兄郜 / 韦郜 / 途中别孙璐 出自唐代方干
  9. 课程格子是这样做大学生市场的
  10. /deep/与<<<