【INOUT端口】
inout端口
- 1 使用场景
- 2 内部模块禁用INOUT
- 3 使用要点
- 4 验证要点
- 4 什么是芯片I/O PAD
inout端口–module端口除了input和output接口,还有就是较为常用的inout端口;
在具体Verilog设计中,inout端口用于实现双向数据传输,即可以作为输入,也可以作为输出;
具体综合成电路就是所谓的三态门;第三态就是高阻态(类似断开连接,不驱动信号线);
inout引脚:
输出模式:使能三态门,驱动外部信号;
输入模式:高阻态,读取外部信号,
1 使用场景
使用场景:主要使用在芯片的顶层引脚PIN,而极少用于内部模块间的信号连接。主要是为了减少芯片封装的引脚数量(QFP-64仅仅有64个PIN);
2 内部模块禁用INOUT
- 多驱动源易导致短路 ;I/O总线仲裁;
- 时序收敛:方向切换路径较难满足建立/保持时间; I/O PAD单元预制缓冲;
- 物理布局:标准单元库无专用三态门 ;I/O专用库支持;
3 使用要点
1.inout端口必须声明为wire类型;
2.使用assign语句赋值:inout端口的赋值必须使用assign语句,不能在always块中赋值;
3.使用专门三态表达式:根据控制信号来选择具体的值或者高阻态;
module top_chip (inout [7:0] GPIO, // 双向引脚input GPIO_DIR // 方向控制
);// 三态驱动器(仅连接I/O Pad)assign GPIO = GPIO_DIR ? internal_tx_data : 8'bz;// 输入接收器always @(posedge clk) begininternal_rx_data <= GPIO;end// 内部模块仅用单向信号core_module u_core (.data_in(internal_rx_data),.data_out(internal_tx_data),.dir(GPIO_DIR));
endmodule
4 验证要点
对SoC验证来说,面对顶层INOUT的端口,在进行验证时,需特别注意什么:
我们正在处理一个可能被用作INOUT端口的信号waddr.在验证中,对INOUT端口施加激励需要特别注意方向控制、冲突避免和采样时机。以下是针对这类端口验证的关键要点:
核心要点:
方向控制(Direction Control):
- 必须为INOUT端口定义一个方向控制信号(如dir_waddr),用于指示当前是输入还是输出模式。
- 当dir_waddr=1时,DUT驱动waddr(输出模式),验证平台应将其视为输入(即从DUT读取数据),且不能驱动该线。
- 当dir_waddr=0时,DUT不驱动waddr(输入模式),验证平台负责驱动该端口。
三态行为模拟(Tri-state Modeling):
在DUT输出模式下,验证平台必须释放对waddr总线的驱动(置为高阻态‘z’),否则会发生总线冲突(两个源同时驱动同一线路)。
在测试平台中使用条件驱动:仅在方向为输入模式时驱动数据。
冲突检测(Contention Detection):
在仿真中,如果检测到当dir_waddr=1(DUT输出模式)时测试平台仍然在驱动waddr(非‘z’),必须报错(使用断言或运行时检查)。
当dir_waddr=0且DUT意外驱动waddr(非‘z’),也应报错。
输入模式(Input Mode)激励:
当端口配置为输入模式(dir_waddr=0)时,测试平台需提供有效的激励数据(即驱动waddr为特定地址值)。
输出模式(Output Mode)采样:
当端口配置为输出模式(dir_waddr=1)时,测试平台应在恰当的时钟边沿采样waddr的值(比如时钟上升沿后若干时间)。
采样值与预期值比较(如通过DUT操作后的地址)。
测试场景:
测试平台应覆盖以下场景:
a. 输出模式:DUT成功驱动地址,测试平台读取正确。
b. 输入模式:测试平台驱动地址,DUT正确响应(比如根据地址访问内存,并在rdata上输出对应数据)。
c. 方向切换测试:在数据传输过程中切换方向,观察冲突处理和恢复机制。
d. 高阻态处理:当端口处于高阻态时,确保总线能被其他设备正确驱动。
4 什么是芯片I/O PAD
I/O PAD是ASIC后端设计的重要单元:用来将芯片中的逻辑信号电平转换为芯片外部的信号电平;
即I/O pad是与芯片外部PCB板上连接的;I/O PIN是与芯片内部逻辑相连的;
一般功能有:
- 驱动电路:驱动能力–2mA(芯片)–>64mA(PCB)
- 电平转换器:将逻辑电压:(0.8v~1.2V)–>外部接口电压(3.3v/5v);
- ESD保护电路结构:
- 焊盘:绑定连接封装引脚等;