最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

SeamlessCVE介绍和使用流程说明

IT圈 admin 32浏览 0评论

2024年2月16日发(作者:眭英媛)

Seamless CVE介绍和使用流程说明

1. Seamless CVE简介

1.1软/硬件协同验证环境

软硬件协同验证流程

Seamless CVE是Mentor Graphics推出的嵌入式系统软/硬件协同验证解决方案。Seamless CVE提供了嵌入式系统及SOC软/硬件协同仿真的解决方案。Seamless CVE将嵌入式软件开发工具和硬件逻辑仿真器结合起来,使项目开发小组在物理原型(电路板或芯片)生产出来之前,就能够使用同一个系统模型进行高性能的软/硬件协同验证,使软件/硬件并行开发成为可能,从而及早发现并改正软/硬件接口中的错误,大大缩短设计周期,减少设计投入。

主要特点:

a、使用同一个系统模型进行高性能的软/硬件协同验证,使软件/硬件并行开发成为可能,从而减少硬件原型的设计反复次数;

b、提供开放式的验证环境,能够集成第三方的软件调试器和硬件仿真器;

c、提供业界主要的微处理器和控制器仿真模型(100多种),以及常用的DSP仿真模型;

d、支持多CPU设计的软硬件协同仿真;

e、设计人员能在需要时观测到所有的软/硬件交互细节,加速设备驱动程序和硬件诊断程序的调试;

f、拥有专利的一致性存储器服务器和动态优化技术能够提供最优的协同验证性能;

g、通过不同的优化技术加速软件代码的执行,提高协同验证的效率;

传统设计流程VS软硬件协同设计流程

1.2 Seamless 验证平台结构

Seamless CVE 的主要核心由处理器支持包(processor support package, PSP)所

构成,每个处理器模组如图4 所示,包含指令集仿真器(instruction set simulator,ISS)、debugger及总线接口模型(bus-interface model)。ISS主要功能是在执行程序时仿真处理器的动作,指令集仿真器为处理器的高级行为模型,而非处理器的硬件模型,所以没有关于硬件电路仿真时所需的参数,仿真速度因此会比通过硬件仿真器的仿真速度快上许多倍。Debugger可使软件设计人员能够观察程序的执行过程及处理器中所有寄存器堆的变化,以辅助软件设计人员寻找程序的错误(bug)。最后,总线接口模型(BIM)则在硬件仿真器中模仿处理器输入、输出总线的动作。

BIM

Memory

Seamless 整体验证架构如图5 所示,当设计者完成系统建构,Seamless 的软件与硬件协同验证引擎藉由仿真介面连结软件Debugger与硬件仿真器,建立硬件和软件间的通讯联系。验证时,设计者通过软/硬件协同验证引擎的图形介面(GUI)开启硬件仿真器使硬件设计运行,进行硬件仿真,另外利用软件Debugger载入可执行软件(一般为C 语言或汇编语言)进行软件调试。这样,Seamless 可以让设计者在进入实体验证阶段前,先建立一个虚拟的系统仿真环境(virtual prototyping)作软件与硬件协同验证,系统开发的设计人员不需等到硬件原型完成之后才编写软件,系统开发人员因此可以提早验证软件与硬件的动作而

加快项目的进程。另外,设计者也可通过Seamless 独特的「一致性存储器服务器」机制来提升整体仿真的效率。

1.3 Seamless加速仿真原理

Seamless加快仿真速度主要通过两个途径实现:

a、 使用ISS配合BIM替换处理器的硬件仿真

b、 对某些Memory访问操作的隐藏处理

1.3.1 ISS

ISS作为待仿真处理器的指令集仿真器,一般以动态链接库的形式出现(windows下为*.dll,Unxi下为*.so),它可以仿真处理器内部所有指令集的行为功能。但它不是一个完整的处理器,它只是一个抽象的模型,仅仅仿真在指令执行时的数据处理。它可以fetch、decode、和execute指令,读写memory和IO数据,仿真处理器的寄存器和其它内部的数据处理功能。它向logic simulator发送数据访问请求,从seamless kernel获得返回的响应和中断请求。通过软件仿真器的接口,你可以控制软件的执行,观察或改变可最优化memory的内容。

