2024年1月24日发(作者:劳丹云)
ispLEVER培 训 教 程 (FPGA)
- 基于新的莱迪思FPGA(ECP/EC)的设计流程 -
上 海 莱 迪 思 半 导 体 公 司 市 场 部
2004 年 5 月
英文网址:
中文网址:或
Page 1
目录
第一节ispLEVER 简介
第二节 LEVER 开发工具的FPGA设计输入方法
第三节ModelSim 的使用方法
第四节 设计的实现
Page 2
第 一 节 ispLEVER 简 介
ispLEVER 是Lattice 公司最新推出的一套EDA软件。提供设计输入、HDL综合、验证、器件适配、布局布线、编程和在系统设计调试。设计输入可采用原理图、硬件描述语言、混合输入三种方式。能对所设计的数字电子系统进行功能仿真和时序仿真。软件中含有不同的工具,适用于各个设计阶段。软件包含Synplicity公司的“Synplify”、Exemplar Logic公司的“Leonado”综合工具和Lattice的ispVM器件编程工具。ispLEVER软件提供给开发者一个有力的工具,用于设计所有莱迪思可编程逻辑产品。软件不仅支持所有Lattice公司的ispLSI 、MACH、ispGDX、ispGAL、GAL器件,还支持莱迪思新的FPGA、FPSC、ispXPGATM和ispXPLDTM产品系列。这使得ispLEVER的用户能够设计所有Lattice公司的业界领先的FPGA、FPSC、CPLD产品而不必学习新的设计工具。
软件主要特征:
1. 输入方式
* 原理图输入
* ABEL-HDL输入
* VHDL输入
* Verilog-HDL输入
* EDIF输入
* 原理图和硬件描述语言混合输入
2. 逻辑模拟
* 功能模拟
* 时序模拟
3. 编译器
* 结构综合、映射、自动布局和布线
4. 支持的器件
* 含有支持ispLSI器件的宏库及MACH器件的宏库、TTL库
* 支持所有ispLSI、MACH、ispGDX、ispGAL、GAL、EC、ECP、EC-XP、SC、ORCA FPGA/FPSC、ispXPGA和ispXPLD器件
5. 工具
* Preference Editor、Module Manager、TCL、Floorplanner、EPIC
Device Editor和Constraints Editor
6. ispVM工具
* 对CPLD器件进行编程
Page 3
第二节 ispLEVER开发工具的FPGA设计输入方法
I.
II.
启动ispLEVER(按Start=>Programs=>Lattice Semiconductor=>ispLEVER菜单)
创建一个新的设计项目
1. 选择菜单File。
2. 选择。
3. 在Create New Project对话框的Project Name栏中,键入项目名d:。在Project type栏中选择Schematic/VHDL(ispLEVER软件支持Schematic/ABEL、Schematic/VHDL、Schematic/Verilog、EDIF输入)。即可看到如下窗口。
图2.1 ispLEVER System Project Navigator主窗口
此时,在 ispLEVER System Project Navigator主窗口中,显示一个对话框,这是要你选择综合器。
图2.2选择综合器
Page 4
在该对话框选择Synplify,然后按OK。你可以看到默认的项目名和器件型号:
Untitled and ispLSI5256VE-165LF256。
图2.3默认的器件型号
4. 双击ispLSI5256VE-165LF256, 你会看到Device Selector对话框(如图2.4所示)。
5. 在Select Device窗口中选择FPGA器件。
6. 按动器件目录中的滚动条,直到找到并选中器件LFEC20E。
Page 5
图2.4 选择FPGA器件
7. 揿OK按钮,选择这个器件。
8. 在软件弹出的如图2.5所示的Confirm Change窗口中,按Yes按钮。
图2.5 Confirm Change窗口
III. VHDL设计输入的操作步骤
本例中,选择VHDL类型。若是Verilog设计输入,则选择Verilog HDL类型。
将该工程文件存盘为。
在ispLEVER System Project Navigator主窗口中,选择Source=>New菜单。在弹出的New Source对话框中,选择VHDL Module类型。
Page 6
图2.6 选择 VHDL Module
此时,软件会产生一个如图2.7所示的New VHDL Source对话框:
图2.7 New VHDL Source对话框
在对话框的各栏中,分别填入如图2.7所示的信息。按OK钮后,进入文本编辑器-Text Editor编辑VHDL文件。
在Text Editor中输入如下的VHDL设计,并存盘。
该设计为实现比较器。采用模块化的分层结构,有一个顶层文件,三个底层文件。
顶层文件
library ieee;
use _logic_;
entity TOP_SCHEMATIC is
port (CLK : in std_logic;
RST : in std_logic;
SEL : in std_logic;
DAT : in std_logic_vector (3 downto 0);
COMPDAT : in std_logic_vector (3 downto 0);
GT_O : out std_logic;
LT_O : out std_logic;
EQ_O : out std_logic);
end TOP_SCHEMATIC;
architecture IMP_TOP_SCHEMATIC of TOP_SCHEMATIC is
Page 7
component COMP_LT
port (O1 : out std_logic;
IN0 : in std_logic_vector (3 downto 0);
IN1 : in std_logic_vector (3 downto 0));
end component;
component COMP_GT
port (O1 : out std_logic;
IN0 : in std_logic_vector (3 downto 0);
IN1 : in std_logic_vector (3 downto 0));
end component;
component COMP_EQ
port (O1 : out std_logic;
IN0 : in std_logic_vector (3 downto 0);
IN1 : in std_logic_vector (3 downto 0));
end component;
signal CR : std_logic_vector (3 downto 0);
signal W_CR : std_logic_vector (3 downto 0);
begin -- IMP_TOP_SCHEMATIC
-------------------------------------------
-- Instantiate lower level modules
-------------------------------------------
GT_1: COMP_GT port map(
O1 => GT_O,
IN0 => W_CR,
IN1 => COMPDAT);
LT_1: COMP_LT port map (
O1 => LT_O,
IN0 => W_CR,
IN1 => COMPDAT);
EQ_1: COMP_EQ port map (
O1 => EQ_O,
IN0 => W_CR,
IN1 => COMPDAT);
W_CR <= CR;
--------------------------------------------
-- Define logic for loading compare register
--
-- The compare register (cr) is only loaded
-- when sel input is asserted on rising edge
-- of clk.
--------------------------------------------
LOAD_COMP_REG : process (CLK, RST)
Page 8
begin -- process LOAD_COMP_REG
-- activities triggered by asynchronous reset (active low)
if RST = '0' then
CR <= "0000";
-- activities triggered by rising edge of clock
elsif CLK'event and CLK = '1' then
if SEL = '0' then
CR <= DAT;
else
CR <= CR;
end if;
end if;
end process LOAD_COMP_REG;
end IMP_TOP_SCHEMATIC;
底层文件1
library ieee;
use _logic_;
entity COMP_EQ is
port (O1 : out std_logic;
IN0 : in std_logic_vector (3 downto 0);
IN1 : in std_logic_vector (3 downto 0));
end COMP_EQ;
architecture IMP_COMP_EQ of COMP_EQ is
begin -- IMP_COMP_EQ
FUNCTION_EQ : process (IN0, IN1)
begin -- process FUNCTION_GT
if IN0 = IN1 then
O1 <= '1';
else
O1 <= '0';
end if;
end process FUNCTION_EQ;
end IMP_COMP_EQ;
底层文件2
library ieee;
use _logic_;
entity COMP_GT is
port (O1 : out std_logic;
IN0 : in std_logic_vector (3 downto 0);
IN1 : in std_logic_vector (3 downto 0));
Page 9
end COMP_GT;
architecture IMP_COMP_GT of COMP_GT is
begin -- IMP_COMP_GT
FUNCTION_GT : process (IN0,IN1)
begin -- process FUNCTION_GT
if IN0 > IN1 then
O1 <= '1';
else
O1 <= '0';
end if;
end process FUNCTION_GT;
end IMP_COMP_GT;
底层文件3
library ieee;
use _logic_;
entity COMP_LT is
port (O1 : out std_logic;
IN0 : in std_logic_vector (3 downto 0);
IN1 : in std_logic_vector (3 downto 0));
end COMP_LT;
architecture IMP_COMP_LT of COMP_LT is
begin -- IMP_COMP_LT
FUNCTION_LT : process (IN0,IN1)
begin -- process FUNCTION_LT
if IN0 < IN1 then
O1 <= '1';
else
O1 <= '0';
end if;
end process FUNCTION_LT;
end IMP_COMP_LT;
接下来采用Synplify工具对VHDL设计进行综合。 此时的ispLEVER System
Project Navigator主窗口如图2.8所示:
Page 10
图2.8 ispLEVER System Project Navigator主窗口
双击Processes窗口的Synplify Synthesize VHDL File进行编译、综合。或者选择菜单Tools=> Synplify Synthesis产生如下窗口。选Add调入,然后对文件进行编译、综合。
Page 11
图2.9 Synplify窗口
若整个编译、综合过程无错误,该窗口在综合过程结束时会自动关闭。若在此过程中出错,双击上述Synplify窗口中Source Files栏中的文件进行修改并存盘,然后按RUN钮重新编译。
在通过VHDL综合过程后,可对设计进行功能和时序仿真。
IV. Module/IP管理器使用方法
Module/IP 管理器用于帮助设计者用Lattice 的参数化模块和IP核做大的设计。
在ispLEVER System Project Navigator主窗口中,按Tools=>Module/IP Manager
即会出现如图2.10所示的窗口。
Page 12
图2.10 Module/IP Manager窗口。
在Module文件夹中选择所要的模块,例如FIFO。在Module Name栏中填入模块名。
图2.11 选择 FIFO
然后按Customise钮。界面如图2.12所示。
Page 13
图2.12 设置参数- General Options
然后在对话框中选Confoguration,再设置各种参数,最后按Generate钮,即产生相应的模块。
图2.13 设置参数-Configuration
Page 14
第三节ModelSim 的使用方法
ModelSim 是 一个仿真工具,可以用来模拟设计的结果,进行功能仿真和时序仿真。以下用前一节的例子来说明ModelSim的使用方法。
1. 建立测试向量文件
2. 在主窗口中选择Souce=>New即弹出如下窗口。点击VHDL Test Bench,输入测试向量
2
图3.1 New Source窗口
library ieee;
use _logic_;
Page 15
entity TB_TOP is
end TB_TOP;
-- purpose: STIMULUS for testing comparitor
architecture TB of TB_TOP is
component TOP_SCHEMATIC
port (CLK : in std_logic;
RST : in std_logic;
SEL : in std_logic;
DAT : in std_logic_vector (3 downto 0);
COMPDAT : in std_logic_vector (3 downto 0);
GT_O : out std_logic;
LT_O : out std_logic;
EQ_O : out std_logic);
end component;
signal CLK : std_logic := '0'; -- Primary Clock
signal RST : std_logic := '0'; -- RESET
signal SEL : std_logic := '1'; -- Select to load compare register
signal DAT : std_logic_vector (3 downto 0) := "0000";
signal COMPDAT : std_logic_vector (3 downto 0 ) := "0000";
signal GT_O : std_logic; -- Asserted when COMPDAT >
signal LT_O : std_logic; -- Asserted when COMPDAT <
signal EQ_O : std_logic; -- Asserted when COMPDAT =
constant CLK_PERIOD : time := 20 ns;
begin -- TB
--------------------
-- Clock generator
--------------------
CLK <= not CLK after (CLK_PERIOD/2);
-------------------------------------------
-- Instantiate Unit Under Test
-------------------------------------------
UUT : TOP_SCHEMATIC port map (
CLK => CLK,
RST => RST,
SEL => SEL,
DAT => DAT,
COMPDAT => COMPDAT,
GT_O => GT_O,
LT_O => LT_O,
EQ_O => EQ_O);
Page 16
STIMULUS : process
begin -- process STIMULUS
wait for (5 * CLK_PERIOD);
------------------------------
-- Remove Reset condition
------------------------------
RST <= '1';
wait for (5 * CLK_PERIOD);
-------------------------------------
-------------------------------------
---------------------------------------
---------------------------------------
-------------------------------------
-------------------------------------
-------------------------------------
-------------------------------------
-------------------------------------
-------------------------------------
end process STIMULUS;
-- Expect tGT = 0; tLT = 0; tEQ = 1;
wait for (CLK_PERIOD);
-- Load compare register with new data
wait for (CLK_PERIOD);
SEL <= '0';
DAT <= "1010";
wait for (CLK_PERIOD);
-- Expect tGT = 1; tLT = 0; tEQ = 0;
SEL <= '1';
COMPDAT <= "1010";
wait for (CLK_PERIOD);
-- Expect tGT = 0; tLT = 0; tEQ = 1;
COMPDAT <= "1011";
wait for (CLK_PERIOD);
-- Expect tGT = 0; tLT = 1; tEQ = 1;
wait for (5 * CLK_PERIOD);
Page 17
图3.2 准备进行功能仿真
在源文件窗口中选中tb_,在操作流程窗口中双击 VHDL Function
Simulation, 会弹出如图3.3所示的窗口。图中左侧列出了设计中所有输入、输出信号。右侧显示了仿真波形。
图3.3 仿真波形
Page 18
信号名前若有[+]表示含有下层的信号,可以点击该符号,将显示出下层的信号。图中显示了信号展开后的波形。
图3.4 输入信号展开后的波形
时序仿真的操作步骤与功能仿真类似。
第四节 设计实现
针对FPGA的设计输入完成编译和功能仿真后,下一步就是进行设计实现(Design Implementation)。整个设计实现过程包括两个重要的执行环节——映射(Map)和布局布线(Place & Route)。映射是将设计由一个与器件无关的元件(例如:门电路和触发器)网络的表述转换为一个与器件相关的元件(例如:可配置的逻辑块)网络的表述。布局布线是根据映射后生成的结构设计(Physical Design)文件(*.ncd)在器件中对设计进行适配。在映射和布局布线的过程中,ispLEVER还提供给设计者交互式编辑功能(Interactive Editing)。
交互式编辑(Interactive Editing)
ispLEVER中的交互式编辑功能包含三个工具:Preference Editor,FPGA
Floorplanner以及EPIC Device Editor。
Preference Editor
Preference Editor让您指定或修改由用户或映射器生成的、对布局布线或时序约束的优选条件。Preference Editor读入优选文件(*.prf)并显示这些优选设置。对这个优选文件的更改是通过功能对话框进行的。
Page 19
在上一节中,对Compare这个设计完成了功能仿真,接下来就可以用Preference Editor进行优选设置了。在映射操作前,首先进行Pre-Map Preference
Editor操作:
1. 在ispLEVER Project Navigator窗口中,选中左侧源文件窗口中的器件LFEC20E-3F672C。
2. 右侧的操作流程窗口中会有一栏Pre-Map Preference Editor,双击该栏会弹出Pre-Map Preference Editor窗口,如图4.1所示。
图4.1 Pre-Map Preference Editor窗口
3. 点击图4.1窗口左侧Input Ports和Output Ports左边的,展现所有的输入信号:CLK,COMPDAT(3:0),DAT(3:0),RST,SEL和输出信号EQ_O,GT_O,LT_O。选中这些信号名,在窗口右侧会显示对应于每个信号的参数行。在该参数行中可以设置或修改对应信号的一系列参数:Grouped By(信号所属的组名,该特性不能直接在参数行中修改,需要在Preference =>Group Assignment菜单中设置),
Pin Location(信号所对应器件的引脚位置), IO Type(输入/输出的电平类型), Drive(输出的驱动电流值),Slewrate(摆率),
Pullmode(上/下拉模式), Output Load(输出负载)等。在这些参数中,最为关键的是Pin Location,其用来设置信号所对应器件的引脚位置,即锁定引脚。每个实际的设计中,必须配合印刷电路板上器件的位置来设置该项参数。双击该参数栏,逐个输入每个信号对应的器件引脚号后,Pre-Map Preference Editor窗口如图4.2所示。
Page 20
图4.2 设置完Pin Location后的Pre-Map Preference Editor窗口
设置Pin Location的另外一种直观的方法是在Preference Editor窗口中选择Device => Package View菜单,会产生一个如图4.3所示的一个新的窗口。
Page 21
图4.3 Package View窗口
在该窗口的左侧显示所有的输入/输出信号,而右侧则展示了器件的引脚图。选中左侧的一个信号,把它拉至右侧的某个引脚上,那么该信号就被锁定到此引脚上了。
除了设置引脚属性(Pin Attributes)外,在图4.2中窗口的右下方还有Cell
Attributes,Global Constraints,Block,Period/Frequency,In/Out Clock以及Multicycle菜单,可以分别用来查看或设置单元属性,全局约束条件,块属性,周期/频率参数,输入-建立/时钟-输出参数,多周期参数。
当编辑完所有需要变更的参数后,按File => Save 菜单存盘,所有参数就被存入*.PRF文件中。接下来的操作流程中就会读入这些更新过的参数。
FPGA Floorplanner
FPGA Floorplanner提供了一个用于管理FPGA器件的图形接口工具。它可以帮助您缩短设计的周转时间,以及使设计满足临界电路的性能要求。借助Floorplanner,您可以:
• 获得一个以图形方式显示的、在映射和布局布线时产生的报告信息。
• 查询时序通路和查看管脚至管脚的延时。
• 指定布局布线参数以帮助您满足设计的时序要求和减少布线通道的拥塞。
您可以在ispLEVER Project Navigator窗口右侧的操作流程中双击Pre-Map Logical Design Floorplan,Post-Map Physical Design Floorplan或Post-PAR Design Floorplan来启动 Floorplanner工具。
EPIC Device Editor
EPIC是可编程集成电路编辑器(Editor for Programmable ICs)的缩写。它是一个用于显示和配置FPGA的图形应用工具。EPIC的功能很多,主要有以下三种:
• 在运行一个完整设计的自动布局布线工具前先对临界元件进行布局布线。
• 当布线程序不能自动完成布线任务时,可以手动完成布局布线。该工具允许对元件进行自动和手动的布局布线。
• 可以读 、写和撤销一些在优选文件(*.prf)中的优选参数。
您可以在ispLEVER Project Navigator窗口右侧的操作流程中双击EPIC
Device Editor来启动EPIC Device Editor工具。
映射(Map)
在完成Pre-Map的交互式编辑后,就可以对设计进行映射了。启动映射操作的步骤如下:
1.ispLEVER Project Navigator窗口中,选中左侧源文件窗口中的器件LFEC20E-3F672C。
2.右侧的操作流程窗口中会有一栏Map Design,双击该栏启动映射操作。稍侯一会儿,映射操作完成,在Map Design的左侧显示操作成功的指示符号。
Page 22
3.完成映射操作后,如果需要查看映射结果,可以在右侧的操作流程窗口中执行Map Report操作。该操作完成后,会生成*.mrp文件。此文件中显示了设计信息(Design Information)、设计摘要(Design Summary,包括映射后设计占用的器件内部资源数量)、设计规则检查消息、映射过程中的警告(Warning)和错误(Error)信息、IO属性(IO (PIO)
Attributes)、映射过程中增减的逻辑(Removed Logic/Added Logic)、模块转换参考(Symbol Cross Reference)以及信号转换参考(Signal Cross
Reference)等信息。以下是该文件的第一页:
Lattice Mapping Report File for Design 'TOP_SCHEMATIC'
Design Information
------------------
Command line: C:ispTOOLSispfpgabinntmap -a ep5g00 -p LFEC20E -t FPBGA672
-s 3 -o -f compare.m2t
Target Vendor: LATTICE
Target Device: LFEC20EFPBGA672
Target Speed: 3
Mapper: ep5g00, version: ispLever_v40_Production_Build_Classic (35c)
Mapped on: 04/15/04 16:08:16
Design Summary
--------------
Number of warnings: 0
Number of errors: 0
Number of registers: 4
PIO registers: 4
Number of SLICEs: 9 out of 9856 (0%)
SLICEs(logic): 9 out of 7392 (0%)
SLICEs(RAM): 0 out of 2464 (0%)
Number of LUT4s: 3
Number of RAMS: 0
Number of ripple logic: 6
Number of shift registers: 0
Number of external PIOs: 14 out of 400 (3%)
Number of PIO DDR/Shifts: 0
Number of 3-state buffers: 0
Number of PLLs: 0 out of 4 (0%)
Number of Block RAMs: 0 out of 46 (0%)
Number of GSRs: 0 out of 1 (0%)
JTAG used : No
Readback used : No
Oscillator used : No
Startup used : No
Number of DSP MULT Slices: 0 out of 56 (0 %)
Number of clocks: 1
Net CLK_int: 4 loads, 4 rising, 0 falling (Driver: PIO CLK )
Number of Clock Enables: 1
Net SEL_int: 4 loads, 0 LSLICEs
Number of LSRs: 1
Net RST_int: 4 loads, 0 LSLICEs
Number of nets driven by tri-state buffers: 0
Top 10 highest fanout non-clock nets:
Net RST_int: 4 loads
Net SEL_int: 4 loads
Page 23
Net COMPDAT_int(0): 3 loads
Net COMPDAT_int(1): 3 loads
Net COMPDAT_int(2): 3 loads
Net COMPDAT_int(3): 3 loads
Net CR(0): 3 loads
Net CR(1): 3 loads
Net CR(2): 3 loads
Net CR(3): 3 loads
Page 1
当然,为了方便设计者查看,该*.mrp文件会在执行完Map Report操作后,自动地在ispLEVER Project Navigator窗口中的中间一个log窗口中显示出来。
4.如果您想参看映射后的时序信息,可以启动Map Trace Report操作,其步骤与上述的Map Report类似。操作完成后生成*.tw1文件如下:
--------------------------------------------------------------------------------
Lattice TRACE Report, Version ispLever_v40_Production_Build_Classic (35c)
Thu Apr 15 16:43:24 2004
Copyright (c) 1991-1994 by NeoCAD Inc. All rights reserved.
Copyright (c) 1995 AT&T Corp. All rights reserved.
Copyright (c) 1995-2001 Lucent Technologies Inc. All rights reserved.
Copyright (c) 2001 Agere Systems All rights reserved.
Copyright (c) 2002-2004 Lattice Semiconductor Corporation, All rights reserved.
Report Information
------------------
Command line: trce -o compare_ compare_
Design file: compare_
Preference file:
Device,speed: LFEC20E,3
Report level: verbose report, limited to 1 item per preference
--------------------------------------------------------------------------------
WARNING - trce: No timing preferences found, doing default enumeration.
================================================================================
Preference: Default path enumeration
48 items scored, 0 timing errors detected.
--------------------------------------------------------------------------------
Report: 5.400ns delay RST to GT_O
Name Fanout Delay (ns) Site Resource
PADI_DEL --- 0.679 to RST
ROUTE 4 e 0.000 to T(0)_ RST_int
LSR_OUT --- 0.624 T(0)_ to (0)_ DAT(0)_MGIOL
ROUTE 3 e 0.000 (0)_ to SLICE_2.B0 CR(0)
B0TOFCO_DE --- 0.813 SLICE_2.B0 to SLICE_ SLICE_2
ROUTE 1 e 0.000 SLICE_ to SLICE_ GT_1_modgen_gt_0_nx14
FCITOFCO_D --- 0.172 SLICE_ to SLICE_ SLICE_3
ROUTE 1 e 0.000 SLICE_ to SLICE_6.A0 GT_1_modgen_gt_0_nx16
CTOF_DEL --- 0.386 SLICE_6.A0 to SLICE_6.F0 SLICE_6
Page 24
ROUTE 1 e 0.000 SLICE_6.F0 to GT_O_dup0
DOPAD_DEL --- 2.726 to GT_O
--------
5.400 (100.0% logic, 0.0% route), 6 logic levels.
Report: 1216.545MHz is the maximum frequency for this preference.
Report: 5.400ns is the maximum delay for this preference.
================================================================================
Preference: Default net enumeration
24 items scored, 0 timing errors detected.
--------------------------------------------------------------------------------
Report: 0.000ns maximum delay on nx96
Delays Connection(s)
e 0.000ns to DAT(2)_
Report: 0.000ns is the maximum delay for this preference.
Report Summary
--------------
----------------------------------------------------------------------------
Preference | Constraint| Actual|Levels
----------------------------------------------------------------------------
| | |
Default path enumeration | 0.000 ns| 5.400 ns| 0
| | |
Default net enumeration | 0.000 ns| 0.000 ns| 0
| | |
----------------------------------------------------------------------------
All preferences were met.
Timing summary:
---------------
Timing errors: 0 Score: 0
Constraints cover 48 paths, 24 nets, and 49 connections (100.0% coverage)
--------------------------------------------------------------------------------
5.映射操作完成后,生成的设计网表与映射前的设计网表相比有了变化,节点的数量及名称也不尽相同。在这个阶段,您仍然可以根据需要,进行交互式编辑,修改参数以及约束条件。如果您想更改优选条件,可以双击右侧窗口中的Post-Map Preference Editor操作栏,打开Post-Map
Preference Editor窗口进行编辑。您甚至还可以通过双击右侧窗口中的Edit Preferences(ASII)操作栏,直接对文本格式的优选文件(*.prf)进行编辑。如果您想对设计中临界电路的性能进行调整,那么可以双击右侧窗口中的Post-Map Physical Design Floorplan操作栏,启动Floorplanner
工具进行修改。
Page 25
6.映射操作完成后,如果您想进行时序检查,那么可以启动右侧窗口中的Map Timing Checkpoint操作。检查结果显示在ispLEVER Project
Navigator窗口中的log窗口中。
布局和布线(Place & Route)
在完成映射操作之后,就可以对设计进行布局和布线了。启动映射操作的步骤如下:
1. ispLEVER Project Navigator窗口中,选中左侧源文件窗口中的器件LFEC20E-3F672C。
2. 右侧的操作流程窗口中会有一栏Place & Route Design,双击该栏启动布局布线操作。稍侯一会儿,布局布线操作完成,在Place & Route Design3.
的左侧显示操作成功的指示符号。
完成布局布线操作后,如果需要查看布局布线的结果,可以在右侧的操作流程窗口中执行Place & Route Report操作。该操作完成后,会生成*.par文件。为了方便设计者查看,该*.par文件会在执行完Place & Route
Report操作后,自动显示在ispLEVER Project Navigator的log窗口中。
完成布局布线操作后,如果需要查看输入/输出端口的详细信息,可以在右侧的操作流程窗口中执行PAD Specification File操作。该操作完成后,会生成*.pad文件。同样,该*.par文件会在执行完PAD Specification
File操作后,自动显示在ispLEVER Project Navigator的log窗口中。
如果要查看布局布线后的时序信息,可以在右侧的操作流程窗口中执行Place & Route Trace Report操作。该操作完成后,会生成*.twr文件。同样,该*.par文件会在执行完Place & Route Trace Report操作后,自动显示在ispLEVER Project Navigator的log窗口中。
为了方便设计者查看上述一系列报告,用户可以在右侧的操作流程窗口中执行HTML Place & Route Report操作。该过程会生成HTML格式的报告文件,它集成了Map Report,Place and Route Report,Pad Report以及Par Trace Report四个报告文件。
如果您的设计经过布局布线后不能满足时序约束条件,您可以调整参数,然后重新作布局布线操作。由于布局布线是很费时的操作流程,为了提高效率,ispLEVER提供了Reentrant Route Design功能。Reentrant
Route Design以当前已经过布线的设计文件(*.ncd)为重新布线的起点,因而在反复布局布线的过程中,可以节省大量的时间。其操作方法如下:
在 ispLEVER Project Navigator窗口中,选中右侧操作流程窗口中的Reentrant Route Design栏,按鼠标右键,选择Properties,弹出图4.4的Properties窗口。
4.
5.
6.
7.
Page 26
图4.4 Reentrant Route Design的Properties窗口
在该窗口中您可以指定作为重做布局布线起点的NCD文件名以及其它几项参数。选择完成后,按Close钮关闭窗口,然后在ispLEVER Project
Navigator窗口中执行Reentrant Route Design操作。
8. 布局布线操作完成后,如果您想进行时序检查,那么可以启动右侧窗口中的Place & Route Timing Checkpoint操作。检查结果显示在ispLEVER
Project Navigator窗口中的log窗口中。
9. 如果您想进行临界电路性能检查,那么可以启动右侧窗口中的Post-PAR
Design Floorplan工具。
10. 如果您想对设计进行手动布局布线,您还可以启动右侧窗口中的EPIC
Device Editor工具。
如果您想对设计作进一步的时序仿真,您可以启动右侧窗口中的Generate Timing Simulation Files操作。该操作会生成带有时序信息的VHDL或Verilog语言描述的网表文件,可移植到其它平台上进行仿真。其操作方法如下:
在ispLEVER Project Navigator窗口中,选中右侧操作流程窗口中的Generate Timing Simulation Files栏,按鼠标右键,选择Properties,弹出图4.5的Properties窗口。
Page 27
图4.5 Generate Timing Simulation Files的Properties窗口
在该窗口中您可以选择输出网表文件的格式(VHDL或Verilog),以及其它一些参数。
TCL工具
TCL是工具控制语言(Tool Control Language)的缩写,它是一种广泛使用的解释命令语言。TCL工具让您能够创立、编辑和运行TCL命令。借助TCL工具,您能够自动地执行重复的处理过程以及设置复杂的环境参数。TCL工具由以下三个应用程序组成:
• TCL 记录器(TCL Recorder)- 用于生成一个记录ispLEVER处理流程的TCL文件。
• TCL编辑器(TCL Editor)- 用于编辑您纪录下来的TCL文件或产生一个新的TCL文件。
• TCL控制台(TCL Console)- 用于装载TCL文件并运行它,或者进入并测试TCL命令。
在本文的设计实例中,如果要自动地依次实现Pre-Map Preference Editor,Post-Map Preference Editor,Post-PAR Design Floorplan,EPIC Device Editor和HTML Place & Route Report处理过程,可以使用TCL工具。其操作步骤如下:
1. ispLEVER Project Navigator窗口中,选择Tools => Tcl Recorder菜单,启动TCL记录器,弹出图4.6所示窗口。
Page 28
图4.6 TCL Recorder窗口
2. 在图4.6窗口的Enter Tcl Script Filename栏中,输入将要生成的TCL文件名,然后按Start Recorder钮,进入TCL 纪录状态,此时Start
Recorder钮变成 Stop Recorder钮。
3. ispLEVER Project Navigator窗口中,依次双击Pre-Map Preference
Editor,Post-Map Preference Editor,Post-PAR Design Floorplan,EPIC
Device Editor和HTML Place & Route Report处理过程,让TCL Recorder将这些操作过程纪录下来。
4. 回到图4.6的TCL Recorder窗口中,按Stop Recorder钮停止TCL纪录,这时纪录上一步骤中操作纪录的TCL文件已生成完毕。按Close钮关闭TCL Recorder窗口。
5. ispLEVER Project Navigator窗口中,选择Tools => Tcl Editor菜单,启动TCL编辑器,弹出图4.7所示窗口。
Page 29
图4.7 TCL Editor窗口
6. 在TCL Editor窗口中,可以查看由TCL Recorder生成的TCL源文件,并可根据需要直接进行修改。完成后关闭该窗口。
7. ispLEVER Project Navigator窗口中,选择Tools => Tcl Console菜单,启动TCL控制台,弹出图4.8所示窗口。
图4.8 TCL Console窗口
8. 选择TCL Console窗口中的File => Load File,选择上面生成的TCL文件进行装载。执行该操作后,ispLEVER软件会依次自动执行Pre-Map Preference Editor,Post-Map Preference Editor,Post-PAR Design
Floorplan,EPIC Device Editor和HTML Place & Route Report处理过程。
Page 30
2024年1月24日发(作者:劳丹云)
ispLEVER培 训 教 程 (FPGA)
- 基于新的莱迪思FPGA(ECP/EC)的设计流程 -
上 海 莱 迪 思 半 导 体 公 司 市 场 部
2004 年 5 月
英文网址:
中文网址:或
Page 1
目录
第一节ispLEVER 简介
第二节 LEVER 开发工具的FPGA设计输入方法
第三节ModelSim 的使用方法
第四节 设计的实现
Page 2
第 一 节 ispLEVER 简 介
ispLEVER 是Lattice 公司最新推出的一套EDA软件。提供设计输入、HDL综合、验证、器件适配、布局布线、编程和在系统设计调试。设计输入可采用原理图、硬件描述语言、混合输入三种方式。能对所设计的数字电子系统进行功能仿真和时序仿真。软件中含有不同的工具,适用于各个设计阶段。软件包含Synplicity公司的“Synplify”、Exemplar Logic公司的“Leonado”综合工具和Lattice的ispVM器件编程工具。ispLEVER软件提供给开发者一个有力的工具,用于设计所有莱迪思可编程逻辑产品。软件不仅支持所有Lattice公司的ispLSI 、MACH、ispGDX、ispGAL、GAL器件,还支持莱迪思新的FPGA、FPSC、ispXPGATM和ispXPLDTM产品系列。这使得ispLEVER的用户能够设计所有Lattice公司的业界领先的FPGA、FPSC、CPLD产品而不必学习新的设计工具。
软件主要特征:
1. 输入方式
* 原理图输入
* ABEL-HDL输入
* VHDL输入
* Verilog-HDL输入
* EDIF输入
* 原理图和硬件描述语言混合输入
2. 逻辑模拟
* 功能模拟
* 时序模拟
3. 编译器
* 结构综合、映射、自动布局和布线
4. 支持的器件
* 含有支持ispLSI器件的宏库及MACH器件的宏库、TTL库
* 支持所有ispLSI、MACH、ispGDX、ispGAL、GAL、EC、ECP、EC-XP、SC、ORCA FPGA/FPSC、ispXPGA和ispXPLD器件
5. 工具
* Preference Editor、Module Manager、TCL、Floorplanner、EPIC
Device Editor和Constraints Editor
6. ispVM工具
* 对CPLD器件进行编程
Page 3
第二节 ispLEVER开发工具的FPGA设计输入方法
I.
II.
启动ispLEVER(按Start=>Programs=>Lattice Semiconductor=>ispLEVER菜单)
创建一个新的设计项目
1. 选择菜单File。
2. 选择。
3. 在Create New Project对话框的Project Name栏中,键入项目名d:。在Project type栏中选择Schematic/VHDL(ispLEVER软件支持Schematic/ABEL、Schematic/VHDL、Schematic/Verilog、EDIF输入)。即可看到如下窗口。
图2.1 ispLEVER System Project Navigator主窗口
此时,在 ispLEVER System Project Navigator主窗口中,显示一个对话框,这是要你选择综合器。
图2.2选择综合器
Page 4
在该对话框选择Synplify,然后按OK。你可以看到默认的项目名和器件型号:
Untitled and ispLSI5256VE-165LF256。
图2.3默认的器件型号
4. 双击ispLSI5256VE-165LF256, 你会看到Device Selector对话框(如图2.4所示)。
5. 在Select Device窗口中选择FPGA器件。
6. 按动器件目录中的滚动条,直到找到并选中器件LFEC20E。
Page 5
图2.4 选择FPGA器件
7. 揿OK按钮,选择这个器件。
8. 在软件弹出的如图2.5所示的Confirm Change窗口中,按Yes按钮。
图2.5 Confirm Change窗口
III. VHDL设计输入的操作步骤
本例中,选择VHDL类型。若是Verilog设计输入,则选择Verilog HDL类型。
将该工程文件存盘为。
在ispLEVER System Project Navigator主窗口中,选择Source=>New菜单。在弹出的New Source对话框中,选择VHDL Module类型。
Page 6
图2.6 选择 VHDL Module
此时,软件会产生一个如图2.7所示的New VHDL Source对话框:
图2.7 New VHDL Source对话框
在对话框的各栏中,分别填入如图2.7所示的信息。按OK钮后,进入文本编辑器-Text Editor编辑VHDL文件。
在Text Editor中输入如下的VHDL设计,并存盘。
该设计为实现比较器。采用模块化的分层结构,有一个顶层文件,三个底层文件。
顶层文件
library ieee;
use _logic_;
entity TOP_SCHEMATIC is
port (CLK : in std_logic;
RST : in std_logic;
SEL : in std_logic;
DAT : in std_logic_vector (3 downto 0);
COMPDAT : in std_logic_vector (3 downto 0);
GT_O : out std_logic;
LT_O : out std_logic;
EQ_O : out std_logic);
end TOP_SCHEMATIC;
architecture IMP_TOP_SCHEMATIC of TOP_SCHEMATIC is
Page 7
component COMP_LT
port (O1 : out std_logic;
IN0 : in std_logic_vector (3 downto 0);
IN1 : in std_logic_vector (3 downto 0));
end component;
component COMP_GT
port (O1 : out std_logic;
IN0 : in std_logic_vector (3 downto 0);
IN1 : in std_logic_vector (3 downto 0));
end component;
component COMP_EQ
port (O1 : out std_logic;
IN0 : in std_logic_vector (3 downto 0);
IN1 : in std_logic_vector (3 downto 0));
end component;
signal CR : std_logic_vector (3 downto 0);
signal W_CR : std_logic_vector (3 downto 0);
begin -- IMP_TOP_SCHEMATIC
-------------------------------------------
-- Instantiate lower level modules
-------------------------------------------
GT_1: COMP_GT port map(
O1 => GT_O,
IN0 => W_CR,
IN1 => COMPDAT);
LT_1: COMP_LT port map (
O1 => LT_O,
IN0 => W_CR,
IN1 => COMPDAT);
EQ_1: COMP_EQ port map (
O1 => EQ_O,
IN0 => W_CR,
IN1 => COMPDAT);
W_CR <= CR;
--------------------------------------------
-- Define logic for loading compare register
--
-- The compare register (cr) is only loaded
-- when sel input is asserted on rising edge
-- of clk.
--------------------------------------------
LOAD_COMP_REG : process (CLK, RST)
Page 8
begin -- process LOAD_COMP_REG
-- activities triggered by asynchronous reset (active low)
if RST = '0' then
CR <= "0000";
-- activities triggered by rising edge of clock
elsif CLK'event and CLK = '1' then
if SEL = '0' then
CR <= DAT;
else
CR <= CR;
end if;
end if;
end process LOAD_COMP_REG;
end IMP_TOP_SCHEMATIC;
底层文件1
library ieee;
use _logic_;
entity COMP_EQ is
port (O1 : out std_logic;
IN0 : in std_logic_vector (3 downto 0);
IN1 : in std_logic_vector (3 downto 0));
end COMP_EQ;
architecture IMP_COMP_EQ of COMP_EQ is
begin -- IMP_COMP_EQ
FUNCTION_EQ : process (IN0, IN1)
begin -- process FUNCTION_GT
if IN0 = IN1 then
O1 <= '1';
else
O1 <= '0';
end if;
end process FUNCTION_EQ;
end IMP_COMP_EQ;
底层文件2
library ieee;
use _logic_;
entity COMP_GT is
port (O1 : out std_logic;
IN0 : in std_logic_vector (3 downto 0);
IN1 : in std_logic_vector (3 downto 0));
Page 9
end COMP_GT;
architecture IMP_COMP_GT of COMP_GT is
begin -- IMP_COMP_GT
FUNCTION_GT : process (IN0,IN1)
begin -- process FUNCTION_GT
if IN0 > IN1 then
O1 <= '1';
else
O1 <= '0';
end if;
end process FUNCTION_GT;
end IMP_COMP_GT;
底层文件3
library ieee;
use _logic_;
entity COMP_LT is
port (O1 : out std_logic;
IN0 : in std_logic_vector (3 downto 0);
IN1 : in std_logic_vector (3 downto 0));
end COMP_LT;
architecture IMP_COMP_LT of COMP_LT is
begin -- IMP_COMP_LT
FUNCTION_LT : process (IN0,IN1)
begin -- process FUNCTION_LT
if IN0 < IN1 then
O1 <= '1';
else
O1 <= '0';
end if;
end process FUNCTION_LT;
end IMP_COMP_LT;
接下来采用Synplify工具对VHDL设计进行综合。 此时的ispLEVER System
Project Navigator主窗口如图2.8所示:
Page 10
图2.8 ispLEVER System Project Navigator主窗口
双击Processes窗口的Synplify Synthesize VHDL File进行编译、综合。或者选择菜单Tools=> Synplify Synthesis产生如下窗口。选Add调入,然后对文件进行编译、综合。
Page 11
图2.9 Synplify窗口
若整个编译、综合过程无错误,该窗口在综合过程结束时会自动关闭。若在此过程中出错,双击上述Synplify窗口中Source Files栏中的文件进行修改并存盘,然后按RUN钮重新编译。
在通过VHDL综合过程后,可对设计进行功能和时序仿真。
IV. Module/IP管理器使用方法
Module/IP 管理器用于帮助设计者用Lattice 的参数化模块和IP核做大的设计。
在ispLEVER System Project Navigator主窗口中,按Tools=>Module/IP Manager
即会出现如图2.10所示的窗口。
Page 12
图2.10 Module/IP Manager窗口。
在Module文件夹中选择所要的模块,例如FIFO。在Module Name栏中填入模块名。
图2.11 选择 FIFO
然后按Customise钮。界面如图2.12所示。
Page 13
图2.12 设置参数- General Options
然后在对话框中选Confoguration,再设置各种参数,最后按Generate钮,即产生相应的模块。
图2.13 设置参数-Configuration
Page 14
第三节ModelSim 的使用方法
ModelSim 是 一个仿真工具,可以用来模拟设计的结果,进行功能仿真和时序仿真。以下用前一节的例子来说明ModelSim的使用方法。
1. 建立测试向量文件
2. 在主窗口中选择Souce=>New即弹出如下窗口。点击VHDL Test Bench,输入测试向量
2
图3.1 New Source窗口
library ieee;
use _logic_;
Page 15
entity TB_TOP is
end TB_TOP;
-- purpose: STIMULUS for testing comparitor
architecture TB of TB_TOP is
component TOP_SCHEMATIC
port (CLK : in std_logic;
RST : in std_logic;
SEL : in std_logic;
DAT : in std_logic_vector (3 downto 0);
COMPDAT : in std_logic_vector (3 downto 0);
GT_O : out std_logic;
LT_O : out std_logic;
EQ_O : out std_logic);
end component;
signal CLK : std_logic := '0'; -- Primary Clock
signal RST : std_logic := '0'; -- RESET
signal SEL : std_logic := '1'; -- Select to load compare register
signal DAT : std_logic_vector (3 downto 0) := "0000";
signal COMPDAT : std_logic_vector (3 downto 0 ) := "0000";
signal GT_O : std_logic; -- Asserted when COMPDAT >
signal LT_O : std_logic; -- Asserted when COMPDAT <
signal EQ_O : std_logic; -- Asserted when COMPDAT =
constant CLK_PERIOD : time := 20 ns;
begin -- TB
--------------------
-- Clock generator
--------------------
CLK <= not CLK after (CLK_PERIOD/2);
-------------------------------------------
-- Instantiate Unit Under Test
-------------------------------------------
UUT : TOP_SCHEMATIC port map (
CLK => CLK,
RST => RST,
SEL => SEL,
DAT => DAT,
COMPDAT => COMPDAT,
GT_O => GT_O,
LT_O => LT_O,
EQ_O => EQ_O);
Page 16
STIMULUS : process
begin -- process STIMULUS
wait for (5 * CLK_PERIOD);
------------------------------
-- Remove Reset condition
------------------------------
RST <= '1';
wait for (5 * CLK_PERIOD);
-------------------------------------
-------------------------------------
---------------------------------------
---------------------------------------
-------------------------------------
-------------------------------------
-------------------------------------
-------------------------------------
-------------------------------------
-------------------------------------
end process STIMULUS;
-- Expect tGT = 0; tLT = 0; tEQ = 1;
wait for (CLK_PERIOD);
-- Load compare register with new data
wait for (CLK_PERIOD);
SEL <= '0';
DAT <= "1010";
wait for (CLK_PERIOD);
-- Expect tGT = 1; tLT = 0; tEQ = 0;
SEL <= '1';
COMPDAT <= "1010";
wait for (CLK_PERIOD);
-- Expect tGT = 0; tLT = 0; tEQ = 1;
COMPDAT <= "1011";
wait for (CLK_PERIOD);
-- Expect tGT = 0; tLT = 1; tEQ = 1;
wait for (5 * CLK_PERIOD);
Page 17
图3.2 准备进行功能仿真
在源文件窗口中选中tb_,在操作流程窗口中双击 VHDL Function
Simulation, 会弹出如图3.3所示的窗口。图中左侧列出了设计中所有输入、输出信号。右侧显示了仿真波形。
图3.3 仿真波形
Page 18
信号名前若有[+]表示含有下层的信号,可以点击该符号,将显示出下层的信号。图中显示了信号展开后的波形。
图3.4 输入信号展开后的波形
时序仿真的操作步骤与功能仿真类似。
第四节 设计实现
针对FPGA的设计输入完成编译和功能仿真后,下一步就是进行设计实现(Design Implementation)。整个设计实现过程包括两个重要的执行环节——映射(Map)和布局布线(Place & Route)。映射是将设计由一个与器件无关的元件(例如:门电路和触发器)网络的表述转换为一个与器件相关的元件(例如:可配置的逻辑块)网络的表述。布局布线是根据映射后生成的结构设计(Physical Design)文件(*.ncd)在器件中对设计进行适配。在映射和布局布线的过程中,ispLEVER还提供给设计者交互式编辑功能(Interactive Editing)。
交互式编辑(Interactive Editing)
ispLEVER中的交互式编辑功能包含三个工具:Preference Editor,FPGA
Floorplanner以及EPIC Device Editor。
Preference Editor
Preference Editor让您指定或修改由用户或映射器生成的、对布局布线或时序约束的优选条件。Preference Editor读入优选文件(*.prf)并显示这些优选设置。对这个优选文件的更改是通过功能对话框进行的。
Page 19
在上一节中,对Compare这个设计完成了功能仿真,接下来就可以用Preference Editor进行优选设置了。在映射操作前,首先进行Pre-Map Preference
Editor操作:
1. 在ispLEVER Project Navigator窗口中,选中左侧源文件窗口中的器件LFEC20E-3F672C。
2. 右侧的操作流程窗口中会有一栏Pre-Map Preference Editor,双击该栏会弹出Pre-Map Preference Editor窗口,如图4.1所示。
图4.1 Pre-Map Preference Editor窗口
3. 点击图4.1窗口左侧Input Ports和Output Ports左边的,展现所有的输入信号:CLK,COMPDAT(3:0),DAT(3:0),RST,SEL和输出信号EQ_O,GT_O,LT_O。选中这些信号名,在窗口右侧会显示对应于每个信号的参数行。在该参数行中可以设置或修改对应信号的一系列参数:Grouped By(信号所属的组名,该特性不能直接在参数行中修改,需要在Preference =>Group Assignment菜单中设置),
Pin Location(信号所对应器件的引脚位置), IO Type(输入/输出的电平类型), Drive(输出的驱动电流值),Slewrate(摆率),
Pullmode(上/下拉模式), Output Load(输出负载)等。在这些参数中,最为关键的是Pin Location,其用来设置信号所对应器件的引脚位置,即锁定引脚。每个实际的设计中,必须配合印刷电路板上器件的位置来设置该项参数。双击该参数栏,逐个输入每个信号对应的器件引脚号后,Pre-Map Preference Editor窗口如图4.2所示。
Page 20
图4.2 设置完Pin Location后的Pre-Map Preference Editor窗口
设置Pin Location的另外一种直观的方法是在Preference Editor窗口中选择Device => Package View菜单,会产生一个如图4.3所示的一个新的窗口。
Page 21
图4.3 Package View窗口
在该窗口的左侧显示所有的输入/输出信号,而右侧则展示了器件的引脚图。选中左侧的一个信号,把它拉至右侧的某个引脚上,那么该信号就被锁定到此引脚上了。
除了设置引脚属性(Pin Attributes)外,在图4.2中窗口的右下方还有Cell
Attributes,Global Constraints,Block,Period/Frequency,In/Out Clock以及Multicycle菜单,可以分别用来查看或设置单元属性,全局约束条件,块属性,周期/频率参数,输入-建立/时钟-输出参数,多周期参数。
当编辑完所有需要变更的参数后,按File => Save 菜单存盘,所有参数就被存入*.PRF文件中。接下来的操作流程中就会读入这些更新过的参数。
FPGA Floorplanner
FPGA Floorplanner提供了一个用于管理FPGA器件的图形接口工具。它可以帮助您缩短设计的周转时间,以及使设计满足临界电路的性能要求。借助Floorplanner,您可以:
• 获得一个以图形方式显示的、在映射和布局布线时产生的报告信息。
• 查询时序通路和查看管脚至管脚的延时。
• 指定布局布线参数以帮助您满足设计的时序要求和减少布线通道的拥塞。
您可以在ispLEVER Project Navigator窗口右侧的操作流程中双击Pre-Map Logical Design Floorplan,Post-Map Physical Design Floorplan或Post-PAR Design Floorplan来启动 Floorplanner工具。
EPIC Device Editor
EPIC是可编程集成电路编辑器(Editor for Programmable ICs)的缩写。它是一个用于显示和配置FPGA的图形应用工具。EPIC的功能很多,主要有以下三种:
• 在运行一个完整设计的自动布局布线工具前先对临界元件进行布局布线。
• 当布线程序不能自动完成布线任务时,可以手动完成布局布线。该工具允许对元件进行自动和手动的布局布线。
• 可以读 、写和撤销一些在优选文件(*.prf)中的优选参数。
您可以在ispLEVER Project Navigator窗口右侧的操作流程中双击EPIC
Device Editor来启动EPIC Device Editor工具。
映射(Map)
在完成Pre-Map的交互式编辑后,就可以对设计进行映射了。启动映射操作的步骤如下:
1.ispLEVER Project Navigator窗口中,选中左侧源文件窗口中的器件LFEC20E-3F672C。
2.右侧的操作流程窗口中会有一栏Map Design,双击该栏启动映射操作。稍侯一会儿,映射操作完成,在Map Design的左侧显示操作成功的指示符号。
Page 22
3.完成映射操作后,如果需要查看映射结果,可以在右侧的操作流程窗口中执行Map Report操作。该操作完成后,会生成*.mrp文件。此文件中显示了设计信息(Design Information)、设计摘要(Design Summary,包括映射后设计占用的器件内部资源数量)、设计规则检查消息、映射过程中的警告(Warning)和错误(Error)信息、IO属性(IO (PIO)
Attributes)、映射过程中增减的逻辑(Removed Logic/Added Logic)、模块转换参考(Symbol Cross Reference)以及信号转换参考(Signal Cross
Reference)等信息。以下是该文件的第一页:
Lattice Mapping Report File for Design 'TOP_SCHEMATIC'
Design Information
------------------
Command line: C:ispTOOLSispfpgabinntmap -a ep5g00 -p LFEC20E -t FPBGA672
-s 3 -o -f compare.m2t
Target Vendor: LATTICE
Target Device: LFEC20EFPBGA672
Target Speed: 3
Mapper: ep5g00, version: ispLever_v40_Production_Build_Classic (35c)
Mapped on: 04/15/04 16:08:16
Design Summary
--------------
Number of warnings: 0
Number of errors: 0
Number of registers: 4
PIO registers: 4
Number of SLICEs: 9 out of 9856 (0%)
SLICEs(logic): 9 out of 7392 (0%)
SLICEs(RAM): 0 out of 2464 (0%)
Number of LUT4s: 3
Number of RAMS: 0
Number of ripple logic: 6
Number of shift registers: 0
Number of external PIOs: 14 out of 400 (3%)
Number of PIO DDR/Shifts: 0
Number of 3-state buffers: 0
Number of PLLs: 0 out of 4 (0%)
Number of Block RAMs: 0 out of 46 (0%)
Number of GSRs: 0 out of 1 (0%)
JTAG used : No
Readback used : No
Oscillator used : No
Startup used : No
Number of DSP MULT Slices: 0 out of 56 (0 %)
Number of clocks: 1
Net CLK_int: 4 loads, 4 rising, 0 falling (Driver: PIO CLK )
Number of Clock Enables: 1
Net SEL_int: 4 loads, 0 LSLICEs
Number of LSRs: 1
Net RST_int: 4 loads, 0 LSLICEs
Number of nets driven by tri-state buffers: 0
Top 10 highest fanout non-clock nets:
Net RST_int: 4 loads
Net SEL_int: 4 loads
Page 23
Net COMPDAT_int(0): 3 loads
Net COMPDAT_int(1): 3 loads
Net COMPDAT_int(2): 3 loads
Net COMPDAT_int(3): 3 loads
Net CR(0): 3 loads
Net CR(1): 3 loads
Net CR(2): 3 loads
Net CR(3): 3 loads
Page 1
当然,为了方便设计者查看,该*.mrp文件会在执行完Map Report操作后,自动地在ispLEVER Project Navigator窗口中的中间一个log窗口中显示出来。
4.如果您想参看映射后的时序信息,可以启动Map Trace Report操作,其步骤与上述的Map Report类似。操作完成后生成*.tw1文件如下:
--------------------------------------------------------------------------------
Lattice TRACE Report, Version ispLever_v40_Production_Build_Classic (35c)
Thu Apr 15 16:43:24 2004
Copyright (c) 1991-1994 by NeoCAD Inc. All rights reserved.
Copyright (c) 1995 AT&T Corp. All rights reserved.
Copyright (c) 1995-2001 Lucent Technologies Inc. All rights reserved.
Copyright (c) 2001 Agere Systems All rights reserved.
Copyright (c) 2002-2004 Lattice Semiconductor Corporation, All rights reserved.
Report Information
------------------
Command line: trce -o compare_ compare_
Design file: compare_
Preference file:
Device,speed: LFEC20E,3
Report level: verbose report, limited to 1 item per preference
--------------------------------------------------------------------------------
WARNING - trce: No timing preferences found, doing default enumeration.
================================================================================
Preference: Default path enumeration
48 items scored, 0 timing errors detected.
--------------------------------------------------------------------------------
Report: 5.400ns delay RST to GT_O
Name Fanout Delay (ns) Site Resource
PADI_DEL --- 0.679 to RST
ROUTE 4 e 0.000 to T(0)_ RST_int
LSR_OUT --- 0.624 T(0)_ to (0)_ DAT(0)_MGIOL
ROUTE 3 e 0.000 (0)_ to SLICE_2.B0 CR(0)
B0TOFCO_DE --- 0.813 SLICE_2.B0 to SLICE_ SLICE_2
ROUTE 1 e 0.000 SLICE_ to SLICE_ GT_1_modgen_gt_0_nx14
FCITOFCO_D --- 0.172 SLICE_ to SLICE_ SLICE_3
ROUTE 1 e 0.000 SLICE_ to SLICE_6.A0 GT_1_modgen_gt_0_nx16
CTOF_DEL --- 0.386 SLICE_6.A0 to SLICE_6.F0 SLICE_6
Page 24
ROUTE 1 e 0.000 SLICE_6.F0 to GT_O_dup0
DOPAD_DEL --- 2.726 to GT_O
--------
5.400 (100.0% logic, 0.0% route), 6 logic levels.
Report: 1216.545MHz is the maximum frequency for this preference.
Report: 5.400ns is the maximum delay for this preference.
================================================================================
Preference: Default net enumeration
24 items scored, 0 timing errors detected.
--------------------------------------------------------------------------------
Report: 0.000ns maximum delay on nx96
Delays Connection(s)
e 0.000ns to DAT(2)_
Report: 0.000ns is the maximum delay for this preference.
Report Summary
--------------
----------------------------------------------------------------------------
Preference | Constraint| Actual|Levels
----------------------------------------------------------------------------
| | |
Default path enumeration | 0.000 ns| 5.400 ns| 0
| | |
Default net enumeration | 0.000 ns| 0.000 ns| 0
| | |
----------------------------------------------------------------------------
All preferences were met.
Timing summary:
---------------
Timing errors: 0 Score: 0
Constraints cover 48 paths, 24 nets, and 49 connections (100.0% coverage)
--------------------------------------------------------------------------------
5.映射操作完成后,生成的设计网表与映射前的设计网表相比有了变化,节点的数量及名称也不尽相同。在这个阶段,您仍然可以根据需要,进行交互式编辑,修改参数以及约束条件。如果您想更改优选条件,可以双击右侧窗口中的Post-Map Preference Editor操作栏,打开Post-Map
Preference Editor窗口进行编辑。您甚至还可以通过双击右侧窗口中的Edit Preferences(ASII)操作栏,直接对文本格式的优选文件(*.prf)进行编辑。如果您想对设计中临界电路的性能进行调整,那么可以双击右侧窗口中的Post-Map Physical Design Floorplan操作栏,启动Floorplanner
工具进行修改。
Page 25
6.映射操作完成后,如果您想进行时序检查,那么可以启动右侧窗口中的Map Timing Checkpoint操作。检查结果显示在ispLEVER Project
Navigator窗口中的log窗口中。
布局和布线(Place & Route)
在完成映射操作之后,就可以对设计进行布局和布线了。启动映射操作的步骤如下:
1. ispLEVER Project Navigator窗口中,选中左侧源文件窗口中的器件LFEC20E-3F672C。
2. 右侧的操作流程窗口中会有一栏Place & Route Design,双击该栏启动布局布线操作。稍侯一会儿,布局布线操作完成,在Place & Route Design3.
的左侧显示操作成功的指示符号。
完成布局布线操作后,如果需要查看布局布线的结果,可以在右侧的操作流程窗口中执行Place & Route Report操作。该操作完成后,会生成*.par文件。为了方便设计者查看,该*.par文件会在执行完Place & Route
Report操作后,自动显示在ispLEVER Project Navigator的log窗口中。
完成布局布线操作后,如果需要查看输入/输出端口的详细信息,可以在右侧的操作流程窗口中执行PAD Specification File操作。该操作完成后,会生成*.pad文件。同样,该*.par文件会在执行完PAD Specification
File操作后,自动显示在ispLEVER Project Navigator的log窗口中。
如果要查看布局布线后的时序信息,可以在右侧的操作流程窗口中执行Place & Route Trace Report操作。该操作完成后,会生成*.twr文件。同样,该*.par文件会在执行完Place & Route Trace Report操作后,自动显示在ispLEVER Project Navigator的log窗口中。
为了方便设计者查看上述一系列报告,用户可以在右侧的操作流程窗口中执行HTML Place & Route Report操作。该过程会生成HTML格式的报告文件,它集成了Map Report,Place and Route Report,Pad Report以及Par Trace Report四个报告文件。
如果您的设计经过布局布线后不能满足时序约束条件,您可以调整参数,然后重新作布局布线操作。由于布局布线是很费时的操作流程,为了提高效率,ispLEVER提供了Reentrant Route Design功能。Reentrant
Route Design以当前已经过布线的设计文件(*.ncd)为重新布线的起点,因而在反复布局布线的过程中,可以节省大量的时间。其操作方法如下:
在 ispLEVER Project Navigator窗口中,选中右侧操作流程窗口中的Reentrant Route Design栏,按鼠标右键,选择Properties,弹出图4.4的Properties窗口。
4.
5.
6.
7.
Page 26
图4.4 Reentrant Route Design的Properties窗口
在该窗口中您可以指定作为重做布局布线起点的NCD文件名以及其它几项参数。选择完成后,按Close钮关闭窗口,然后在ispLEVER Project
Navigator窗口中执行Reentrant Route Design操作。
8. 布局布线操作完成后,如果您想进行时序检查,那么可以启动右侧窗口中的Place & Route Timing Checkpoint操作。检查结果显示在ispLEVER
Project Navigator窗口中的log窗口中。
9. 如果您想进行临界电路性能检查,那么可以启动右侧窗口中的Post-PAR
Design Floorplan工具。
10. 如果您想对设计进行手动布局布线,您还可以启动右侧窗口中的EPIC
Device Editor工具。
如果您想对设计作进一步的时序仿真,您可以启动右侧窗口中的Generate Timing Simulation Files操作。该操作会生成带有时序信息的VHDL或Verilog语言描述的网表文件,可移植到其它平台上进行仿真。其操作方法如下:
在ispLEVER Project Navigator窗口中,选中右侧操作流程窗口中的Generate Timing Simulation Files栏,按鼠标右键,选择Properties,弹出图4.5的Properties窗口。
Page 27
图4.5 Generate Timing Simulation Files的Properties窗口
在该窗口中您可以选择输出网表文件的格式(VHDL或Verilog),以及其它一些参数。
TCL工具
TCL是工具控制语言(Tool Control Language)的缩写,它是一种广泛使用的解释命令语言。TCL工具让您能够创立、编辑和运行TCL命令。借助TCL工具,您能够自动地执行重复的处理过程以及设置复杂的环境参数。TCL工具由以下三个应用程序组成:
• TCL 记录器(TCL Recorder)- 用于生成一个记录ispLEVER处理流程的TCL文件。
• TCL编辑器(TCL Editor)- 用于编辑您纪录下来的TCL文件或产生一个新的TCL文件。
• TCL控制台(TCL Console)- 用于装载TCL文件并运行它,或者进入并测试TCL命令。
在本文的设计实例中,如果要自动地依次实现Pre-Map Preference Editor,Post-Map Preference Editor,Post-PAR Design Floorplan,EPIC Device Editor和HTML Place & Route Report处理过程,可以使用TCL工具。其操作步骤如下:
1. ispLEVER Project Navigator窗口中,选择Tools => Tcl Recorder菜单,启动TCL记录器,弹出图4.6所示窗口。
Page 28
图4.6 TCL Recorder窗口
2. 在图4.6窗口的Enter Tcl Script Filename栏中,输入将要生成的TCL文件名,然后按Start Recorder钮,进入TCL 纪录状态,此时Start
Recorder钮变成 Stop Recorder钮。
3. ispLEVER Project Navigator窗口中,依次双击Pre-Map Preference
Editor,Post-Map Preference Editor,Post-PAR Design Floorplan,EPIC
Device Editor和HTML Place & Route Report处理过程,让TCL Recorder将这些操作过程纪录下来。
4. 回到图4.6的TCL Recorder窗口中,按Stop Recorder钮停止TCL纪录,这时纪录上一步骤中操作纪录的TCL文件已生成完毕。按Close钮关闭TCL Recorder窗口。
5. ispLEVER Project Navigator窗口中,选择Tools => Tcl Editor菜单,启动TCL编辑器,弹出图4.7所示窗口。
Page 29
图4.7 TCL Editor窗口
6. 在TCL Editor窗口中,可以查看由TCL Recorder生成的TCL源文件,并可根据需要直接进行修改。完成后关闭该窗口。
7. ispLEVER Project Navigator窗口中,选择Tools => Tcl Console菜单,启动TCL控制台,弹出图4.8所示窗口。
图4.8 TCL Console窗口
8. 选择TCL Console窗口中的File => Load File,选择上面生成的TCL文件进行装载。执行该操作后,ispLEVER软件会依次自动执行Pre-Map Preference Editor,Post-Map Preference Editor,Post-PAR Design
Floorplan,EPIC Device Editor和HTML Place & Route Report处理过程。
Page 30