使用 IP-XACT 元数据进行 TLM 建模流程

文摘   2024-11-17 07:00   上海  
摘要:
许多设计组织正在将其流程发展为可执行实时规范 (ELS) 驱动的方法,并由于所有 SoC 设计学科(RTL 设计、功能验证、软件开发、TLM 建模等)之间的通信增加且连贯,从而大大提高了设计人员的工作效率。ELS 方法的核心是元数据,SoC 设计流程的不同流程所共有的设计数据集中存储在元数据中。
元数据驱动的方法允许从包含寄存器、端口、接口和其他常见设计数据的中央数据库自动生成网表和设计 IP 骨架。IP-XACT 通常用于存储元数据。本文探讨了如何使用 IP-XACT 来表示生成 SystemC/TLM 网表和组件所需的数据
本文的结果是分析两个用例的结果:
  • 最初用于 RTL 的设计
  • 最初用于 TLM/SystemC 的设计

目标是生成 SystemC/TLM 叶单元和 SystemC/TLM 互连。尽管还有其他几个理想的用例,但我们主要关注这两个用例。我们的大多数建议都来自第二个用例:最初用于 TLM/SystemC 的设计。
我们将首先总结从用例中得出的 TLM/SystemC 要求;然后我们将访问必要的 IP-XACT 背景信息,然后提出我们的结论。


TLM 和 SystemC 要求
以元数据格式表示 TLM 和 SystemC 模型有两组要求:
  • SystemC 端口
  • TLM 套接字

SystemC 端口
图 2 有几个端口示例,说明了生成 SystemC 组件和设计所需的案例。

如图 2 所示,SystemC 组件的非 TLM 通信可以通过两种端口类型进行: sc_port 或 sc_export。与每种端口类型相关联的是一个接口,该接口描述了与 SystemC 通道进行通信的 API。接口可以是标准 SystemC 接口,包括 sc_signal_in_if、sc_signal_out_if、sc_fifo_in_if、sc_fifo_out_if。其他接口可以是特定于 IP、SoC、公司或部门特定方法的自定义类型。此外,许多接口都有嵌套的数据类型模板。这些数据类型可以是任何 SystemC 数据类型,如 sc_uint 或 sc_logic,也可以是任何 C++ 数据类型,如 int 或 bool,或任何具有适当支持类方法的用户定义数据类型。
图 3 说明了如何使用 SystemC 建模标准 Verilog 引脚。

除了上面概述的 sc_port 和 sc_export 参数外,还有其他 sc_port 模板参数,有时需要指定,如图 4 所示。

myif 在上一节中进行了描述,可能带有嵌套模板。max_bind 和 con_policy 一起定义了允许绑定到 port_name 的最大端口数。值为 0 表示无限制绑定。端口的 con_policy 连接策略可以是以下几种:
  • SC_ONE_OR_MORE_BOUND
  • SC_ZERO_OR_MORE_BOUND
  • SC_ALL_BOUND

TLM Socket要求
TLM Socket 增加了另一个复杂程度,因为存在以下变化:
  • socket types
  • BUS_WIDTH
  • protocol type
  • 其他模板参数

SystemC 和 TLM 参考实现提供了几个 TLM 套接字,包括:
  • standard TLM sockets
  • simple sockets
  • tagged sockets
  • passthrough sockets
  • combinations or custom sockets

BUS_WIDTH 在所有套接字类型之间是一致的,但还有几个其他模板参数,包括协议类型、连接策略等。此外,大多数这些端口类型仅在有限的情况下有用。
通常,之前讨论的大多数信息都需要在 IP-XACT 中表示,以便生成或分析不同的设计视图。部分数据依赖于方法论,并且假设大多数数据可以针对特定组织或设计类型进行修复。

