Lattice Diamond 层次化设计测试平台教程

逻辑主页

特性

以下主题通过 Lattice Diamond 2.0.1 版设计软件展开。

• Lattice Diamond 设计流程工具基础概述
• 在顶层层次结构中实例化 VHDL 模块
• 使用 Diamond 设计视图生成层次结构
• 使用 Diamond 设计视图生成测试平台模板
• 使用自定义测试平台创建 Active-HDL 项目
• 在 Active-HDL 中查看信号并运行自定义测试平台

简介

本教程将介绍基于 Lattice Diamond 2.0.1 版本和 Active-HDL 软件,针对 Lattice LFE2-70E FPGA 进行基础测试平台创建与仿真的方法。该测试平台将为组合逻辑超前进位加法器提供激励信号,该加法器的详细实现可参阅另一篇 eeWiki 技术文章。VHDL 模块已提供,用户只需创建原理图符号、顶层原理图文件以及用于 Active HDL 的测试平台模板。

背景知识

Lattice ECP2 是中密度器件(6至95K LUT,90至583 IO),具备 sysDSP 和灵活内存资源。可支持3至42个高性能DSP模块,以及55Kbits至5308Kbits的sysMEM嵌入式块RAM。本教程基于仿真,仅需软件操作。

所需软件:
Lattice Diamond 2.0.1设计软件(含第三方软件Synplify Pro for Lattice)• Active-HDL Lattice Edition

应用场景

电路构建

  1. 开发第一步是启动Lattice Diamond设计软件,通过新建项目向导创建项目。文件(File) → 新建(New) → 项目(Project)。输入项目名称(如Testbench_Tutorial)和存储路径。

  2. 点击"下一步(Next)>"进入添加源文件窗口。点击"添加源文件(Add Source)“导入eeWiki网页为本项目提供的VHDL模块。添加Top_Testbench_Tutorial.vhd、dflipflop_nbit.vhd和nbitsatadder.vhd文件,并勾选"复制源文件到实施目录”(Copy source to implementation directory)。

  3. 点击"下一步(Next)>“进入器件选择窗口(Select Device Window)。按以下参数设置后点击"下一步(Next)>”:
    • 系列: LatticeECP2
    • 器件: LFE2-70E
    • 性能等级: 5
    • 封装类型: FPBGA672
    • 工作条件: 商用级
    • 部件名称: LFE2-70E-5F672C

  4. 确保设置正确后点击“完成(Finish)>”。其他LatticeFPGA也可遵循相同流程,仅需在器件选择窗口中调整不同设置。

  5. 在文件列表窗口中双击任意.vhd文件即可打开查看。界面应类似于下方图1所示。

1 - Diamond 设计环境

  1. 在文件列表窗口(File List Window)中,右键点击输入文件文件夹上一级的活动实现文件夹,从弹出菜单中选择属性(Properties)。

  2. 在项目属性(Project Properties)对话框中,确保项目处于高亮状态,并在"顶层单元(Top-Level Unit)"的值单元格中选择Top_Testbench_Tutorial。此文件名可能需要手动输入。如图2所示。

2 - 项目属性窗口

  1. 点击顶部工具栏的"生成层次结构(Generate Hierarchy)"按钮,或选择设计(Design)→生成层次结构(Generate Hierarchy)。

  2. 此时应看到设计视图(Design View)中按层次排列的VHDL组件。现在点击"运行BKM检查(Run BKM Check)"或选择设计(Design)→运行BKM检查(Run BKM Check)。VHDL模块应显示为绿色,表示(0)错误和(0)警告。如图3所示。

3 - 生成层次结构后的设计视图

  1. 在设计视图(Design View)中右键点击top_testbench_tutorial,选择VHDL测试平台模板。如图4所示。

4 - 创建测试平台模板

  1. 文件列表窗口(File List Window)的输入文件(Input Files)文件夹下将创建新文件。这是测试平台模板,包含运行仿真所需的大部分VHDL代码。文件可在此路径运行,也可移至源文件夹。现在可将测试平台从"testbench.vhd"重命名为"top_testbench_tutorial_tb.vhd"(本例采用此名称)。测试平台还需自定义测试向量驱动顶层设计输入端口,以及控制时钟的进程。需在"tb:PROCESS"进程中进行信号赋值。将添加名为“clock:PROCESS”的进程来控制时钟。可在Synplify Pro中(可选)创建驱动架构的RTL原理图,方法是在Lattice Diamond工具栏中打开Synplify Pro,运行设计后点击“RTL视图(RTL View)”按钮。这将生成如图5所示的RTL原理图。