1.3.2 BIM

BIM仿真了处理器的总线接口动作,它以PLI或者VPI的形式出现,可以在HDL中调用,然后在硬件仿真器中仿真。

由于屏蔽了处理器内部的硬件仿真,所以加快了仿真速度。

a、Hardware Model

b、Input/Output Pin Behavior of Processor

c、No Internal Logic of Processors

d、Bus Activities

R/W Memory

R/W I/Os

R-modify-W

Reset and Halt

Interrupts, Faults

Bus Request & Grant

1.3.3 Optimizble Memory

Seamless对Memory访问操作的隐藏处理,利用了周期隐藏(Mentor称之为最优化Optimization)的技术,来加快仿真速度。所谓周期隐藏或最优化的技术是通过一致性存储服务器,使得某些存储器的访问可以不需要硬件仿真器处理(如图7 所示),因此某些存储器的总线读写周期可以被隐藏,从而达到增加仿真效率的目的,但必须注意的是存储器最优化功能被开启时所隐藏的周期对硬件部份的仿真必须是没有影响的。

以取指(instruction fetch)为例,取指时需要到存储器读取指令后回传给处理器解码(decode),因此读取指令时需要对存储器产生读取周期(read cycle),若以硬件仿真器做fetch的仿真,硬件仿真器必须处理很多的存储器读取的仿真事件(event),这将消耗大量的仿真时间,事实上,在完成取指的过程中,有没有产生相对的存储器读取周期对于硬件部份的仿真并没有影响,因此这些读取周期或事件是可从逻辑仿真器中省略(隐藏)的。

1.3.4三种最优化技术

在Seamless 工具中,共有三种最优化的技术,一是取指最优化(instruction fetch

optimization):将取指时的存储器总线读取的仿真事件隐藏;另一个是资料存取最优化(data

access optimization),又称作地址范围最优化(address range optimization):对于某些记载体区间的资料读/写时的仿真事件隐藏,而所隐藏的事件对硬件仿真并没有影响;取指最优化可以看作是资料存取最优化的一个特殊实现,取指最优化时,仅对指令的读取做优化处理,资料存取最优化时则不论是指令还是数据都做优化处理。最后是时间最优化(time

optimization):此最优化将所有不必要的周期省略,只保留与硬件有关系的周期,因此时间最优化的技术可以提升约1000 倍以上的仿真效率。这些最优化的效率提升效率如

上述3 种最优化的技术在使用时均可达到功能上的准确性(functionally accurate),在使用取指最优化与资料存取最优化功能时亦不会影响仿真周期上的准确性(cycleaccurate),而时间最优化因为将所有不必要的周期省略而没办法达到周期的准确性,但它可以大幅提升仿真上的效率。一般,若验证时详细的硬件时序不是考虑重点时,可考虑使用时间最优化的技术,以节省仿真时间,但由于在软/硬件协同验证过程中,硬件和软件的时间必须同步,因此隐

藏周期后硬件和软件时间同步变得非常重要,设计者必须在不失功能准确性的前提下做适当的最优化设定。

1.4 Memory 模型构建

要使用Seamless的最优化功能,需要使用特殊的memory 模型。这些memory 模型有三种方法产生:

• Generic Optimizable Memory Models

– Seamless 提供5种较为常见的memory模型,如:DRAM, SRAM, DP-RAM, FIFO,

Register Memory.

• Denali Memory Models

– Denali提供多种可配置的memory模型,通过PureView 创建

• Seamless HDL Memory Interface

– 设计者自行设计,利用Seamless提供的接口函数:

• cve_RegisterMemory()

• cve_ReadMemory()

• cve_WriteMemory()

1.4.1 Generic Optimizable Memory Models

Seamless提供5种常用的memory model,它的verilog和VHDL版本分别放在$CVE_HOME/vlog 与$CVE_HOME/vsim_vhdl中,

