tfpwl_lj的个人空间 https://blog.eetop.cn/1638430 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

ARC HS3X系列处理器使用总结

热度 1已有 4489 次阅读| 2020-2-23 11:46 |系统分类:芯片设计

一、概述

   前文SOC前端设计总结,模块分类中提到了IP核的二次开发,CPU就是属于需要二次开发的软IP。市面上SOC使用的通用处理器,基本上是以ARMMIPSARC为主。本部分介绍的是Synopsys ARC HS36x4 系列处理器的使用总结,该处理器可配置性高,性能强。现在处理器版本已经更新到了ARC HS4X。下面从基本组件、配置、APEX开发、验证、综合、固件开发等方面对ARC HS36x4 系列处理器二次开发所需要做的工作进行一个总结分享,对于不是很熟悉的方面介绍得就更为简略。

二、基本组件

 ARC HS36x4 系列处理器包含很多组件(Components),这里只把其中最关键得组件罗列出来,做一些简单介绍,更详细的说明需要参考其DataBook

Multi-Core ARC HS ClusterARC HS 是一个基于簇的多核处理器。每个簇可以配置成1-4个核。可以有多个簇(cluster)。如下图所示:

Fig 1 ARC HS36

Memory ComponentsARC HS拥有region0-region1516个地址空间,每个region大小为256MB,地址宽度为32bit, region分布如下图所示:

Fig2

16region可以分配给如下的memory:

Instruction Closely Coupled Memory (ICCM0, ICCM1)

Data Closely Coupled Memory (DCCM)

Peripheral bus

Cluster Shared Memory (CSM)

External memory bus or busses

Memory Management Unitmemory地址映射单元。

Memory-Protection Optionsmemory region保护单元,每个region可以设置可读,可写,可执行等属性。

Multi-Core Cache Coherency:多核缓存一致性,是为了在多核CPU运行时,保证缓存的数据正确性的一个组件。

Interrupts:中断控制单元

External Interfaces:外部接口,包括指令总线IBU,数据总线DBU,指令数据组合总线CBU,外围总线LBUDMI 总线等总线接口。

Cluster Shared Memory:共享memory,在多核CPU里面,保存所有核所共享的一部分数据。

Debug Features: 提供Debug功能,包含JTAG, SmaRT, RTT等模块可以选用。

User Auxiliary-Register Interface:用户定义的辅助寄存器,连接到处理器核,处理器可以直接通过指令来访问这些寄存器的值。

ARConnect:系统组件集合,提供高效的核间通信,中断分发,debug协助等功能。

下面是ARConnect 组件:

Inter-Core Interrupt Unit (ICI)

Inter-Core Semaphore Unit (ICS)

Inter-Core Message Unit (ICM)

Inter-Core Debug Unit (ICD)

Global Free-Running Counter (GFRC)

ARConnect Power Domain Management Unit (ARConnect -PDM)

Power Management Unit (PMU)

Interrupt Distribution Unit (IDU)

ARConnect Slave Interface Unit (ASI)

三、配置

前面简单介绍了ARC HS处理器有哪些组件及其大致功能,本部分讨论ARC HS的配置问题。

处理器核配置:本文中ARC HS处理器是用于SSD控制器中,由于SSD需要做NVMe协议处理、FTL转换、垃圾回收、损耗均衡等工作,任务量很大,所以处理器核心就按照最大的来配置,为4核。每个核负责不同的任务。其它情况可按照需求配置。

Memory配置:根据需求配置ICCM, DCCM ICAHCE DECHAE

中断配置:根据需求配置中断的数量,中断的方式-沿触发或者电平触发。

总线配置:根据需求配置IBU,DBU,CBU,LBU等各类总线接口,可以配置为AXI, AHBBVCI等总线接口。

ARConnect配置:根据需求配置ARConnect的组件。

Debug配置:根据需求配置JTAG, RTT

配置ARC HS处理器,使用的软件是synopsys公司的ARChitectARC HS配置选项非常多,这里只是简单罗列了最主要的可配置组件。至于软件的使用,这里就不做介绍了。具体配置按照实际需求进行,可能会反复修改。配置这边倒是没有太复杂的地方,复杂的地方在后面。

四、APEX开发

前面的各类配置均可以在ARChitect软件下通过选择各种选项即可配置完成。但APEX要在ARChitect软件下配置一些选项,但远远没有这么简单。APEX 全称为the ARC Processor Extensions,是对ARC 处理器的一种扩展,具体说来就是ARC 处理器可以自定义指令,可以选择使用core register, auxiliary register。这对于SSD的开发而言是极为重要的一点,它可以简化某些操作,通过自定义指令的方式,让CPU来处理一些复杂操作,简化模块设计。

4.1 指令相关

