PIN/PAD Design in SoC - 3 (待续)

3.IO Controller
这部分不复杂,只是繁琐,实现的时候别漏了什么就好。

3.1 IO Multiplexing
IO复用主要含有正常功能复用和测试模式复用两大类。功能复用可以分为静态复用和动态复用。
静态复用顾名思义,是在一个相对大尺度的时间段内一个IO上的功能是不变的,一般通过软件配置寄存器、封装、strappin实现。
动态复用的时间尺度相对小一点,一般需要做点硬件逻辑自动实现多种功能在一个IO上的切换。比如同一组IO既做存储器接口也做显示接口,当播放视频的时候,需要从存储器中输入数据,然后把这些数据再输出到显示设备上,这种应用场景下这组IO一会儿做输入给存储器,一会儿做输出给显示设备,为了防止打架,需要处理好切换过程。
测试模式复用一般静态复用就够了。

3.2 GPIO Implementation
消费类芯片竞争激烈,如何用更小的成本实现更多的功能是个很大的挑战。具体到IO上,当然希望所有的数字IO都能在其正常功能之外,还能被软件自由的控制以扩充功能。我们称之为通用IO。GPIO的功能包括,IO方向的控制、输出值的控制、外部状态的输入、片外中断接收(沿触发、电平触发、抗毛刺等)、开漏模拟等等。

3.3 Strap Pin Implementation
strap pin是个非常有趣的功能。可以有两种实现方式,一种是用上电复位驱动一个latch来捕获strappin上的设定值;另一种是用一个free running的clock来寄存strap pin上的值。strappin的应用主要用于指示某种功能是否被激活,而不占用额外的pin。

3.4 IO Status Initialization
IO在上电时的状态非常重要。最大的原则就是不对外部世界产生干扰,通常我们会控制上电时IO处于输入状态。当然特殊情况例外。另外一个考虑就是上电时不要产生较大的电流。还要考虑IO内部的上下拉电阻是否需要默认使能。还有就是IO上电和core上电的顺序,以及断电的顺序。

3.5 Design for Flow
需要为时钟定义点创建buffer。提供case analysis的说明文档。为scan hookup点创建buffer。
可能每个design house的做法不同,有些不在IO这个模块里做。

3.6 Design for Test
前面提到了一些。还有就是内部IP的测试,通常需要把这些IP的所有pin都在某种测试模式下引出到芯片IO上。还需要考虑这些IP在测试模式下的供电方案,通常需要做个mux,以区分功能和测试。最大的原则考虑是节省测试成本,减少测试时间,可以考虑把多种测试模式合并为一个。

很繁琐吧?希望没漏掉什么。

待续,敬请期待!

发布了48 篇原创文章 · 获赞 7 · 访问量 5万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章