5 – RTL 原理图

  1. 在“PORT MAP”上方的“BEGIN”语句之前插入以下内容:

• constant PERIOD : time := 20 ns;

在“tb:PROCESS”之前插入以下VHDL代码来控制时钟:

• clock : PROCESS
• BEGIN

• clk <= ‘1’;
• WAIT FOR PERIOD/2;
• clk <= ‘0’;
• WAIT FOR PERIOD/2;

• END PROCESS;

  1. 在“tb : PROCESS”中的BEGIN与wait语句之间输入以下VHDL代码以驱动输入端口:

• ready <= ‘0’;
• n_reset <= ‘0’;

• WAIT FOR 40 NS;

• n_reset <= ‘1’;

• WAIT FOR 40 NS;

• ready <= ‘1’;

• a_in <= “001100111111111111”;
• b_in <= “000010000000000001”;

• WAIT FOR 10 NS;

• a_in <= “101100111111111111”;
• b_in <= “100010000000000001”;

• WAIT FOR 10 NS;

• a_in <= “011100111111111111”;
• b_in <= “010010000110000001”;

• WAIT FOR 10 NS;

• a_in <= “101100000100001111”;
• b_in <= “100010000000000001”;

• WAIT FOR 10 NS;

• a_in <= “101111111111111111”;
• b_in <= “111110001111100001”;

• WAIT FOR 40 NS;

• a_in <= “111111000001111111”;
• b_in <= “111011111111100001”;

• WAIT FOR 40 NS;

• a_in <= “001111111111111111”;
• b_in <= “101001100011100001”;

• WAIT FOR 40 NS;

• a_in <= “001111110000110011”;
• b_in <= “001011111111100001”;

• WAIT FOR 40 NS;

• a_in <= “100000111111111111”;
• b_in <= “111101101111100001”;

• WAIT FOR 40 NS;

• a_in <= “000000000000001111”;
• b_in <= “011010000011100110”;

  1. 代码应按照图6和图7所示输入。

6 – 添加时钟进程后的修改版测试平台

7 – 添加测试向量后的修改版测试平台

  1. 保存设计,点击顶部工具栏的Simulation Wizard,或选择Tools → Simulation Wizard。

  2. 输入项目名称(本例中为“testbench”),并浏览至正确的项目位置。选择Active-HDL单选按钮,点击Next>。

  3. 选择RTL单选按钮,点击Next>。

  4. 在“Add and Reorder Source”窗口点击Next>。

  5. 在“Parse HDL files for simulation”窗口中,确认“top_testbench_tutorial_tb”设置为“Simulation Top Module:”,点击Next>。

  6. 在“Summary”窗口中,确保勾选“Run Simulator”后点击Finish。

  7. Active-HDL将启动;在“Files”窗口中展开“work library”,右键点击“top_testbench_tutorial_tb (behavior)”,选择Initialize Simulation。如图8所示。

8 – Active-HDL 仿真初始化

  1. “Structure”标签页将置顶,此时可将顶层端口添加至波形窗口。右键点击每个信号,从弹出菜单中选择Add to Waveform。如图9所示。

9 – 将端口信号添加至波形图

  1. 现在可通过点击工具栏中的“Run For”(F5)按钮,或在“Console”窗口中输入“run”加指定时间(如“run 100 ns”)来运行测试平台。

  2. 另一个实用命令是“restart”,该命令会从测试平台的开头重新启动仿真。测试平台仿真的最终结果应类似于下图10所示

10 – 测试平台最终结果

功能、限制与修改

本教程使用Lattice Diamond 2.0.1版本开发,并得到Synopsys(Synplify Pro for Lattice)和Aldec(Active-HDL Lattice Edition)配套软件支持。Diamond可作为独立开发环境,配合其他综合与仿真软件使用。

结论

本教程展示了如何轻松运用Lattice Diamond设计软件,基于模板创建自定义用户测试平台。只需遵循本教程所述步骤,即可为任何设计创建定制化测试平台。

附加信息

更多设计支持、产品教程、应用说明、用户指南及其他文档,请访问Lattice官网:https://www.latticesemi.com/zh-CN/Support

附录:文件下载

LD_Testbench_Tutorial.doc (774 KB)

Top_Testbench_Tutorial.vhd (3.1 KB)
NbitSatAdder.vhd (3.0 KB)
NBitDFF.vhd (2.0 KB)
top_testbench_tutorial_tb.vhd (3.9 KB)