首先,设计工程师接收一个设计定义的输入,这个定义可以是文本、图表、算法或某种描述语言(如UML、SLD、MATLAB等的描述)。
设计工程师根据这个输入的定义,完成算法的开发,提出一种系统的结构,用ESL语言来描述这种系统结构,即系统级描述,并在此基础上完成软硬件的初步划分。
在完成基本的软硬件划分后,可以开始软件和系统级硬件的设计。这里的系统级硬件设计是指对功能单元在高抽象层次上进行建模,并完成功能设计,如用SystemC进行事务级的建模。
软件设计是指根据系统结构中指定的处理器和软件任务的定义,用如C/C++或汇编语言完成应用软件的设计。
在这个阶段,开始软硬件的协同验证,即软件运行在系统的虚拟平台上。根据协同验证的结果反馈给系统结构和软硬件划分。后者根据性能、成本等因素重新做出调整。软硬件的设计和验证,包括软硬件的协同验证,是一个迭代的过程。在整个设计过程中都要根据验证的结果对系统做出调整。
软硬件的设计和验证,包括软硬件的协同验证,是一个迭代的过程。在整个设计过程中都要根据验证的结果对系统做出调整。
完成验证的硬件和软件设计就可以组成一个完整的系统级设计,并传递给下一级的设计作为输入。例如,ESL设计为软件应用提供C或C++语言描述的程序;为定制电路提供Verilog或VHDL语言描述的硬件设计;为硬件平台提供PCB板的功能部件或抽象层IP,如基于SystemC的IP。
需要指出的是,关于软硬件的划分有许多方法。最初是设计工程师根据经验手工划分,20世纪90年代开始出现了自动划分的方法。
由于SoC系统复杂,算法的求解难度较大,只在一些EDA工具中得到了初步的应用。ESL工具可以帮助进行快速的系统级建模,进行定量的系统性能分析。
在实现ESL设计流程的具体过程中,有不同的实现方法可以采用。直接由软件参考代码开始,从已有事务级(TLM)模型库中选取硬件结构(如通用处理器等),或者重新设计IP库中没有的模块的事务级模型,创建系统虚拟平台,在此基础上将任务并行化,映射到硬件结构上,然后进行验证和性能的分析。根据分析得到结果,再调整系统结构和软件,再分析,直到性能满意。
通常,软件参考代码已实现了基本功能,特别是保证了算法及数据流等的正确性。例如,软件参考代码可以是某一标准协议用C语言写的参考代码。在软件参考代码和主要的事务级模型的基础上分别进行软件和硬件的设计。在软件设计中,会把建立完成的虚拟平台和构架作为集成开发环境的一部分。集成开发环境还包括编译器和调试工具的开发。在设计过程中要通过软硬件的协同验证调整设计的内容。
-
soc
+关注
关注
38文章
4163浏览量
218176 -
硬件
+关注
关注
11文章
3315浏览量
66206 -
ESL
+关注
关注
1文章
74浏览量
21344
发布评论请先 登录
相关推荐
评论