相关 IP-XACT 背景
“IP-XACT 支持使用统一结构来规范设计、组件、接口、文档和组件互连。此结构可用作手动和自动方法的基础。”2
IP-XACT 允许规范与组件、这些组件的实例和连接(设计)相关的信息。组件允许指定端口、内存映射和寄存器。已建立框架来将多个端口一起映射到接口中,并从这些接口引用内存映射信息。已引入总线和抽象定义(正式描述接口中的信号)等接口功能来支持不同级别的抽象。
IP-XACT 信息使用 XML 格式存储,其结构如图 5 所示,已简化为与我们的 SystemC 和 TLM 实现相关的区域。


IP-XACT 端口
IP-XACT 端口(图 6)可以在组件上指定为有线或事务类型。

有线类型端口定义可解析为简单位(如绑定到内置 SystemC 接口的端口)的端口。根据 IP-XACT 规范:“事务类型端口实现或使用可通过函数或方法实现的服务。”

事务端口 Transactional Port
事务类型端口是可用于为具有用户定义接口的端口指定 TLM 和 SystemC 信息的端口类型,如图 7 所示。

IP-XACT 开发目标是独立于语言,记录现有模型,处理连接并创建网表。在 IP-XACT 标准化时,TLM 和 SystemC 标准正在进行中,并未设想生成完整的 SystemC 标头或指定所有可能的方法/函数签名。以下部分介绍了尽管存在此缺陷,我们如何使用 IP-XACT 来表示所需的 SystemC 元数据。

IP-XACT 1685-2009 用于 TLM
端口示例
IP-XACT 允许我们使用事务端口机制来表示 SystemC 端口功能。
要指定名称为“my_port_name”的端口,transTypeDef typeName 将用于指定 sc_port,服务类型定义将用于指定 my_if 信息,maxConnections、minConnections 属性将用于指定 con_policy 和 max_bind。图 8 说明了生成的 IP-XACT XML:


IP-XACT 1685-2009 端口限制
IP-XACT 无法指定所需的所有可能方法和参数,例如以下使用 SystemC 固定数据类型的更复杂的 SystemC 构造:

无法指定 W、I、Q、O、N 参数。我们希望生成类似于图 10 的 IP-XACT,但图中的 XML 创建了错误的 IP-XACT。我们需要使用 IP-XACT 的供应商扩展机制,如图 11 所示。
除了无法指定参数之外,IP-XACT 文本还不允许为不同的 transTypeDef 信息(例如 sc_port 和 sc_export”)创建连接。此外,任何具有不同 serviceTypeDef 信息(例如 sc_signal_in_if 和 sc_signal_out_if)的事务端口都不允许连接。
不幸的是,这些是 SystemC 网表的标准连接。



TLM 套接字示例
图 12 说明了 TLM 套接字所需的 IP-XACT。供应商扩展表明此套接字的 BUS_WIDTH 为 16 并使用通用有效载荷。


IP-XACT 1685-2009 SystemC 解决方案摘要
为了解决前面强调的问题,我们建议采用以下方法:
  • 使用供应商扩展来存储 SystemC 接口参数信息。
  • 忽略与连接相关的记录限制,而是提供单独的供应商扩展 (VE),以支持以下套接字类型(端口、导出、套接字、简单套接字、多套接字和自定义)、宽度和协议信息。记录的限制需要替换为 2 个端口之间连接的新限制:
           1. 套接字类型必须兼容:
  • 启动器 sc_port 连接到目标 sc_port 或 sc_export(类型:端口或导出)
  • 启动器套接字连接到目标套接字(类型:套接字、简单套接字或多套接字)
            2. 宽度相同
  • 兼容协议
  • 协议类型必须相同
  • 有效载荷类型必须相同
  • 强制有效载荷扩展必须相同
上述信息和功能预计将在下一版 IP-XACT 中提供。

结论
如本文所述,可以使用一组供应商扩展和放宽/调整规则,在 IP-XACT 中表示 TLM 和 SystemC 元数据,从而提高 SoC 建模团队的工作效率,并与其他 SoC 设计学科进行更紧密的沟通。

软硬件协同设计 HW-SW Co-Design
欢迎后台留言,AI 客服全天在线。脱离物理硬件,开发测试和调试软件。基于虚拟原型的软硬件协同设计,提前一年实现产品上市创收,降低一半开发时间。
 最新文章