表Generic Memory Models

SRAM model 的verilog范例如下图所示,它的地址位宽度为1~32bit,数据宽度为1~8、16、24 或32bit。通过修改NUM_ADDR_BITS和NUM_DATA_BITS实现。

图Generic SRAM Model

1.4.2 Denali Memory Models

Denali Memory Model 可以通过PureView生成,通过以下几步:

a、 选取memory 类型,如图a

b、 设定memory 的pin及data、address、control信号,如图b

c、 设定timing ,如图c

d、 产生verilog或者VHDL 模型代码 ,如图d

产生的verilog代码如图e。

生成的Denali Memory Model verilog 代码

1.4.3 HDL编写可最优化memory model

我们先看一下verilog中构建memory时的方法:

reg [width] mem [depth];

mem[address]=Data[width];

Data[width]=mem[address];

这样构建的memory会被seamless视作硬件的一部分,会让它在logic simulator中仿真,

无法发挥seamless针对memory的最优化功能。

如果希望使所构建的memory可以使用最优化功能,需要在构建memory使,调用CVE的三个memory 函数,将上面的verilog 代码通过这三个函数改写,结果如下:

$cve_RegisterMemory(depth, width);

$cve_WriteMemory(Address, Data) ;

$cve_ReadMemory(Address,Data) ;

三个分别对应memory的定义、写data、读data三个功能。

1.4.4 memory的映射和访问属性

利用前面提到的三种方法之一构建好了memory后,需要在CVE中。可以通过GUI方式实现,也可以在.cve配置文件中实现。

register 指定了memory的地址范围和数据在data bus中的bit 位置

2. Seamless 流程

前面介绍了seamless CVE环境的一些特点、结构、原理, seamless的基本主要流程如下图:

我们将结合Seamless附带的一个教程介绍seamless进行协同验证的流程。教程中以DLX 处理器为中心,配置四个1M byte的memory、Clock、reset、Screen IO等模块。Screen IO起输出终端的作用,可以直接通过它来input和output data。

2.1材料准备

DLX的教程材料在$CVE_HOME/DLX下,$CVE_HOME是seamless 的安装目录。如

果没有,需要和mentor graphic联系。

2.2建立验证环境

假定Logic simulator使用NC verilog,安装好EDA tools后,需要设置几个环境变量:

a、CVE_HOME,指向seamless 的安装目录的顶层

b、MGLS_LICENSE_FILE,指向license file

c、CDS_INST_DIR,指向NC verilog的安装目录

d、CDS_ROOT,指向NC verilog的安装目录的顶层

2.3准备Design files

a、创建一个目录,作为验证环境的工程目录

b、切换到此目录

c、运行$CVE_HOME/example/tutorial/ncvlog/build_design,它将编译DLX 处理器、SRAM、screen、reset generator、clock generator、Memory module,以及top-level模块,生成的文件到工程目录

d、编译链接汇编程序,运行:$CVE_HOME/example/tutorial/common/sw/compile_sw

e、 将debugger的include 文件拷贝到工程目录:

cp $CVE_HOME/example/tutorial/common/sw/tutorial_ .

2.4启动Seamless

运行命令:$CVE_HOME/bin/cve,将会弹出CVE的窗口:

2.5启动Logic Simulator

点击设置Logic Simulator的图标,将会弹出一个配置对话框:

在Invoction下输入:

$CDS_INST_DIR/tools/bin/ncsim -gui -CDSLIB _design:snap

点击“Invoke”后,seamless将以命令行的形式运行所输入的命令,来启动Logic simulator,也就是ncsim。

若点击“Ok”,则只设置启动的命名行,但不会运行之,也就不会启动Logic simulator了。

当Logic simulator启动后可以点击菜单:

View > Hardware Output

来查看Logic simulator在启动过程中输出的信息,通过这些信息可以判断硬件工程是否有误,是否正确的加载进来了。

2.6配置处理器和memory

点击设置Software Simulator的图标,将会弹出一个配置对话框:

在Invoction下输入:

