tag 标签: 后仿真

相关博文
  • 热度 22
    2013-7-17 23:34
    3968 次阅读|
    0 个评论
    Modelsim仿真小结   Modelsim的基本仿真流程大致分以下几个步骤:建库、编译工程、前后仿真、调试等。Modelsim仿真既可以在modelsim界面操作,也可以用do文件实现, 这里结合学习的教程、网上看到的资料,和实际遇到的一些问题,分别做一整理小结。   建库 建库包括Altera库和Xilinx库,同时都包括Verilog和VHDL。这里只建了Verilog库,VHDL和Verilog步骤相同。 对于Altera库主要包括lpm元件库、Mega_Function库atera_mf、altera原语库altera_primitive和各器件系列模型库。前三种是调用altera模块的必备库,第四种是进行综合后功能仿真和布线后时序仿真需要的库,和器件系列有关,只选对应系列即可。   Altera库创建和编译步骤如下: 在Modelsim安装目录下 新建文件夹 ,命名altera_lib,以存放编译后的库文件,可以在altera_lib下新建Verilog和VHDL两个子文件夹,分别存放Verilog和VHDL库。 打开Modelsim,新建Library, file -new-library .. 如下图,创建lpm库,路径 E:\modeltech_10.1a\altera_lib\Verilog\lpm   添加库文件,并编译, compile - compile …  ,出现compile source files窗口,library 指定到lpm下,查找范围,选quartus安装目录下… eda\sim_lib目录里的仿真原型文件:220model.v , 点c ompile ,点done 。 到此,lpm库建立完毕。 同理,建立 altera_mf 库添加 altera_mf.v ,建立primitive库添加altera_primitive.v 建立各系列的模型库,命名可用系列名加_ver“xxx_ver”,也可随意吧,添加各系列的 xxx_atoms.v 。   这里,也可以把以上库放在一个文件夹,这样做简单,一次就搞定,分开也就是条理清楚,没人去看,所以没必要。   修改 modelsim.ini 文件,为的是让modelsim能自动map到已经编译的这些库上。先去掉只读属性,在 和 之间加上:库名=库路径 ,相对路径是相对于modelsim安装路径, modelsim安装路径用$MODEL_TECH表示。   这里所有库都放在E:\modeltech_10.1a\altera_lib下,库名是altera_lib,这里只添加一句: altera_lib = E:\modeltech_10.1a\altera_lib   保存退出,改回modelsim.ini只读属性,防止乱改。至此altera库建立完毕。     Xlinx库创建和编译步骤如下:          相比altera,xilinx建库很方便。xilinx有批处理命令,直接在console命令窗口,输入compxlib命令,调出编译库的窗口,先改掉modelsim安装目录下modelsim.ini只读属性。设置如下图:                     Next,选择语言:            Next,选择需要编译的器件:   Netx  -  next,选择输出路径,launch compile process,等待编译完成。完成后改回modelsim.ini只读属性。至此xilinx库建立完毕。     编译工程   编译工程主要包括:code、testbench、建立工程、建立工程库、映射、编译等。Code主要有code思想和风格,在Verilog部分涉及。Testbench,下边给出一个公用模板,基于这个方便修改,可以根据自己的习惯建一个temp_tb.v。       Modelsim界面编译工程: 新建工程:打开 modelsim ,file - new - project .. ,指定工程名、路径、工程库。   Add existing file   Add testbench file ….   编译, compile – complie all 编译语法查错,直到编译通过。至此编译完毕。   功能和时序仿真   仿真是在编译的基础上,进行的功能调试,包括综合前功能仿真、综合后功能仿真和布局布线后时序仿真。   Modelsim界面综合前仿真:          指定顶层,开始仿真; simulation - start simulation … ,在work 库中,指定testbench,ok,开始仿真。     查看仿真结果,打开 wave ,                     信号,加入wave   运行,查看波形。 Run - run all ….              至此,简单的modelsim界面综合前仿真介绍完毕。   Modelsim界面综合后仿真:          综合后仿真需要quartus综合后的网表文件(以altera为例), 综合后的网表的生成: quartus 工程名右键 - setting – EDA Tool Setting, 双击 Simulation ,选择EDA软件 modelsim , 选择输出网表路径,如图     More settings …. 将 Generate netlist for functional simulation only 设置为 ON   保存,全编译。  检查一下 … /modelsim/Psyth/source 里面,可以发现,已经生成了一个 *.vo 文件。 这个就是需要的网表文件。(VHDL 的输出网表是*.vho 后缀名的) e)      将vo文件添加到工程,指定TestBench 文件 top_tb.v , 同前边一样进行仿真。 得到的仿真结果   Modelsim界面布局布线后仿真:          布局布线后仿真需要综合网表文件和添延时文件*.sdo(Verilog)或*_vhd.sdo(VHDL);   QuartusII 里面设置重新把 Generate netlist for functional simulation only 设置成 OFF 。     指定延时文件          这里 , region 要为顶层文件在tb 里的例化名 。 运行,查看波形,波形带有延时             用tcl文件.do 进行modelsim仿真 在modelsim中使用do文件是非常方便的进行仿真的一种方法,的项目比较大,特别是几个人分开做的时候,前后模块的联合仿真比较重要,查看的信号比较多,使用了do文件可以自动仿真,省去很多体力活。          下面是编写do文件的一般步骤: a).    quit -sim : 首先退出原来仿真的工程。 b).    cd      : 设置工作目录的路径,就是你所要建立的工作目录work要放在哪里。 c).     vlib work  : 在工作目录下建立一个work目录,请注意不要用操作系统直接新建一 个work的文件夹,因为用操作系统建立的work文件夹并没有modelsim SE自动生成的_info文件。还有个问题是,当你的软件工程里需要用到软核时,可能会需要一些库,但这些库ISE软件中是没有的,此时就需要我们自己新建库了,并映射到当前目录下。我们只自己新建的库一般放在work库前面建立。 d).    vmap work : 将新建的work库映射到当前工作目录下(当前目录就是第一步中的目录了)。其他新建的库也要这样的方法映射。 e).    vlog  +acc –work work “file_path/*.v ” : 编译“file_path”目录下所有.v文件,并将 其添加进工作库(work)中,包括IP生成的V文件也要编译的。或者 : vlog -f top_tb.f ,top_tb.f是.v的列表文件。编译时可以分开单独编译,但是一定要注意顺序,先编译被调用的文件。在综合后仿真和布局布线后仿真的时候,这里添加综合后网表和tb即可。VHDL 用vcom编译。 对于xilinx工程在仿真的时候还需要用到一个文件,那就是glbl.v这个库文件。它是存放在xilinx安装目录下,我们直接编译它并添加时工作库(work)就可以了。特别需要说明的是,在仿真软核的时候,在XPS软件里点击simulation - generate simulation hdl files会在工程目录中生成一个simulaton文件夹,这个文件夹里的东西就是软核仿真时所需要的仿真文件了。所以我们需把simulaton里所以的v文件都编译一次,这样才能仿真软核。 f).    vsim  -L altera_lib  -novopt  work.top_tb  : 这是没有调用IP Core时的仿真命令,注意后面的参数top_tb必须为Testbench中的模块名。 布局布线后仿真是这里要指定延时文件,vsim  -L altera_lib  -novopt -sdfmax /top_tb/top=top_v.sdo work.top_tb g).  do vawe.do 运行添加wave tcl,这里可以给信号分组,添加颜色,设置波形属性等。 h).  run –all  设定运行时间,run 1000ms等。          i).      在do里可以用 file copy/file delete 来对临时文件进行操作。            至此,modelsim仿真总结完毕。这里仅为了简单记录仿真方法和流程,旨在简单明了,对更深入的和更详细的有待进一步补充。             附件 一 、 testbench 模板   //////////////////////////////////////////////////////////////////////////////// // Company: // Engineer: // // Create Date: // Design Name: // Module Name: // Target Device: // Tool versions: // Description: //    // Dependencies: //    // Revision: //    // Additional Comments: //    ////////////////////////////////////////////////////////////////////////////////   `timescale 1ns / 1ps module top_tb;   //*************************Parameter Declarations****************************** parameter    CLK_PERIOD = 20  ;     //clk = 50Mhz   //************************Internal Declarations*********************** //************************** Register Declarations ****************************        reg             clk ; reg             reset;          //********************************Wire Declarations**************************     //******************************Main Body of Code*************************** //--------------------------------- initial reg data --------------------------------- initial          begin            end //---------- Generate Reference Clock input to tb ----------------   initial          begin                    clk = 1'b1;          end   always           #(CLK_PERIOD/2) clk = !clk;   //--------------------------------- Resets ---------------------------------         initial         begin                                                rst_n = 1'b1;             #(10*CLK_PERIOD)         rst_n = 1'b0;             #(100*CLK_PERIOD) rst_n = 1'b1;         end     //----------------------------- Data Transfer---------------------------------   initial begin            #(10*CLK_PERIOD);          @(negedge data)          begin            end end                     //----------------------------- simulation end ---------------------------------      initial begin          #(10*CLK_PERIOD);          if (     )    //end sign                    begin                             $display("------- TEST PASSED -------");                    end          else          begin                    $display("####### ERROR: TEST FAILED ! #######");          end          $stop; end              //------------------------ Instantiate TOP module  ------------------------   top # (          .parameter1   (1),        //          .parameter2   (0)         // ) top_inst (          .a (a),   );   Endmodule ////////////////////////////////////////////////////////////////////////////////     附件二 、 do 模板     //////////////////////////////////////////////////////////////////////////////// #!/bin/bash #this bash shell document is used to verilog project simulation #author:iyoyoo   echo "***************** end pre-project  ********************************" quit -sim   echo "***************** go to work dir  ********************************" #cd / #cd D:/quartus/EP4CE15F/lcd/simulation    echo "***************** start to  setup work lib************************" vlib work   echo "***************** start to  compile ******************************" vlog -f top_tb.f   echo "***************** set up reference library ***********************" vmap altera_lib  E:/modeltech_10.1a/altera_lib     echo "***************** delet pre-temp files  *************************" #file delete ../simulation/pika_ani.mif #file delete ../simulation/modelsim/top_v.sdo   echo "***************** copy temp file *********************************" #file copy ../source/pika_ani.mif ../simulation/ #file copy ../simulation/modelsim/top_v.sdo ../simulation/     echo "***************** start to  simulation  **************************" #-pli novas.dll   --- for debussy #-sdfmax /top_tb/top=top_v.sdo   -----for post synthesis sim   vsim  -L altera_lib  -novopt  work.top_tb   echo "***************** add signal to  vawe  **************************" do vawe.do   echo "***************** start to  run        ******************************" run -all   echo "***************** delete temp files  ***************************" #file delete ../simulation/pika_ani.mif #file delete ../simulation/modelsim/top_v.sdo ////////////////////////////////////////////////////////////////////////////////     附件三 、 file.f模板     //////////////////////////////////////////////////////////////////////////////// +licq_all+ +access+r   //../simulation/modelsim/top.vo   -for post synthesis simulation   ../source/top.v   ../simulation/top_tb.v     +libext+vmd+.v -y      $QUARTUS_ROOTDIR/eda/sim_lib ////////////////////////////////////////////////////////////////////////////////     附件三 、 wave.do模板     ////////////////////////////////////////////////////////////////////////////////   view signals stucture wave onerror {resume} quietly WaveActivateNextPane {} 0   #-color Green for all signal is green #-color Green Blue Yellow Pink Orchid Red Salmon Orange   # top_tb group add wave -itemcolor Blue -noupdate -expand -group top_tb -format Logic -radix hexadecimal /top_tb/*   # sub group add wave -itemcolor Green -noupdate -expand -group sub -format Logic -radix hexadecimal /top_tb/sub/*   TreeUpdate WaveRestoreCursors {{Cursor 1} {10000 ns} 0} configure wave -namecolwidth 364 configure wave -valuecolwidth 100 configure wave -justifyvalue left configure wave -signalnamewidth 0 configure wave -snapdistance 10 configure wave -datasetprefix 0 configure wave -rowmargin 4 configure wave -childrowmargin 2 configure wave -gridoffset 0 configure wave -gridperiod 1 configure wave -griddelta 40 configure wave -timeline 0 configure wave -timelineunits ps update WaveRestoreZoom {10000 ns} {10000 ns}   ////////////////////////////////////////////////////////////////////////////////                  
  • 热度 28
    2013-7-16 03:58
    1458 次阅读|
    0 个评论
      Modelsim仿真小结  Iyoyoo     Modelsim的基本仿真流程大致分以下几个步骤:建库、编译工程、前后仿真、调试等。Modelsim仿真既可以在modelsim界面操作,也可以用do文件实现, 这里结合学习的教程、网上看到的资料,和实际遇到的一些问题,分别做一整理小结。   建库     建库包括Altera库和Xilinx库,同时都包括Verilog和VHDL。这里只建了Verilog库,VHDL和Verilog步骤相同。     对于Altera库主要包括lpm元件库、Mega_Function库atera_mf、altera原语库altera_primitive和各器件系列模型库。前三种是调用altera模块的必备库,第四种是进行综合后功能仿真和布线后时序仿真需要的库,和器件系列有关,只选对应系列即可。   Altera库创建和编译步骤如下: 在Modelsim安装目录下 新建文件夹 ,命名altera_lib,以存放编译后的库文件,可以在altera_lib下新建Verilog和VHDL两个子文件夹,分别存放Verilog和VHDL库。 打开Modelsim,新建Library, file -new-library .. 如下图,创建lpm库,路径 E:\modeltech_10.1a\altera_lib\Verilog\lpm   添加库文件,并编译, compile - compile …  ,出现compile source files窗口,library 指定到lpm下,查找范围,选quartus安装目录下… eda\sim_lib目录里的仿真原型文件:220model.v , 点c ompile ,点done 。 到此,lpm库建立完毕。 同理,建立 altera_mf 库添加 altera_mf.v ,建立primitive库添加altera_primitive.v 建立各系列的模型库,命名可用系列名加_ver“xxx_ver”,也可随意吧,添加各系列的 xxx_atoms.v 。       这里,也可以把以上库放在一个文件夹,这样做简单,一次就搞定,分开也就是条理清楚,没人去看,所以没必要。   修改 modelsim.ini 文件,为的是让modelsim能自动map到已经编译的这些库上。先去掉只读属性,在 和 之间加上:库名=库路径 ,相对路径是相对于modelsim安装路径, modelsim安装路径用$MODEL_TECH表示。       这里所有库都放在E:\modeltech_10.1a\altera_lib下,库名是altera_lib,这里只添加一句:altera_lib = E:\modeltech_10.1a\altera_lib   保存退出,改回modelsim.ini只读属性,防止乱改。至此altera库建立完毕。     Xlinx库创建和编译步骤如下:          相比altera,xilinx建库很方便。xilinx有批处理命令,直接在console命令窗口,输入compxlib命令,调出编译库的窗口,先改掉modelsim安装目录下modelsim.ini只读属性。设置如下图:                     Next,选择语言:            Next,选择需要编译的器件:       Netx  -  next,选择输出路径,launch compile process,等待编译完成。完成后改回modelsim.ini只读属性。至此xilinx库建立完毕。    编译工程      编译工程主要包括:code、testbench、建立工程、建立工程库、映射、编译等。Code主要有code思想和风格,在Verilog部分涉及。Testbench,下边给出一个公用模板,基于这个方便修改,可以根据自己的习惯建一个temp_tb.v。       Modelsim界面编译工程: 新建工程:打开 modelsim ,file - new - project .. ,指定工程名、路径、工程库。   Add existing file   Add testbench file ….   编译, compile – complie all 编译语法查错,直到编译通过。至此编译完毕。   功能和时序仿真       仿真是在编译的基础上,进行的功能调试,包括综合前功能仿真、综合后功能仿真和布局布线后时序仿真。   Modelsim界面综合前仿真:          指定顶层,开始仿真; simulation - start simulation … ,在work 库中,指定testbench,ok,开始仿真。     查看仿真结果,打开 wave ,                     信号,加入wave   运行,查看波形。 Run - run all ….              至此,简单的modelsim界面综合前仿真介绍完毕。   Modelsim界面综合后仿真:          综合后仿真需要quartus综合后的网表文件(以altera为例), 综合后的网表的生成: quartus 工程名右键 - setting – EDA Tool Setting, 双击 Simulation ,选择EDA软件 modelsim , 选择输出网表路径,如图     More settings …. 将 Generate netlist for functional simulation only 设置为 ON   保存,全编译。  检查一下 … /modelsim/Psyth/source 里面,可以发现,已经生成了一个 *.vo 文件。 这个就是需要的网表文件。(VHDL 的输出网表是*.vho 后缀名的) e)      将vo文件添加到工程,指定TestBench 文件 top_tb.v , 同前边一样进行仿真。 得到的仿真结果   Modelsim界面布局布线后仿真:          布局布线后仿真需要综合网表文件和添延时文件*.sdo(Verilog)或*_vhd.sdo(VHDL);   QuartusII 里面设置重新把 Generate netlist for functional simulation only 设置成 OFF 。     指定延时文件          这里 , region 要为顶层文件在tb 里的例化名 。 运行,查看波形,波形带有延时         用tcl文件.do 进行modelsim仿真     在modelsim中使用do文件是非常方便的进行仿真的一种方法,的项目比较大,特别是几个人分开做的时候,前后模块的联合仿真比较重要,查看的信号比较多,使用了do文件可以自动仿真,省去很多体力活。          下面是编写do文件的一般步骤: a).    quit -sim : 首先退出原来仿真的工程。 b).    cd      : 设置工作目录的路径,就是你所要建立的工作目录work要放在哪里。 c).     vlib work  : 在工作目录下建立一个work目录,请注意不要用操作系统直接新建一 个work的文件夹,因为用操作系统建立的work文件夹并没有modelsim SE自动生成的_info文件。还有个问题是,当你的软件工程里需要用到软核时,可能会需要一些库,但这些库ISE软件中是没有的,此时就需要我们自己新建库了,并映射到当前目录下。我们只自己新建的库一般放在work库前面建立。 d).    vmap work : 将新建的work库映射到当前工作目录下(当前目录就是第一步中的目录了)。其他新建的库也要这样的方法映射。 e).    vlog  +acc –work work “file_path/*.v ” : 编译“file_path”目录下所有.v文件,并将 其添加进工作库(work)中,包括IP生成的V文件也要编译的。或者 : vlog -f top_tb.f ,top_tb.f是.v的列表文件。编译时可以分开单独编译,但是一定要注意顺序,先编译被调用的文件。在综合后仿真和布局布线后仿真的时候,这里添加综合后网表和tb即可。VHDL 用vcom编译。     对于xilinx工程在仿真的时候还需要用到一个文件,那就是glbl.v这个库文件。它是存放在xilinx安装目录下,我们直接编译它并添加时工作库(work)就可以了。特别需要说明的是,在仿真软核的时候,在XPS软件里点击simulation - generate simulation hdl files会在工程目录中生成一个simulaton文件夹,这个文件夹里的东西就是软核仿真时所需要的仿真文件了。所以我们需把simulaton里所以的v文件都编译一次,这样才能仿真软核。 f).    vsim  -L altera_lib  -novopt  work.top_tb  : 这是没有调用IP Core时的仿真命令,注意后面的参数top_tb必须为Testbench中的模块名。 布局布线后仿真是这里要指定延时文件,vsim  -L altera_lib  -novopt -sdfmax /top_tb/top=top_v.sdo work.top_tbg).  do vawe.do 运行添加wave tcl,这里可以给信号分组,添加颜色,设置波形属性等。 h).  run –all  设定运行时间,run 1000ms等。  i).      在do里可以用 file copy/file delete 来对临时文件进行操作。            至此,modelsim仿真总结完毕。这里仅为了简单记录仿真方法和流程,旨在简单明了,对更深入的和更详细的有待进一步补充。             附件 一 、 testbench 模板   //////////////////////////////////////////////////////////////////////////////// // Company: Company Name // Engineer: Iyoyoo // // Create Date: date // Design Name: name_of_top_level_design // Module Name: top_tb // Target Device: target device // Tool versions: tool_versions // Description: //    top_tb for top.v simulation in modelsim // Dependencies: //    sub module.... // Revision: //    v1.0 // Additional Comments: //    This is a testbench temp file for verilog ////////////////////////////////////////////////////////////////////////////////   `timescale 1ns / 1ps module top_tb;   //*************************Parameter Declarations****************************** parameter    CLK_PERIOD = 20  ;     //clk = 50Mhz   //************************Internal Declarations*********************** //************************** Register Declarations ****************************        reg             clk ; reg             reset;          //********************************Wire Declarations**************************     //******************************Main Body of Code*************************** //--------------------------------- initial reg data --------------------------------- initial          begin            end //---------- Generate Reference Clock input to tb ----------------   initial          begin                    clk = 1'b1;          end   always           #(CLK_PERIOD/2) clk = !clk;   //--------------------------------- Resets ---------------------------------         initial         begin                                                rst_n = 1'b1;             #(10*CLK_PERIOD)         rst_n = 1'b0;             #(100*CLK_PERIOD) rst_n = 1'b1;         end     //----------------------------- Data Transfer---------------------------------   initial begin            #(10*CLK_PERIOD);          @(negedge data)          begin            end end                     //----------------------------- simulation end ---------------------------------      initial begin          #(10*CLK_PERIOD);          if (     )    //end sign                    begin                             $display("------- TEST PASSED -------");                    end          else          begin                    $display("####### ERROR: TEST FAILED ! #######");          end          $stop; end              //------------------------ Instantiate TOP module  ------------------------   top # (          .parameter1   (1),        //          .parameter2   (0)         // ) top_inst (          .a (a),   );   Endmodule ////////////////////////////////////////////////////////////////////////////////     附件二 、 do 模板     //////////////////////////////////////////////////////////////////////////////// #!/bin/bash #this bash shell document is used to verilog project simulation #author:iyoyoo   echo "***************** end pre-project  ********************************" quit -sim   echo "***************** go to work dir  ********************************" #cd / #cd D:/quartus/EP4CE15F/lcd/simulation    echo "***************** start to  setup work lib************************" vlib work   echo "***************** start to  compile ******************************" vlog -f top_tb.f   echo "***************** set up reference library ***********************" vmap altera_lib  E:/modeltech_10.1a/altera_lib     echo "***************** delet pre-temp files  *************************" #file delete ../simulation/pika_ani.mif #file delete ../simulation/modelsim/top_v.sdo   echo "***************** copy temp file *********************************" #file copy ../source/pika_ani.mif ../simulation/ #file copy ../simulation/modelsim/top_v.sdo ../simulation/     echo "***************** start to  simulation  **************************" #-pli novas.dll   --- for debussy #-sdfmax /top_tb/top=top_v.sdo   -----for post synthesis sim   vsim  -L altera_lib  -novopt  work.top_tb   echo "***************** add signal to  vawe  **************************" do vawe.do   echo "***************** start to  run        ******************************" run -all   echo "***************** delete temp files  ***************************" #file delete ../simulation/pika_ani.mif #file delete ../simulation/modelsim/top_v.sdo ////////////////////////////////////////////////////////////////////////////////     附件三 、 file.f模板     //////////////////////////////////////////////////////////////////////////////// +licq_all+ +access+r   //../simulation/modelsim/top.vo   -for post synthesis simulation   ../source/top.v   ../simulation/top_tb.v     +libext+vmd+.v -y      $QUARTUS_ROOTDIR/eda/sim_lib ////////////////////////////////////////////////////////////////////////////////     附件三 、 file.f模板     ////////////////////////////////////////////////////////////////////////////////   view signals stucture wave onerror {resume} quietly WaveActivateNextPane {} 0   #-color Green for all signal is green #-color Green Blue Yellow Pink Orchid Red Salmon Orange   # top_tb group add wave -itemcolor Blue -noupdate -expand -group top_tb -format Logic -radix hexadecimal /top_tb/*   # sub group add wave -itemcolor Green -noupdate -expand -group sub -format Logic -radix hexadecimal /top_tb/sub/*   TreeUpdate WaveRestoreCursors {{Cursor 1} {10000 ns} 0} configure wave -namecolwidth 364 configure wave -valuecolwidth 100 configure wave -justifyvalue left configure wave -signalnamewidth 0 configure wave -snapdistance 10 configure wave -datasetprefix 0 configure wave -rowmargin 4 configure wave -childrowmargin 2 configure wave -gridoffset 0 configure wave -gridperiod 1 configure wave -griddelta 40 configure wave -timeline 0 configure wave -timelineunits ps update WaveRestoreZoom {10000 ns} {10000 ns}   ////////////////////////////////////////////////////////////////////////////////  
  • 热度 21
    2012-7-21 23:22
    2013 次阅读|
    0 个评论
          后仿真能否被形式验证(Formal Verification)和静态时序分析(Static Timing Analysis)所取代       验证的主要目的:就是检查时间模型是否满足时间要求,是否实现了时间所需的功能。对于集成电路来说,具体就是在时间需求规定的激励下,电路是否产生了符合功能要求的输出;以及在设计需求规定的条件下,电路是否完成正常的功能。     以RTL级设计为仿真对象的前仿真,主要是验证电路的逻辑功能,信号的跳变是瞬时完成的,因此只能在功能上证明设计的正确性,而无法证明在实际电路中逻辑功能仍然正确。     门级仿真是对RTL代码综合并布局布线后生成的门级网表进行时序仿真,是引入了逻辑延时时间的仿真。在后仿真阶段,仿真的过程中引入了线上和门级的延时,重点是验证在引入了实际时延之后系统功能是否正确,以避免因时延问题而导致系统时序功能的错误。     我们知道,当RTL级功能仿真或FPGA验证结束之后,传统的IC设计流程需要完成以下几次门级仿真:综合之后的门级仿真、DFT之后的门级仿真、布局布线之后的门级仿真等。如果设计很大或者电路很复杂,往往需要庞大的测试向量来验证设计的功能及时序是否正确,这就使得我们花费在门级仿真的时间会随着电路规模的增大而直线上升。     那么,可不可以用形式验证(Formal Verification)和静态时序分析(Static Timing Analysis)来代替动态后仿真呢?让我们先简单了解一下形式验证和静态时序分析。     形式验证是一种静态的验证手段,它根据电路结构静态地判断两个设计在功能上是否等价,常用来判断一个设计在修改前和修改后其功能是否保持一致。它运行时无须测试向量,但是必须有一个参照设计和一个待验证的设计。参照设计是设计者认为功能上完备无缺的设计,理论上它可以是用高级语言如C,C++实现的,也可以是用集成电路的建模语言SystemC,但就现实而言,多数形式验证过程中的参照设计就是我们的RTL设计,一般是用verilog或VHDL实现的。     静态时序分析简称STA ,它提供了一种针对大规模门级电路进行时序验证的有效方法。它只需要根据电路网表的拓扑,就可以检查电路设计中所有路径的时序特性,测试路径的覆盖率理论上可以达到100%,从而保证时序验证的完备性;同时由于不需要测试向量,所以STA验证所需时间远小于门级仿真的时间。当然,静态时序分析也有自己的弱点,它只能有效地验证同步时序电路的正确性,而无法验证电路功能的正确性,对于大部分设计中可能包含的异步电路的时序验证,则必须通过门级仿真来保证其时序的正确性。     对于上面的问题,我们的答案是模论两可的。     其实不是后仿不需要,只是这可能花的时间太多,所以人们想用形式验证+STA代替。但是这种方法还是有漏洞的,因为STA只检查边沿timing,而形式验证只看register和combination的抽象功能。后仿在下面三种情况是必要的:异步逻辑设计部分、ATPG向量验证和初始化状态验证。另外,后仿产生的VCD文件还可以做功耗分析。     现在通常的策略是:采用形式验证手段来保证门级网表在功能上与RTL设计保持一致,配合静态时序分析工具保证门级网表的时序,对于全同步的设计,甚至可以不做门级仿真;对于存在异步电路的设计,也只需要针对异步电路进行极少的门级仍真工作。这无疑会加快设计进度,加快产品上市时间。
  • 热度 23
    2010-12-4 20:20
    6383 次阅读|
    0 个评论
    用modelsim作后仿真,编译时报 Failed to find matching specify timing constraint. # ** Error: (vsim-SDF-3445) Failed to parse SDF file "*******.SDF".   经过分析应该是因为产生SDF的后端PR工具产生的timing check条件,而对应的库单元RTL模块中没有相应的timing约束。 这类问题应该可以在仿真时vsim后加上参数-sdfnoerror解决。这样可以让modelsim忽略这些error。同样 -sdfnowarn可以忽略warning信息。   另外,同样的文件在用VCS后仿时,默认下不会报error信息!
相关资源
  • 所需E币: 4
    时间: 2019-12-25 16:59
    大小: 56KB
    上传者: rdg1993
    不错的资料,与大家分享希望以后大家能够把好的资料分享,共同进步!怎样用modelsim做后仿(编译工具采用quatus)step1:在qurtus改变编译选项:assignments->EDAtoolsetting:选择verilog还是vhdl[pic]step2:编译。你会在你的工程所在目录看到一个simulation的目录,这里面有你生成的网表文件和标准延时文件step3:在目录:quartus\eda\sim_lib找到你选用器件对应的库文件,将库文件和网表文件以及延时文件和testbench文件放在同一目录,在modelsim里进行编译库文件、网表文件以及bench文件step4:编译成功后,然后进行load,在loaddesign的时候,需要制定延时文件的路径,以及延时文件作用的区域,延时文件的左右区域就是testbench里面调用顶层文件取的名字[pic]step5:打开signal窗口(view->signal)和wave窗口(view->signal),将你希望仿真的信号添加进去。Step:仿真。。。……
  • 所需E币: 3
    时间: 2020-1-4 23:34
    大小: 867.59KB
    上传者: givh79_163.com
    synplify,ISE,ModelSim后仿真流程……
  • 所需E币: 5
    时间: 2020-1-4 23:34
    大小: 867.59KB
    上传者: 2iot
    synplify,ISE,ModelSim后仿真流程(1)……
  • 所需E币: 4
    时间: 2020-1-4 23:35
    大小: 28.82KB
    上传者: 2iot
    SOC的后仿真……
  • 所需E币: 4
    时间: 2020-1-4 23:36
    大小: 271.34KB
    上传者: 978461154_qq
    QuartusII与ModelSim功能仿真与后仿真扫盲……