指令一共有三种类型type0,type1,type2,每一种类型支持不同的功能,其中type2支持64位的操作数。指令执行的周期可以是固定的,也可以是自定时的,指令执行过程可以是阻塞的,也可以是非阻塞的。以上是常用的指令相关的参数,其余参数根据需要再添加。

4.2 设计流程

根据实际需要a) 确定是否使用core register, auxiliary register, 2)确定指令个数,指令类型、操作数宽度、操作数个数、指令周期、阻塞与否。在准备工作完成之后即可将这些参数填入ARChitect软件的对话框中。接下来的RTL设计与普通RTL设计相同,需要注意的一点是,如果没有其他需要添加额外的input, output,那么RTL代码的input , output是固定由软件自动生成的,如果有额外的input,output信号,则需要手动添加进去。所以,在设计RTL的时候需要特别关注这些自动生成的interface的时序,时序如果不能匹配好,那么自然不能达到想要的功能。

4.3 验证流程

编写完RTL代码之后,下一步就要写验证代码了。因为APEX是我们自定义的指令,所以验证指令的方式就是通过写C code的方式来验证。写完C code之后,点击build按钮,等一会儿ARC HS CPUbuild完了,然后就可以开始进行验证。Synopsys 已经提供了MetaWare Debugger工具方便我们进行APEX扩展指令的验证。步骤:a)编写C code, b)编译C code, c) 在指定路径下运行mdb -rascal tests/extension/your_apex 即可调用MetaWare Debugger工具来验证,仿真过程中可以通过DVE波形查看工具来看波形。

利用MetaWare Debugger工具来验证APEX有许多不足之处,首先验证代码是C code,所以有时候想要生成随机的输入激励会比较困难,ARC HS自带的C编译环境不带有随机函数。此外,利用MetaWare Debugger工具来验证APEX,仿真时间会特别的慢,尤其是加入打印函数之后。所以,初步简单的功能验证可以交给MetaWare Debugger工具来验证,但更进一步的进行随机激励验证,仍然需要使用传统的UVM验证环境来验证,这样验证的灵活性会更高,验证得也更为全面。

五、综合

SynopsysARC HS CPU的开发提供了一份综合流程。在buildCPU之后,会生成相关的综合setup文件,SDC约束文件。但是,还需要做一些手工替换的操作才能进行DC综合。

流程:1,在综合setup文件中,设置工艺库相关文件及路径;2,修改/删除SDC文件中不符合当前综合的约束条件;3,替换syn_cell同步单元逻辑,替换clock_gated门控单元逻辑;4,替换memorybuild完之后的CPU,如果不是严格按照Synopsys要求的准备好相关的软件和工艺库,那么生成的CPUmemory是一个二维数组,是不符合综合要求的。必须予以替换。当以上步骤做完之后,即可进行综合操作,使用提供的make指令即可。

这样依赖Synopsys提供的半成品setup文件,SDC约束文件来进行综合的过程是有不足的。不能够满足实际的需要,因此,这样的综合结果只能作为一个参考,真正的综合还是要依靠前文提到的利用makefile做出来的统一综合流程。只有这样才能将项目管理统一起来。

六、固件开发

涉及到了CPU的二次开发,那么CPU固件是绕不开的。针对不同应用场景的CPU需要开发不同的固件。SSD的固件主要集中在处理NVMe协议,FTL转换,垃圾回收,损耗均衡等功能上,所知甚少,这里不再多说。

七、ARC RTT

   RTT 全称Real Time Trace, 属于ARC HS系列的debug模块之一。说到RTT是如何工作的,必然要谈到我们是如何Debug CPU的。Debug CPU, 主要在于追踪CPU执行程序过程中是否读取或写入了某个地址,某些地址,是否读取或写入了某个数据。这是Debug的核心所在。所以RTT的功能也就相应的更为明了——DEBUG 特定的地址、特定的地址范围、特定的数据。

 RTT的使用:1,设置想要Debug的源—PCcore register, auxiliary register, memory2,设置触发的类型,单个地址触发,范围地址触发,数据触发,3,设置想要触发的地址,地址范围,数据值。4,设置触发之后,产生的message存放在memory的某地址范围内中还是直接通过端口直接输出到CPU外面。5,解析message,看是否想要的Debug的源已经被触发。


点赞

发表评论 评论 (2 个评论)

回复 dulei0623 2021-3-1 14:54
你们有用arconnect 这个做产品吗?
回复 tfpwl_lj 2021-3-2 17:25
dulei0623: 你们有用arconnect 这个做产品吗?
没有听过,这个是什么?

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 72

    粉丝
  • 38

    好友
  • 41

    获赞
  • 52

    评论
  • 4340

    访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-3-29 21:29 , Processed in 0.026271 second(s), 15 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部