通用PAD是双向端口(inout),这就意味着每个通用PAD可以根据需要被配置成输入或输出,如图1所示

图1

ind是输入端口

do是输出端口

obe是输出使能信号

当obe为低电平时,PAD作为输入端口使用,三态门关闭,do高阻,片外数据通过ind传输到片内

当obe为高电平时,PAD作为输出端口使用,三态门打开,片内数据通过do传输到片外

VIP和IP通过一组PAD连接在一起,如图2所示

图2

实际上,一个复杂的SOC芯片包含数量众多的IP,每个IP可能需要通过少则十几个多则几十个PAD与片外进行数据交互,如果给每个IP分配独一无二的PAD,这样一来,整个SOC芯片的PAD是非常多的,这就造成芯片面积比较大,从而一块晶圆只能出产较少的芯片,这显然是不可接受的,必须采取有效的方案,在不影响芯片功能的情况下,尽可能减少PAD的数量,一个行之有效的策略是PAD的复用,即一个PAD可以供多个IP使用,通过配置,每次有且仅有一个IP占用某一个PAD。PCB板上各器件的摆放位置(布局)往往影响后期的走线(布线)、器件到PAD的延时以及整个系统的性能(最高时钟频率),因此,为了便于PCB工程师进行合理的布局,每个IP往往有多组PAD可供选择,同样的,通过配置,每个IP每次从多组PAD中选择一组。

图3是一个基于PAD的tesbench框架图

图3

框架图中所有的连接关系以及数据流关系都是基于PAD,为了便于画图,框架图中只有2个PAD、2个VIP和2个IP,每个PAD可供5个IP使用,且每个IP有2组PAD可选。实际上,中等规模以上的SOC芯片中有上百个PAD和多达几十个IP,但框架图的简易画法并不影响原理的描述。

在SOC侧,DEMUX从5个IP中选择1个,让PAD为其所占用,MUX从2组PAD中选择1组给IP使用,这里的DEMUX和MUX并不意味着,这两个模块的实现上就是DEMUX和MUX,这里使用DEMUX和MUX代替,有两个原因,一是这两个模块的工作原理等同于DEMUX和MUX,使用DEMUX和MUX代替使描述更加通用性,二是避免泄露具体的项目信息。DEMUX和MUX的SEL由专门的控制模块提供,同时,该控制模块还控制着PAD的上拉、下拉以及开漏等。pad model由FAB提供,不同工艺的pad model不一样,其并不是如同图那样只有obe、do和ind三个信号,而是一个比较复杂的模块,其中还包括上拉、下拉以及开漏等,对于这些内容,本文并不展开描述,在本文基于PAD连接关系以及数据流关系的描述中,只关注PAD的obe、do和ind三个信号。在case中,进入mian函数后,首先应该执行的操作是配置控制模块的寄存器,选择占用PAD的IP,另外可能需要配置PAD的上拉、下拉以及开漏等。

在testbench侧,由框架图可以看出,testbench侧和SOC侧是完全对称的,与SOC侧不同的是,testbench侧没有pad model,因为testbench不需要可综合,也不需要有具体的实现,所以obe、do以及ind三个信号足以描述基于PAD的连接关系和数据流关系。testbench侧DEMUX的SEL是谁提供的呢?会如同SOC侧一样,有一个专门的控制模块吗?答案是不需要的,但要求SEL以one-hot的形式提供,即SEL每次有且仅有一位为1,例如SEL为5'b00100,占用PAD的是第3个VIP,SEL为5'b10000,占用PAD的是第1个VIP。由于VIP和IP是一一对应的,也就是IP与其对应的VIP总是使用相同的PAD,VIP都有一个enable信号,每个PAD的所有VIP的enable信号拼接成SEL,当配置控制模块的寄存器时,不同配置值对应不同的IP,可以根据配置值将相应VIP的enable信号置1,也就是选择相应的VIP。同样的,对于MUX,VIP的enable信号拼接成SEL,哪一个enable信号为1,VIP就选择哪个PAD。

