Actel器件库文件的制作及仿真20101015_BJ
- 格式:pdf
- 大小:614.72 KB
- 文档页数:11
如何进行Actel布局布线后仿真1.当我们调用Libero软件中的SmartDesign时,可以在SmartDesign中导入Libero中已有的Actel Macro, Basic Block, Bus Interface和DSP等已有的模块,也可以导入自己设计的专用模块。
当对这些模块进行综合、编译、布局布线以及时序文件反标之后,Libero就自动为这些模块生成了testbench文件。
并可使用这个testbench文件对模块进行前仿真、综合后仿真以及布局布线后仿真等测试。
但是这些仿真功能都很弱,信号线只有时钟信号和复位信号,而没有所开发模块的输入输出信号。
此时,我们可以对Libero中已有的testbench 进行修改,从而满足我们的需要,并实现了在Libero环境中的各个环节的仿真。
Libero软件自动生成的testbench所在的位置如下图中红圈所示:2.注意:在对Libero自动生成的testbench文件进行修改时,Libero会提示是否需要移除testbench文件的只读属性,此时就要选择“移除testbench文件的只读属性”,并将修改的结果进行保存,就会使新修改后的testbench文件生效,否则修改后的testbench文件会被另外保存一个位置,还是无效,不能对需要测试的模块进行测试。
3.如果Libero软件没有其中的项目文件自动生成testbench文件,那么在右击Libero集成环境中的modelsim图标,并选择仿真时,就会提示没有测试激励文件与本项目关联。
如果右击Libero集成环境中的modelsim图标,并选择仿真时,没有提示缺乏测试激励文件,那么就说明Libero已经为本项目生成了测试激励文件,只要根据自己的需要对这个testbench文件进行修改,就可以实现Libero环境下各个阶段的项目的仿真。
采用Actel公司的Libero软件进行仿真(包含多个仿真激励文件)如果采用Libero软件进行post-synthesis和post-layout仿真,而且包含多个仿真文件。
对Actel布局布线后文件作后仿真2010-10-151.功能模块文件及其测试模块:LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_arith.all;ENTITY testbench ISEND testbench;ARCHITECTURE test_module OF testbench ISCOMPONENT my_sdr isport(din,rst,clk: in std_logic;data: out std_logic_vector(6 downto 0));-- cout: out integer range 0 to 9);END COMPONENT;SIGNAL clkt: std_logic:='0';SIGNAL rstt: std_logic;SIGNAL dint: std_logic;signal datat: std_logic_vector(6 downto 0);-- signal coutt: integer range 0 to 9;CONSTANT clkped: time := 10 ns;BEGIN--UUT: my_sdr port map(clk=>clkt,rst=>rstt,din=>dint,data=>datat,cout=>coutt); UUT: my_sdr port map(clk=>clkt,rst=>rstt,din=>dint,data=>datat);generate_clk: process(clkt)beginclkt<=NOT clkt AFTER 10 ns;end process generate_clk;processbeginrstt<='1'; wait for 20 ns; rstt<='0'; wait for 0 ns;dint<='1'; wait for 20 ns; dint<='0'; wait for 20 ns;dint<='1'; wait for 20 ns; dint<='1'; wait for 20 ns;dint<='1'; wait for 20 ns; dint<='0'; wait for 20 ns;dint<='0'; wait for 20 ns; dint<='1'; wait for 20 ns;dint<='0'; wait for 20 ns; dint<='1'; wait for 20 ns;dint<='0'; wait;end process;end ARCHITECTURE test_module;library ieee;use ieee.std_logic_1164.all;entity my_sdr isport(din,rst,clk: in std_logic;data: out std_logic_vector(6 downto 0));-- cout:buffer integer range 0 to 9);end my_sdr;architecture module of my_sdr issignal count: integer range 0 to 9;beginprocess(clk,rst,din)--variable count: integer range 0 to 9;beginif(rst='1') thencount<=0;data<="0000000";elsif (clk'event and clk='1') thencount<=count+1;if(count<=6) then data(count)<=din;else count<=0; end if;end if;-- cout<=count;end process;end module;2.采用Libero集成环境中的modelsim做布局布线后仿真在采用Libero对模块进行布局布线及延时文件反标之后,进行一下操作:2.1 设置后仿选项:可以设置仿真时间、测试模块名称等参数。
Actel布局布线后仿真库文件设置因为大多数设计者使用Actel公司器件的原因是其反熔丝特性,这些芯片是一次编程的,所以布局布线后仿真显的更加重要。
安装Actel公司的Designer 后其库的原文件位置是:VHDL 的VITAL Library: <Drive>:/Actel/ Designer_R1-2001/ lib/vtl/95Verilog Library: <Drive>:/Actel/ Designer_R1-2001/lib/vlog此处以VHDL为例进行库编译说明。
对应于不同的器件系列其库名字分别是act1, act2, act3, a3200dx, a40mx, a42mx, a54sx,a54sxa, ex and a500k等。
Verilog的库名稍微有所不同,库名分别是act1, act2, act3, 3200dx, 40mx, 42mx, 54sx, 54sxa, ex and a500k等。
源文件分别和库名相对应,很容易看出。
下面以act2库为例进行说明。
vlib act2vmap act2 d:/test/test/act2vcom –93 –work act2 <Drive>:/Actel/ Designer_R1-2001/ lib/vtl/95/act2.vhd然后对Modelsim安装目录下的Modelsim.INI文件进行修改即可。
此处大家看到利用vcom –93对库进行编译,是因为Actel的库源文件是利用VHDL 93标准写的,而Modelsim默认是安装87标准进行编译的。
●Actel 仿真中测试母模块的自动生成,在Actel的Libero环境中可以自动生成测试母模块及其它配套模块,这些模块都可以通过工作目录下进行搜索”*.v”文件来获得。
获得这些”*.v”文件后就可以脱离Libero环境自己手工采用modelsim来建立仿真目录并进行手工仿真。
Actel 器件库文件的制作及各种仿真1. Actel 器件库文件的制作Actel 器件库文件是综合后仿真与布局布线后仿真中必不可少的文件。
有了器件库文件,可 以单独采用modelsim 进行综合后仿真,而不必启动 Libero 集成环境来进行综合后仿真与布 局布线后仿真。
器件库文件的制作过程如下(以act2的器件制作过程为例来说明):(1) .点击:File/New/Library ,产生如下操作界面:界面中的act2为输入的器件库名称。
点击“ OK ”进入下一步。
⑵点击Compile/Compile 出现以下界面在 “ Library ” 选择框中选 “ act2 ” ,在查找范围中逐步点击“C:/Actel/Libero_v9.0/Designer/lib/vtl/95/act2.vhd ” ,出现如下界面:CospiLe S DIITCC : Filesl 甲 ComDiiaelectedoaethen DefaultDpfcnt... Edt^ouice(3).点击"Compile ”进行器件库文件的编译,编译结束后点击" Done ”,完成编译。
这时就 会在“ Library ”框中出现所编译成功的器件库名称如下图左边黑框中所示: 至此,就完成了 Actel 器件库文件act2的编译。
就可以在以后仅仅启动 modelsim 就可以完 成act2器件模块的综合后仿真。
也就是说,生成库文件之前的描述器件的VHDL 语言文件在“ C:/Actel/Libero_v9.0/Designer/lib/vtl/95 ”文件夹下面,而生产成编译产生的器件的库文 件被放在了“ C:/Actel/Libero_v9.0/Model/ ” 文件夹下面。
(a) 如果在生成库文件的过程中,遇到提示需到先生成work 库文件的情况,则先生成 work库文件,再生成器件的库文件。
(b) 在生成库文件之后,可能会改变modelsim 中原来的综合选项“Compile/Compileproperties/Project Compiler Sett in gs/Coverage ” 下面 “ Other coverage ” 下的 “ lg nore Focused Expression/Condition Covereage(-nocovefec) ”为选中状态,使得综合过程出错。
数字逻辑实验仿真系统元件库设计XML VC
数字逻辑实验仿真系统元件库设计摘要:随着计算机技术在各个行业的普及,特别是在科研及教学方面的应用,用软件的方法来模拟硬件实验,从而实现硬件类课程的教学研究,变得越来越有必要。
它既可以降低实验设备经费,又便于更新实验内容,而且实验者可以像在真实的环境中一样完成各种预定的实验项目,所取得的学习或实验效果等价于甚至优于在真实环境中所取得的效果。
同时它也可以用于计算机辅助教学,使课堂教学更形象、更生动。
我们的课题是设计一个数字逻辑仿真实验平台。
可以使用一些基本的虚拟元件,比如电压源,与门,非门,指示灯等来模拟数字逻辑元件的运算,并将输出结果显示在屏幕上,实现仿真的目的。
本设计的主要工作是设计仿真元件库。
论文首先介绍了开发环境和开发工具(VC ),然后讲述了XML技术和数字逻辑仿真实验的原理,最后详细描述了仿真实验平台元件库的设计和实现。
关键字:仿真;元件;数字逻辑;VC ;XMLDesign of the Component Library of Digital Logic Experiment Simulating System。
Actel器件库文件的制作及各种仿真2010-10-151.Actel器件库文件的制作Actel器件库文件是综合后仿真与布局布线后仿真中必不可少的文件。
有了器件库文件,可以单独采用modelsim进行综合后仿真,而不必启动Libero集成环境来进行综合后仿真与布局布线后仿真。
器件库文件的制作过程如下(以act2的器件制作过程为例来说明):(1). 当建议一个project文件后,点击:File/New/Library,产生如下操作界面:界面中的act2为输入的器件库名称。
点击“OK”创立库文件并进入下一步。
(2)关闭(1)中所建立的project文件(File/Close),然后点击Compile/Compile出现以下界面在“Library”选择框中选“act2”,在查找范围中逐步点击“C:/Actel/Libero_v9.0/Designer/lib/vtl/95/act2.vhd”, 出现如下界面:(3). 点击“Compile”进行器件库文件的编译,编译结束后点击“Done”,完成编译。
这时就会在“Library”框中出现所编译成功的器件库名称如下图左边黑框中所示:至此,就完成了Actel器件库文件act2的编译。
就可以在以后仅仅启动modelsim就可以完成act2器件模块的综合后仿真。
也就是说,生成库文件之前的描述器件的VHDL语言文件在“C:/Actel/Libero_v9.0/Designer/lib/vtl/95”文件夹下面,而生产成编译产生的器件的库文件被放在了“C:/Actel/Libero_v9.0/Model/”文件夹下面。
(4) 可以编译的VHDL库文件必须由Package模块构成,Package可以包含Function,Procedure 或Component等子模块组成。
如果Package中包含Component时,需要在同一文件中进行Component的Architecture的定义,而且Component和Package要各自进行自己的Library IEEE等库文件的声明和引用。
编译后的库文件包含Entity和Package两种形式。
一个自己设计的库文件的例子如下所示:library ieee;use ieee.std_logic_1164.all;package mylib iscomponent my_sdr isport(din,rst,clk: in std_logic;data: out std_logic_vector(6 downto 0);cout:buffer integer range 0 to 9);end component;end mylib;library IEEE;use IEEE.STD_LOGIC_1164.all;entity my_sdr isport(din,rst,clk: in std_logic;data: out std_logic_vector(6 downto 0);cout:buffer integer range 0 to 9);end my_sdr;architecture module of my_sdr isbeginprocess(clk,rst,din)variable count: integer range 0 to 9;beginif(rst='1') thencount:=0;data<="0000000";elsif (clk'event and clk='1') thencount:=count+1; data(count)<=din; if(count=6) then count:=0; end if; end if;cout<=count;end process;end module;其testbench如下所示:LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_arith.all;USE work.mylib.all;ENTITY testbench ISEND testbench;ARCHITECTURE test_module OF testbench ISSIGNAL clkt: std_logic:='0';SIGNAL rstt: std_logic;SIGNAL dint: std_logic;signal datat: std_logic_vector(6 downto 0);-- signal coutt: integer range 0 to 9;CONSTANT clkped: time := 10 ns;BEGIN-- UUT: my_sdr port map(clk=>clkt,rst=>rstt,din=>dint,data=>datat,cout=>coutt);UUT: my_sdr port map(clk=>clkt,rst=>rstt,din=>dint,data=>datat);generate_clk: process(clkt)beginclkt<=NOT clkt AFTER 10 ns;end process generate_clk;processbeginrstt<='1'; wait for 20 ns; rstt<='0'; wait for 0 ns;dint<='1'; wait for 20 ns; dint<='0'; wait for 20 ns;dint<='1'; wait for 20 ns; dint<='1'; wait for 20 ns;dint<='1'; wait for 20 ns; dint<='0'; wait for 20 ns;dint<='0'; wait for 20 ns; dint<='1'; wait for 20 ns;dint<='0'; wait for 20 ns; dint<='1'; wait for 20 ns;dint<='0'; wait;end process;END ARCHITECTURE test_module;即自己建立的库文件一般包含在work子库文件内,这样可以顺利编译运行。
如果自己新建议库文件目录,那么会报错。
(5) 如果要删除一个库文件,那么可在以下界面中删除:注意:(a)如果在生成库文件的过程中,遇到提示需到先生成work库文件的情况,则先生成work库文件,再生成器件的库文件。
(b)在生成库文件之后,可能会改变modelsim中原来的综合选项“Compile/Compileproperties/Project Compiler Settings/Coverage”下面“Other coverage”下的“Ignore Focused Expression/Condition Covereage(-nocoverfec)”为选中状态,使得综合过程出错。
此时,取消这个选项的选定即可解决这一问题。
(c)当生成新的项目,而在新项目中的“Library”目录下所生成的器件库中的器件族无法利用时(unavailable)时,需要重新对这个器件进行映射。
右击所需映射的器件并选“Edit”选项,如下图所示出现下图所示的对话框:在“Library pathname”框中输入“C:/Actel/Libero_v9.0/Model/act2”,并点击确定,就可将Act2器件库重新对应起来。
如下图所示:●Actel 仿真中测试母模块的自动生成,在Actel的Libero环境中可以自动生成测试母模块及其它配套模块,这些模块都可以通过工作目录下进行搜索”*.v”文件来获得。
获得这些”*.v”文件后就可以脱离Libero环境自己手工采用modelsim来建立仿真目录并进行手工仿真。
●仿真过程中Actel Library文件的获取:如果脱离Libero环境下的modelsim仿真过程中,在modelsim界面下“simulate/start simulation”下点击”work/testbench”后提示缺失库文件,那么可以先在libero集成环境中调用modelsim仿真后生成所需要的相应的库文件并拷贝到自己的工作目录下。
然后通过“start simulation”选项卡中的“libraries”下的“add”按钮来添加工作库文件来解决这一问题。
●有一点需要注意,如果仿真库和modelsim工程下的“*.v”文件中的模块具有同样的功能,那么modelsim将会以仿真库的接口及功能优先。
也就是说,此时,对于“*.v”将不会影响仿真结果。
因此,在modelsim仿真过程中添加仿真库时,不要添加和工程下的“*.v”文件中的模块具有同样名字的仿真库。
2. Actel器件综合后仿真步骤按照如上所述步骤完成Actel器件库文件的制作过程后,就可以单独启动modelsim文件进行综合后仿真和布局布线后仿真,例如文件夹aftersim下面的综合后的仿真结果如下图所示。
从图中可以看出,仿真结果中的输出变量的有效值与输入变量的有效值之间存在明显的延时。
综合前的测试文件和vhdl文件(在文件夹presim中)如下:由上图可见,输出变量的有效值和输入变量的有效值之间不存在延时。
3. 项目文件夹下面各个子目录中所包含的文件类型如下所示:(1) synthesis生成如下文件:run_options.txt: 综合过程的脚本文件;tcomp.pdc:综合过程中的物理约束文件;tcomp_sdc.sdc:综合过程中的时序约束文件;tcomp.edn:综合过程生成的网标文件;tcomp.sdf:综合后的延时反标文件;(2) smartgen\tcomp1目录下生成如下文件:tcomp1模块综合后的vhd文件;(3) component\work\tcomp下面产生自动生成文件:tcomp.vhd和testbench.vhd文件(4) mysim\designer\impl1下面生成如下文件:tcomp.tcl脚本约束文件;tcomp_ba.sdf布局布线后延时反标文件;tcomp_ba.vhd布局布线后的网表文件;(5) 项目名为tcomp,模块名为tcomp1如下图所示:4. 不同种类的仿真(1) 最基本的仿真(自己编写testbench文件,采用catalog下的basic blocks):采用smartgen\tcomp1\tcomp1.vhd作为被测试模块;仿真在tsim0文件夹下进行;Testbench文件如下:library IEEE;use IEEE.std_logic_1164.all;USE IEEE.STD_LOGIC_TEXTIO.ALL;USE STD.TEXTIO.ALL;entity testbench isend entity testbench;architecture test_reg of testbench iscomponent tcomp1 isport( DataA : in std_logic_vector(7 downto 0); DataB : instd_logic_vector(7 downto 0); AGEB : out std_logic) ;end component;signal a,b:STD_LOGIC_VECTOR(7 DOWNTO 0);signal AGEB: STD_LOGIC;beginUUT : tcomp1 port map (DataA=>a, DataB=>b,AGEB=>AGEB);file_io: PROCESS ISFILE in_file : TEXT OPEN READ_MODE IS "E: \mydatain.txt";FILE out_file : TEXT OPEN WRITE_MODE IS "E:\ \mydataout1.txt";V ARIABLE out_line : LINE;V ARIABLE in_line : LINE;V ARIABLE a1,b1 : STD_LOGIC_VECTOR(7 DOWNTO 0);--V ARIABLE result: STD_LOGIC;BEGINWHILE NOT ENDFILE(in_file) LOOP --do this till out of dataREADLINE(in_file, in_line); --get line of input stimulusREAD(in_line, a1); --get first operandREAD(in_line, b1); --get second operanda<=a1;b<=b1;-- wait for 100 ns;wait for 1 ns;--output the results to the filewrite(out_line, string'(" result "));WRITE(out_line, AGEB); --save results to lineWRITELINE(out_file, out_line); --write line to file--output the results to the screenwrite(out_line, string'(" result="));WRITE(out_line, AGEB); --save results to lineWRITELINE(output, out_line); --write line to the screenEND LOOP;ASSERT FALSE REPORT "Simulation done" SEVERITY NOTE;WAIT; --allows the simulation to halt!END PROCESS;end architecture test_reg;(2)基本的仿真(自己编写testbench文件,采用catalog下的basic blocks):采用component\work\tcomp\tcomp.vhd作为被测试模块;仿真在tsim1文件夹下进行;tcomp模块中包含tcomp1子模块、电源子模块等,因此,需要将smartgen\tcomp1\tcomp1.vhd 文件加入到这个项目中,仿真结果如图所示。