$CVE_HOME/isms/bin/mdb_dlx crt_ -i tutorial_

同时使“Run software simulator in a terminal window”有效,点击OK后,software simulator将在一个terminal窗口中启动。

点击设置Map memory 的图标,将会弹出一个配置对话框:

选择mem0,会弹出一个配置对话框:

设置mem0的base address 和bit position。因为CPU的data bus 是32bit,4个1Mbyte的memory构成了1M 32bit的memory,每一个memory占据1byte的数据宽度。同时它们的address range都为000000000~003FFFFF。

接下来配置memory的访问属性和wait cycle。

在Access中设置000000000~003FFFFF和3FFFFFF0~3FFFFFF3为“Unoptimized

access”,表示开始协同验证是这段memory 将不做优化处理。等到使能最优化后,它们的访问将会被优化处理。00400000~3FFFFFEF设置为“Hardware-only”,3FFFFFF4~FFFFFFFF设置为“Illegal access”当seamless访问到这些地址时,将会给出错误提示。

在Wait States中设置读写的cycle数为“2”。

在Label中分别设置各段memory的label。

2.7存储配置

将会提示输入存储配置文件名,配置文件后缀名为:.cve,下一次启动CVE时,可以直接在terminal下输入:

cve your_

2.8开始协同验证

在主窗口中点击“Run”,seamless将会连接ncsim。当ncsim出现时,设置好wave和signal的显示,开始logic simulation。这时ncsim不会马上运行,而是等待software的启动。Seamless这时会自动启动software simulator,它将以terminal的形式出现,在(mdb)的提示符下,输入“run”,将会执行测试程序,同时logic simulator也会开始运行。

2.8使能地址范围最优化

前面设置memory access属性时没有开启最优化功能,点击上图图标开启地址范围最优化时,会弹出设置窗口,重新设定000000000~003FFFFF和3FFFFFF0~3FFFFFF3为可最优化。

下图是运行结果,可以看最优化前和最优化后address bus和data bus的不同。

2.9退出协同验证

运行File > Exit,将退出协同验证。

2024年2月16日发(作者:眭英媛)

Seamless CVE介绍和使用流程说明

1. Seamless CVE简介

1.1软/硬件协同验证环境

软硬件协同验证流程

Seamless CVE是Mentor Graphics推出的嵌入式系统软/硬件协同验证解决方案。Seamless CVE提供了嵌入式系统及SOC软/硬件协同仿真的解决方案。Seamless CVE将嵌入式软件开发工具和硬件逻辑仿真器结合起来,使项目开发小组在物理原型(电路板或芯片)生产出来之前,就能够使用同一个系统模型进行高性能的软/硬件协同验证,使软件/硬件并行开发成为可能,从而及早发现并改正软/硬件接口中的错误,大大缩短设计周期,减少设计投入。

主要特点:

a、使用同一个系统模型进行高性能的软/硬件协同验证,使软件/硬件并行开发成为可能,从而减少硬件原型的设计反复次数;

b、提供开放式的验证环境,能够集成第三方的软件调试器和硬件仿真器;

c、提供业界主要的微处理器和控制器仿真模型(100多种),以及常用的DSP仿真模型;

d、支持多CPU设计的软硬件协同仿真;

e、设计人员能在需要时观测到所有的软/硬件交互细节,加速设备驱动程序和硬件诊断程序的调试;

f、拥有专利的一致性存储器服务器和动态优化技术能够提供最优的协同验证性能;

g、通过不同的优化技术加速软件代码的执行,提高协同验证的效率;

传统设计流程VS软硬件协同设计流程

1.2 Seamless 验证平台结构

Seamless CVE 的主要核心由处理器支持包(processor support package, PSP)所

构成,每个处理器模组如图4 所示,包含指令集仿真器(instruction set simulator,ISS)、debugger及总线接口模型(bus-interface model)。ISS主要功能是在执行程序时仿真处理器的动作,指令集仿真器为处理器的高级行为模型,而非处理器的硬件模型,所以没有关于硬件电路仿真时所需的参数,仿真速度因此会比通过硬件仿真器的仿真速度快上许多倍。Debugger可使软件设计人员能够观察程序的执行过程及处理器中所有寄存器堆的变化,以辅助软件设计人员寻找程序的错误(bug)。最后,总线接口模型(BIM)则在硬件仿真器中模仿处理器输入、输出总线的动作。

