数字集成电路及其版图设计:带有预置数功能的8位二进制加减计数器设计及版图实现

数字集成电路及其版图设计

带有预置数功能的8位二进制加减计数器设计及版图实现

一、目的:

1、熟悉数字集成电路设计的基本流程;
2、熟悉虚拟机的安装及使用方法;
3、熟悉Linux系统及vi编辑器的操作;
4、熟悉Quartus II、Design Compiler、Encounter设计软件的使用方法。

二、原理:

1、设计原理:计数器是最常用的寄存器逻辑电路,从微处理器的地址发生器到频率计都需要用到计数器。一般的计数器可分为两大类:加法计数器和减法计数器。加法计数器每来一个脉冲计数值加1;减法计数器则减1。

2、要求:用Verilog HDL语言设计一个带有预置数功能的8位二进制加减计数器。电路包括一个时钟输入端clk,一个异步清除输入端clr,一个同步预置位控制输入load,1个8位预置数据输入端d[7:0],一个加减控制输入端updown,1个8位计数输出端q[7:0],一个进位输出端rc。此次任务是利用数字集成电路的设计方法进行N位二进制加法/减法/加减计数器的电路设计及版图实现。

三、步骤及结果:

1、行为设计及行为仿真

1)运行Quartus II,选择File>New Project Wizard,新建一个工程,FPGA芯片在Available device 列表中选择EP2C35F672C8:

数字集成电路及其版图设计:带有预置数功能的8位二进制加减计数器设计及版图实现_第1张图片

2)按照设计要求,在新建的HDL文件中编写程序:带有预置数功能的8位二进制加减计数器,电路包括一个时钟输入端clk,一个异步清除输入端clr,一个同步预置位控制输入load,1个8位预置数据输入端d[7:0],一个加减控制输入端updown,1个8位计数输出端q[7:0],一个进位输出端rc,最终程序如下:

module LiTianhao(q,clk,load,d,reset,updown,RC);
output [7:0] q;
output RC;
input [7:0] d;
input clk,reset,load,updown;
reg [7:0] q;
reg RC;
wire clr;
always @(posedge clk) 
begin
RC<=0;
q<=8'b0;
  if(reset) 
    begin         
        q<=8'b0;
    end
  else begin
    if(load) 
    begin
        q<=d;
    end 
    else if(load==0&updown==0) 
    begin         
        q<=q+1;
        RC<=0;
    end 
    else if(load==0&updown==1) 
    begin 
        q<=q-1;
        RC<=0;
    end
   if(q>=8'd255) 
    begin 
        RC<=1;    
    end
  end
end
endmodule

3)代码书写结束后,选择Processing>Start Compilation对编写的代码进行编译,编译通过后,建立波形文件,选择Insert Node or Bus,Node Finder,Filter中选择Pins:all,点击List,这样在Nodes Founder区域出现先前HDL文件中定义的输入、输出端口,点击>>,选择OK,如下图:

数字集成电路及其版图设计:带有预置数功能的8位二进制加减计数器设计及版图实现_第2张图片

4)Processing>Simulation Tool,Simulation mode选择Functional(功能仿真),点击Generate Functional Simulation Netlist按键生成功能仿真网表(如要进行时序仿真,则Simulation Mode选择Timing),如下图:

数字集成电路及其版图设计:带有预置数功能的8位二进制加减计数器设计及版图实现_第3张图片

5)结果:上述程序仿真结果如下图所示:

数字集成电路及其版图设计:带有预置数功能的8位二进制加减计数器设计及版图实现_第4张图片

上图为无预置数、无异步清除、加计数的仿真结果。

数字集成电路及其版图设计:带有预置数功能的8位二进制加减计数器设计及版图实现_第5张图片

上图为无预置数、无异步清除、减计数的仿真结果。

数字集成电路及其版图设计:带有预置数功能的8位二进制加减计数器设计及版图实现_第6张图片

上图为异步清除的仿真结果。

