《软硬件划分_systemc》由会员分享,可在线阅读,更多相关《软硬件划分_systemc(36页珍藏版)》请在金锄头文库上搜索。
1、SystemC时正 吴昊Part One软硬件协同设计的引入Problems with Past Design Method 缺少统一的软硬件表示方法 划分依靠先验定义 不能够验证整个系统 通过 HW/SW 边界时很难发现不兼容问题 上市时间问题 描述更改比较困难Need Hardware-Software Co-Design软硬件协同设计理论体系 系统任务描述 (System Task Description ) 软硬件划分 (Hardware/Software Partition) 软硬件协同综合 (Hardware/Software Co- synthesis ) 软硬件协同仿真 (Ha
2、rdwareSoftware Co- simulation ) 与系统设计相关的低压低功耗设计,可测 性设计等等。Concurrent design(并行设计)Traditional design flowConcurrent (codesign) flowHWSWStartStartHWSWDesigned by independentgroups of expertsDesigned by Same group of experts with cooperation软件硬件协同设计的设计流程 用HDL语言和C语言进行系统描述并进行模 拟仿真和系统功能验证; 对软硬件实现进行功能划分,分别用
3、语言 进行设计,并将其综合起来进行功能验证 和性能预测等仿真确认(协调模拟仿真); 如无问题则进行软件和硬件详细设计; 最后进行系统测试。Hardware synthesis 抽象等级: 系统级设计 行为级综合: algorithmic synthesis RTL综合 逻辑级综合: netlist 值得考虑的问题: reuse of hardware (Core)什么是SystemC? SystemC是一个开发硬件的面向对象的新型建模方法, 建立在C+基础上,是为了方便系统级设计。 System C是一个开放的标准,由13家EDA和电子行业的 公司共同控制。 包括: ARM Ltd. Cade
4、nce Design Systems, Inc. CoWare Fujitsu Mentor Graphics Motorola NEC Synopsys System C的源码可以从http:/www.systemc.org/网站上 免费下载。Part TwoSystemC是由一些C+的类库组成SystemC Language Architecture Methodology-Specific Libraries Master/Slave library, etcLayered Libraries Verification library TLM library, etc Primitive
5、 Channels Signal, Fifo, Mutex, Semaphore, etcStructural Elements Modules Ports Interfaces ChannelsData Types 4-valued logic Bits and Bit Vectors Arbitrary Precision Integers Fixed-point types Event-driven Simulation Events Processes C+ Language Standard 用System C开发的硬件模型可以用标准的 C+编译器来编译:Unix/Linux/Sol
6、aris: gccWindows: MSVC 经编译后形成一个可执行的应用程序使用SystemC设计流程SystemC基本语法 模块的定义SC_MODULE(mmu) /Details of the design SC_MODULE是SystemC库中的一个宏,使 用它定义一个模块实际上以sc_module为基 类,定义了一个新的C+类。class mmu :public sc_module /Details of the design 数据类型 允许C+的基本数据类型,bool、int、 short、char等; SystemC的专有数据类型sc_int、sc_bit、 sc_logic等,
7、时钟作为一个特殊的对象处理 sc_clock; 用户自定义类型struct packetchar6 source_address;char destination_address;char data1514;模块的端口 模块的端口使数据能够在模块间通过,模 块之间通过信号将端口连接起来。 SystemC的类库中预先定义的端口包括sc_in (输入端口),sc_out(输出端口), sc_inout(双向端口)。 SystemC允许通过对基本端口类型 sc_port扩展生成更复杂的端口。模块的信号 一个顶层模块可能有几个模块组成,这些 模块需要信号相互连接。 SystemC用sc_signal来
8、定义信号。端口和信号的绑定 位置关联:所有的端口都是按照申明的顺序位置 进行一一对应的。sender sender1(“SENDER1“); sender1 ;sc_mutex;sc_fifo;sc_semaphore;sc_buffer分层通道 分层通道是一个实现了一个或者多个接口 的模块,可以包含进程,可以直接调用其 它通道。 分层通道能够建模复杂的硬件模块。端口 端口用于和特定的通道接口相连,端口必 须在模块中使用。除了基本端口类型, SystemC允许用户自定义端口类型。 一个端口可以同时连接到一个或者多个实 现了同一接口的通道上。 端口的定义:sc_port寄存器传输级SystemC
9、设计 综合是指将RTL或者行为级的硬件描述语言的描 述转换为满足约束条件的网表的过程。 综合技术中的逻辑综合,是在设计的寄存器传输 级对系统进行描述,并且利用逻辑综合工具得到 系统的门级实现。 SystemC描述可以使用的综合工具有synopsys公司 的CoCentric SystemC Compiler。RTL设计的注意事项 模块的功能和端口的设计在行为级仿真要确定, 在RTL仿真阶段对它们的修改,工作量会很大; SystemC的可综合语言子集和可综合数据类型。 需要考虑延时问题System C #include SC_MODULE(dff_rst) sc_in_clk clk;sc_in
10、 rst; sc_indin; sc_outdout; void do_it(); SC_CTOR(dff_rst) SC_METHOD(do_it); sensitive_pos rst clk; ; void dff_rst:do_it() if(rst.read() dout.write(0);else dout .write(din.read(); Verilog HDL Timescale 1ns/1ps Module dff_rst(clk,rst,din,dout);input clk,rst,din;output dout;reg dout;Always (posedge clk or posedge rst) beginif(rst) dout=1b0;else dout=din;end endmoduleSystem C与Verilog HDL的比较SystemC的特点 高仿真速度和建模效率; 时序和行为可以分开建模; 支持从系统级到门级的无缝过渡; 支持系统级调试和系统性能分析发展前景 SystemC与VHDL和Verilog比较 SystemC与使用C语言描述的比较