BIM

Memory

Seamless 整体验证架构如图5 所示,当设计者完成系统建构,Seamless 的软件与硬件协同验证引擎藉由仿真介面连结软件Debugger与硬件仿真器,建立硬件和软件间的通讯联系。验证时,设计者通过软/硬件协同验证引擎的图形介面(GUI)开启硬件仿真器使硬件设计运行,进行硬件仿真,另外利用软件Debugger载入可执行软件(一般为C 语言或汇编语言)进行软件调试。这样,Seamless 可以让设计者在进入实体验证阶段前,先建立一个虚拟的系统仿真环境(virtual prototyping)作软件与硬件协同验证,系统开发的设计人员不需等到硬件原型完成之后才编写软件,系统开发人员因此可以提早验证软件与硬件的动作而

加快项目的进程。另外,设计者也可通过Seamless 独特的「一致性存储器服务器」机制来提升整体仿真的效率。

1.3 Seamless加速仿真原理

Seamless加快仿真速度主要通过两个途径实现:

a、 使用ISS配合BIM替换处理器的硬件仿真

b、 对某些Memory访问操作的隐藏处理

1.3.1 ISS

ISS作为待仿真处理器的指令集仿真器,一般以动态链接库的形式出现(windows下为*.dll,Unxi下为*.so),它可以仿真处理器内部所有指令集的行为功能。但它不是一个完整的处理器,它只是一个抽象的模型,仅仅仿真在指令执行时的数据处理。它可以fetch、decode、和execute指令,读写memory和IO数据,仿真处理器的寄存器和其它内部的数据处理功能。它向logic simulator发送数据访问请求,从seamless kernel获得返回的响应和中断请求。通过软件仿真器的接口,你可以控制软件的执行,观察或改变可最优化memory的内容。

1.3.2 BIM

BIM仿真了处理器的总线接口动作,它以PLI或者VPI的形式出现,可以在HDL中调用,然后在硬件仿真器中仿真。

由于屏蔽了处理器内部的硬件仿真,所以加快了仿真速度。

a、Hardware Model

b、Input/Output Pin Behavior of Processor

c、No Internal Logic of Processors

d、Bus Activities

R/W Memory

R/W I/Os

R-modify-W

Reset and Halt

Interrupts, Faults

Bus Request & Grant

1.3.3 Optimizble Memory

Seamless对Memory访问操作的隐藏处理,利用了周期隐藏(Mentor称之为最优化Optimization)的技术,来加快仿真速度。所谓周期隐藏或最优化的技术是通过一致性存储服务器,使得某些存储器的访问可以不需要硬件仿真器处理(如图7 所示),因此某些存储器的总线读写周期可以被隐藏,从而达到增加仿真效率的目的,但必须注意的是存储器最优化功能被开启时所隐藏的周期对硬件部份的仿真必须是没有影响的。

以取指(instruction fetch)为例,取指时需要到存储器读取指令后回传给处理器解码(decode),因此读取指令时需要对存储器产生读取周期(read cycle),若以硬件仿真器做fetch的仿真,硬件仿真器必须处理很多的存储器读取的仿真事件(event),这将消耗大量的仿真时间,事实上,在完成取指的过程中,有没有产生相对的存储器读取周期对于硬件部份的仿真并没有影响,因此这些读取周期或事件是可从逻辑仿真器中省略(隐藏)的。

1.3.4三种最优化技术