数字集成电路及其版图设计:带有预置数功能的8位二进制加减计数器设计及版图实现_第7张图片

上图为预置数输入10100000(十进制:160)、无异步清除的仿真结果。

综上所述,程序和仿真结果均达到设计要求。

2、逻辑综合:

1) Open Terminal打开操作终端,键入Linux系统命令打开Syn,在Syn下建立工作目录WorkArea如图:

数字集成电路及其版图设计:带有预置数功能的8位二进制加减计数器设计及版图实现_第8张图片

2)进入建好的工作目录,键入design_vision 命令启动用户图形界面如图:

数字集成电路及其版图设计:带有预置数功能的8位二进制加减计数器设计及版图实现_第9张图片

3)File->Setup,设置综合时所要映射的在/home/cdsmgr/digitalIC/Syn目录下的逻辑单元库文件.db以及符号库文件.sdb,如图:

数字集成电路及其版图设计:带有预置数功能的8位二进制加减计数器设计及版图实现_第10张图片

4)File->Elaboration,分析设计模型,进行综合前预处理,Create Design Schematic查看综合前电路图,如图:

数字集成电路及其版图设计:带有预置数功能的8位二进制加减计数器设计及版图实现_第11张图片

5)命令执行信息窗口显示了使用的寄存器信息和清零端信息(AR:asynchronous reset)如图:

数字集成电路及其版图设计:带有预置数功能的8位二进制加减计数器设计及版图实现_第12张图片

6)Create symbol view,生成综合前的电路元件符号如图:

数字集成电路及其版图设计:带有预置数功能的8位二进制加减计数器设计及版图实现_第13张图片

7)Attributes->Specify Clock ,设定时钟如图:(可在Attributes->Operation Environment 下设定输入延迟、驱动能力、连线负载等其他参数)

数字集成电路及其版图设计:带有预置数功能的8位二进制加减计数器设计及版图实现_第14张图片

8)Attributes->Optimization Constraints–>Design Constraints,进行综合过程的条件约束设置,将面积优化到最小,如图:(可在Attributes->Optimization Constraints下设定优化时间等参数)

数字集成电路及其版图设计:带有预置数功能的8位二进制加减计数器设计及版图实现_第15张图片

9)Design->Compile Design 进行编译后,综合后电路图与电路元件符号如图:

数字集成电路及其版图设计:带有预置数功能的8位二进制加减计数器设计及版图实现_第16张图片

数字集成电路及其版图设计:带有预置数功能的8位二进制加减计数器设计及版图实现_第17张图片

10)Timing->Report Timing Path,报告时序信息如下一图,其中slack(MET)大于0,满足设计时序要求;Design->Report Area,报告面积信息如下二图:

数字集成电路及其版图设计:带有预置数功能的8位二进制加减计数器设计及版图实现_第18张图片

 数字集成电路及其版图设计:带有预置数功能的8位二进制加减计数器设计及版图实现_第19张图片

11)File->Save as,保存综合后网表文件LiTianhaomapped.v

数字集成电路及其版图设计:带有预置数功能的8位二进制加减计数器设计及版图实现_第20张图片

12)命令行键入write_sdf  LiTianhaomapped.sdf,保存延时信息:

数字集成电路及其版图设计:带有预置数功能的8位二进制加减计数器设计及版图实现_第21张图片

13)命令栏键入write_sdc  -nosplit  LiTianhaomapped.sdc ,保存时钟设计约束条件:

数字集成电路及其版图设计:带有预置数功能的8位二进制加减计数器设计及版图实现_第22张图片

14)综合完成。在工作目录下找到综合后网表文件LiTianhaomapped.v和时钟约束条件文件LiTianhaomapped.sdc,用于后面的布局布线。

数字集成电路及其版图设计:带有预置数功能的8位二进制加减计数器设计及版图实现_第23张图片

 数字集成电路及其版图设计:带有预置数功能的8位二进制加减计数器设计及版图实现_第24张图片