为了便于理解上述内容,本文提供一个实例,假如当前在验证IP1,其对应的VIP是VIP1,并且要求IP1使用PAD1,配置控制模块的寄存器,将IP1侧的DEMUX的SEL配置成001,自然VIP1侧的DEMUX的SEL为01000,VIP1侧的MUX的SEL为10,将IP1侧的MUX的SEL配置成0,如此一来,PAD1就被配置给IP1使用。

testbench侧实现的时候,可以将PAD声明成interface,如下所示

在testbench侧,DEMUX右侧连接的是一个PAD,而DEMUX本质上只是一个选通开关,那么DEMUX左侧也应该是PAD,只不过它们带上了IP及其端口信号,但这个差异仅仅体现在命名上。IP使用某一PAD指的是IP的端口信号需要使用该PAD,假设IP1的一位端口信号RX和IP2的一位端口信号TX分别有PAD1和PAD2可选,其中IP1.RX使用PAD1,IP2.TX使用PAD2,那么对于VIP1和VIP2侧的DEMUX,其左侧对应的PAD命名如下

PAD1_IP1_RX

PAD2_IP2_TX

将其声明为interface,如下

pad_if #(1) PAD1_IP1_RX

pad_if #(1) PAD2_IP2_TX

DEMUX的SEL[1]为PAD1_IP1_RX.en

MUX的SEL[0]为PAD1_IP1_RX.en

DEMUX的SEL[3]为PAD2_IP2_TX.en

MUX的SEL[1]为PAD2_IP2_TX.en

一个复杂的SOC芯片可能有几十个IP以及超过一百个PAD,每个IP有多个端口信号需要连接到PAD,每个PAD可以被多个IP使用,每个IP有多组PAD可选,如果要生成PAD1_IP1_RX的PAD,数量将是十分庞大的,显然一个个写出这些PAD是很困难的,而且极易出错,最好的办法是利用脚本生成,在如图4的表格中填写PAD的使用信息,然后利用脚本提取表格信息生成PAD。

图4

Interface是systemverilog的特性,尽管interface也是可综合的,但verilog hdl经过近四十年的洗礼、语法简单且普及程度高,IP模块大都以verilog hdl实现,因此IP的每个端口信号通常都是obe、do以及ind三个信号,如IP1.RX.ind、IP1_RX.do以及IP1_RX.obe,且在IP与PAD路由连接中,每个端口信号的三个信号也是分立连接的。

一种应用场景,假设IP1的RX是输入端口,IP2的TX是输出端口,且已经完成配置,IP1.RX使用PAD1,IP2.TX使用PAD2,首先,VIP1通过RX端口向IP1发送数据,在VIP1中,PAD1_IP1_RX.obe被拉高,且数据被给到PAD1_IP1_RX.do,在SOC中,IP1.obe被拉低,如果忽略VIP1和IP1的中间路由环节,可以认为PAD1_IP1_RX.do与IP1.ind直接连接。IP2通过TX端口向VIP2发送数据,IP2_TX.obe拉高,且数据被给到IP2_TX.do,同样的,如果忽略VIP2和IP2的中间路由环节,可以认为IP2_TX.do与PAD2_IP2_TX.ind直接连接。

实际上,IP模块的每个端口信号不总是有obe、do以及ind三个信号,如果是输入端口,do和obe是不需要的,而如果是输出端口,ind是不需要的,只有双向端口才需要obe、do以及ind三个信号。如果IP提供的是双向端口,但在SOC集成的时候,双向端口只作为输入端口或输出端口使用,obe、do以及ind三个信号中没有使用到的tie 0/1或者NC。