在Seamless 工具中,共有三种最优化的技术,一是取指最优化(instruction fetch

optimization):将取指时的存储器总线读取的仿真事件隐藏;另一个是资料存取最优化(data

access optimization),又称作地址范围最优化(address range optimization):对于某些记载体区间的资料读/写时的仿真事件隐藏,而所隐藏的事件对硬件仿真并没有影响;取指最优化可以看作是资料存取最优化的一个特殊实现,取指最优化时,仅对指令的读取做优化处理,资料存取最优化时则不论是指令还是数据都做优化处理。最后是时间最优化(time

optimization):此最优化将所有不必要的周期省略,只保留与硬件有关系的周期,因此时间最优化的技术可以提升约1000 倍以上的仿真效率。这些最优化的效率提升效率如

上述3 种最优化的技术在使用时均可达到功能上的准确性(functionally accurate),在使用取指最优化与资料存取最优化功能时亦不会影响仿真周期上的准确性(cycleaccurate),而时间最优化因为将所有不必要的周期省略而没办法达到周期的准确性,但它可以大幅提升仿真上的效率。一般,若验证时详细的硬件时序不是考虑重点时,可考虑使用时间最优化的技术,以节省仿真时间,但由于在软/硬件协同验证过程中,硬件和软件的时间必须同步,因此隐

藏周期后硬件和软件时间同步变得非常重要,设计者必须在不失功能准确性的前提下做适当的最优化设定。

1.4 Memory 模型构建

要使用Seamless的最优化功能,需要使用特殊的memory 模型。这些memory 模型有三种方法产生:

• Generic Optimizable Memory Models

– Seamless 提供5种较为常见的memory模型,如:DRAM, SRAM, DP-RAM, FIFO,

Register Memory.

• Denali Memory Models

– Denali提供多种可配置的memory模型,通过PureView 创建

• Seamless HDL Memory Interface

– 设计者自行设计,利用Seamless提供的接口函数:

• cve_RegisterMemory()

• cve_ReadMemory()

• cve_WriteMemory()

1.4.1 Generic Optimizable Memory Models

Seamless提供5种常用的memory model,它的verilog和VHDL版本分别放在$CVE_HOME/vlog 与$CVE_HOME/vsim_vhdl中,

表Generic Memory Models

SRAM model 的verilog范例如下图所示,它的地址位宽度为1~32bit,数据宽度为1~8、16、24 或32bit。通过修改NUM_ADDR_BITS和NUM_DATA_BITS实现。

图Generic SRAM Model

1.4.2 Denali Memory Models

Denali Memory Model 可以通过PureView生成,通过以下几步:

a、 选取memory 类型,如图a

b、 设定memory 的pin及data、address、control信号,如图b

c、 设定timing ,如图c

d、 产生verilog或者VHDL 模型代码 ,如图d

产生的verilog代码如图e。

生成的Denali Memory Model verilog 代码

1.4.3 HDL编写可最优化memory model

我们先看一下verilog中构建memory时的方法:

reg [width] mem [depth];

mem[address]=Data[width];

Data[width]=mem[address];

这样构建的memory会被seamless视作硬件的一部分,会让它在logic simulator中仿真,

无法发挥seamless针对memory的最优化功能。

如果希望使所构建的memory可以使用最优化功能,需要在构建memory使,调用CVE的三个memory 函数,将上面的verilog 代码通过这三个函数改写,结果如下:

$cve_RegisterMemory(depth, width);

$cve_WriteMemory(Address, Data) ;

$cve_ReadMemory(Address,Data) ;

三个分别对应memory的定义、写data、读data三个功能。

1.4.4 memory的映射和访问属性

利用前面提到的三种方法之一构建好了memory后,需要在CVE中。可以通过GUI方式实现,也可以在.cve配置文件中实现。

register 指定了memory的地址范围和数据在data bus中的bit 位置

2. Seamless 流程

前面介绍了seamless CVE环境的一些特点、结构、原理, seamless的基本主要流程如下图:

我们将结合Seamless附带的一个教程介绍seamless进行协同验证的流程。教程中以DLX 处理器为中心,配置四个1M byte的memory、Clock、reset、Screen IO等模块。Screen IO起输出终端的作用,可以直接通过它来input和output data。

2.1材料准备

DLX的教程材料在$CVE_HOME/DLX下,$CVE_HOME是seamless 的安装目录。如