15)在工作目录将综合后的模块名改为和文件名一致(LiTianhaomapped),如图:

数字集成电路及其版图设计:带有预置数功能的8位二进制加减计数器设计及版图实现_第25张图片

3、自动布局布线:

1)Xshell5—>属性,设置主机地址,然后点击“隧道”,勾选Xmanager,连接主机并登录,如图:

数字集成电路及其版图设计:带有预置数功能的8位二进制加减计数器设计及版图实现_第26张图片

2)使用vi编辑器将综合后网表文件LiTianhaomapped.v和时钟约束条件文件LiTianhaomapped.sdc以及LiTianhaomapped.sdf文件导入主机,分别如下三图:

 

3)键入 encounter  命令启动用户图形界面如下两图:

数字集成电路及其版图设计:带有预置数功能的8位二进制加减计数器设计及版图实现_第27张图片

数字集成电路及其版图设计:带有预置数功能的8位二进制加减计数器设计及版图实现_第28张图片

4)Design-> Design Import 设置输入文件,同时Advanced --Power设置如图:数字集成电路及其版图设计:带有预置数功能的8位二进制加减计数器设计及版图实现_第29张图片

数字集成电路及其版图设计:带有预置数功能的8位二进制加减计数器设计及版图实现_第30张图片

Advanced --RC Extraction设置与Advanced --SI Analysis设置如下两图:

数字集成电路及其版图设计:带有预置数功能的8位二进制加减计数器设计及版图实现_第31张图片

5)Save保存为LiTianhaomapped.conf文件,之后OK,得下图:

数字集成电路及其版图设计:带有预置数功能的8位二进制加减计数器设计及版图实现_第32张图片

6)FloorPlan -> Specify Floorplan 进行版图的平面规划,设置与结果如下两图:

数字集成电路及其版图设计:带有预置数功能的8位二进制加减计数器设计及版图实现_第33张图片

7)Power -> Power Planning -> Add Ring 添加电源线,设置与结果如下两图:

8)Edit -> Pin Editor进行端口定位,逐一设定各个端口的方位和使用的金属层、端口坐标,设置与结果如下两图:

9)Route -> Special Route进行布线,设置与结果如下两图:

 

10)FloorPlan -> Connect Global Net连接所有电源和地,如下左图,Place -> Place Standard Cell,把标准逻辑单元放入,结果如下右图:

 

11)Route -> Trail Route 进行布线,连接所有标准单元,如图:

 数字集成电路及其版图设计:带有预置数功能的8位二进制加减计数器设计及版图实现_第34张图片

12)Timing -> Extract RC抽取寄生参数,如下左图,Route -> NanoRoute -> Route进行精确布线,结果如下右图:

 

13)Place—>Physical Cells —>Add Filler,在Cell List栏选择Filler的Cell名,将Cell列表中的Cell都选择上,设置如下两图:

给Core中加入Filler,添加完Filler的版图如下:

14)Verify进行几何形状验证及连接验证:Geometry、Connectivity,如下两图:

 数字集成电路及其版图设计:带有预置数功能的8位二进制加减计数器设计及版图实现_第35张图片

15)输出布局布线后网表文件(.v)及时序信息文件(.sdf),Timing→ Extract RC,保存spf,spef文件。如下两图:

数字集成电路及其版图设计:带有预置数功能的8位二进制加减计数器设计及版图实现_第36张图片

16)输出版图信息(.gds):Design →Save →GDS,保存GDSII格式版图文件,命名为LiTianhaomapped.gds,Map File选择streamOut_IBM13.map,如图:

数字集成电路及其版图设计:带有预置数功能的8位二进制加减计数器设计及版图实现_第37张图片

17)最终版图如下:

你可能感兴趣的:(IC设计,半导体器件与集成电路实验,电子设计,fpga开发,嵌入式硬件,硬件工程,硬件架构,pcb工艺)