SOC芯片中VIP和IP之间的路由关系相关推荐

  1. IP,VIP,SCAN IP之间的关系是怎么样的呢?

    R6 IP 为主要的服务ip service IP VIP ,Scan IP 为虚拟ip,这是挂在服务ip下方的. 在RAC架构下,有两个node,VIP ,ScanIP就是虚拟的IP,可以随便起在任 ...

  2. SoC芯片中IP的基本功能介绍

    CPU 是整个SoC芯片的核心IP,可以运行操作系统和驱动软件,用于控制各个IP进行交互. DMA:直接存储读写,可以实现存储器到存储器的数据读写操作,或者IP接口到存储器的数据读写操作. Ext S ...

  3. 怎么验证SOC芯片中的IP模块?

    首先不是看block_guide,而是在schematic中查看IP模块的端口信号,可能有些输入端口是Tie 0/1或没连接的,有些输出端口是没连接的,因为SOC designer可能遗漏掉某些端口信 ...

  4. Altera 的SOC器件之将自定义的IP挂在ARM硬核下(通过avalon总线),实现arm核与IP之间的通信

    Altera 的SOC器件之将自定义的IP挂在ARM硬核下(通过avalon总线),实现arm核与IP之间的通信 软件: Quartus II 17.0 芯片: ALTERA Cyclone5 5CG ...

  5. 芯原图像信号处理器IP获得汽车功能安全标准ISO 26262认证

    通过该认证将加速芯原在电动汽车和自动驾驶等汽车领域的战略布局 2021年11月24日,中国上海--领先的芯片设计平台即服务(Silicon Platform as a Service,SiPaaS®) ...

  6. 海思芯片中VPSS的group和channel的概念.

    在芯片中VPSS可能只有一个或者两个,然后我们要去复用这个vpss,那么我们就申请一个VPSS号,这样好像有很多个VPSS,实际上我们用的都是同一个硬件VPSS,这里申请的VPSS号就是GROUP,海 ...

  7. 基于Matlab Simulink开发的嵌入式模型,模型可自动生成ccs工程代码,生成的代码可直接运行在主控芯片中

    主控芯片dsp tms320f28335,基于Matlab Simulink开发的嵌入式模型,模型可自动生成ccs工程代码,生成的代码可直接运行在主控芯片中. 该模型利用id=0的矢量控制,实现了永磁 ...

  8. 子网掩码,网络ID,IP之间关系

    要知道子网掩码,网络ID,IP之间关系,那么我们需要了解一些基础知识. 1.IP地址的种类 比如我电脑IPv4 地址的地址为192.168.126.1,为了让机器识别转化为8位二进制 11000000 ...

  9. 浅谈芯片中的Bootloader、Flash

    Bootloader.Flash浅谈 浅谈Bootloader: 浅谈Flash: 在文章 Bootloader详解,理解Bootloader看这篇就够了中介绍了在PC机上电后Bootloader的作 ...

最新文章

  1. 2018.12.5 区块链论文翻译
  2. Java实现复数Complex的加减乘除运算、取模、求幅角角度
  3. 如何在linux上压缩文件夹,如何在Linux中使用命令压缩文件和文件夹
  4. 基于springboot的高校失物招领系统毕业设计源码111731
  5. 在VScode上使用latex编辑pdf
  6. 新东方托福词汇(List 01 ~ List 05)
  7. c语言char储存字符串,在c语言中char型数据在内存中的储存形式为什么
  8. iOS 模拟器 获取位置 设置自定义位置
  9. linux查看web密码,fuel7.0 openstack webui 默认密码查看
  10. 程序员必备的5个自媒体工具
  11. Apache Curator客户端的使用
  12. Python爬虫的案例分析(梨视频下载)
  13. ASP.NET MVC 学习(一)--MVC的cshtml的介绍
  14. 简易计算器软件系统测试计划,Windows自带的计算器测试计划.doc
  15. 3D中的方位和角位移(7)
  16. wwid、uuid、lun、multipath、hba、udev总结
  17. 【小生作品展】库存管理软件
  18. 【LeetCode】234. Palindrome Linked List
  19. OFDM系统之利用L-STF和L-LTF序列进行同步
  20. linux查找二进制命令绝对路径,5个找出Linux中“二进制命令”描述和系统中位置的方法...

热门文章

  1. java怎么buildpath_eclipse怎么build path(构建路径)-eclipse中buildpath的方法 - 河东软件园...
  2. java计算机毕业设计高校教材征订管理系统(附源码、数据库)
  3. matlab仿真:FFT实现匹配滤波
  4. datax(datax官网)
  5. 表单元素的submit()方法和onsubmit事件
  6. 远程会议概述及其技术演变(电话会议,视频会议,网络会议)
  7. Jenkins: 使用Generic Webhook Trigger 插件配置webhook
  8. 时尚复古流行流苏元素在拨弦您的心
  9. Keepalive基础和配置
  10. TCP连接保活检测Keepalive