果没有,需要和mentor graphic联系。

2.2建立验证环境

假定Logic simulator使用NC verilog,安装好EDA tools后,需要设置几个环境变量:

a、CVE_HOME,指向seamless 的安装目录的顶层

b、MGLS_LICENSE_FILE,指向license file

c、CDS_INST_DIR,指向NC verilog的安装目录

d、CDS_ROOT,指向NC verilog的安装目录的顶层

2.3准备Design files

a、创建一个目录,作为验证环境的工程目录

b、切换到此目录

c、运行$CVE_HOME/example/tutorial/ncvlog/build_design,它将编译DLX 处理器、SRAM、screen、reset generator、clock generator、Memory module,以及top-level模块,生成的文件到工程目录

d、编译链接汇编程序,运行:$CVE_HOME/example/tutorial/common/sw/compile_sw

e、 将debugger的include 文件拷贝到工程目录:

cp $CVE_HOME/example/tutorial/common/sw/tutorial_ .

2.4启动Seamless

运行命令:$CVE_HOME/bin/cve,将会弹出CVE的窗口:

2.5启动Logic Simulator

点击设置Logic Simulator的图标,将会弹出一个配置对话框:

在Invoction下输入:

$CDS_INST_DIR/tools/bin/ncsim -gui -CDSLIB _design:snap

点击“Invoke”后,seamless将以命令行的形式运行所输入的命令,来启动Logic simulator,也就是ncsim。

若点击“Ok”,则只设置启动的命名行,但不会运行之,也就不会启动Logic simulator了。

当Logic simulator启动后可以点击菜单:

View > Hardware Output

来查看Logic simulator在启动过程中输出的信息,通过这些信息可以判断硬件工程是否有误,是否正确的加载进来了。

2.6配置处理器和memory

点击设置Software Simulator的图标,将会弹出一个配置对话框:

在Invoction下输入:

$CVE_HOME/isms/bin/mdb_dlx crt_ -i tutorial_

同时使“Run software simulator in a terminal window”有效,点击OK后,software simulator将在一个terminal窗口中启动。

点击设置Map memory 的图标,将会弹出一个配置对话框:

选择mem0,会弹出一个配置对话框:

设置mem0的base address 和bit position。因为CPU的data bus 是32bit,4个1Mbyte的memory构成了1M 32bit的memory,每一个memory占据1byte的数据宽度。同时它们的address range都为000000000~003FFFFF。

接下来配置memory的访问属性和wait cycle。

在Access中设置000000000~003FFFFF和3FFFFFF0~3FFFFFF3为“Unoptimized

access”,表示开始协同验证是这段memory 将不做优化处理。等到使能最优化后,它们的访问将会被优化处理。00400000~3FFFFFEF设置为“Hardware-only”,3FFFFFF4~FFFFFFFF设置为“Illegal access”当seamless访问到这些地址时,将会给出错误提示。

在Wait States中设置读写的cycle数为“2”。

在Label中分别设置各段memory的label。

2.7存储配置

将会提示输入存储配置文件名,配置文件后缀名为:.cve,下一次启动CVE时,可以直接在terminal下输入:

cve your_

2.8开始协同验证

在主窗口中点击“Run”,seamless将会连接ncsim。当ncsim出现时,设置好wave和signal的显示,开始logic simulation。这时ncsim不会马上运行,而是等待software的启动。Seamless这时会自动启动software simulator,它将以terminal的形式出现,在(mdb)的提示符下,输入“run”,将会执行测试程序,同时logic simulator也会开始运行。

2.8使能地址范围最优化

前面设置memory access属性时没有开启最优化功能,点击上图图标开启地址范围最优化时,会弹出设置窗口,重新设定000000000~003FFFFF和3FFFFFF0~3FFFFFF3为可最优化。

下图是运行结果,可以看最优化前和最优化后address bus和data bus的不同。

2.9退出协同验证

运行File > Exit,将退出协同验证。

发布评论

评论列表 (0)

  1. 暂无评论