在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 9528|回复: 44

[求助] 不知道如何在设计中例化io_pad

[复制链接]
发表于 2021-11-17 11:20:42 | 显示全部楼层 |阅读模式
100资产
大神们,求助,菜鸡一枚,完全不懂怎么给设计填加io_pad ,只知道要例化,但我不知道该怎么对应,我看了io的PDF资料,下面是我随便找的一个inputpad和outputpad,希望大神可以指点我该怎么和我的端口例化在一起。
image.png image.png
下面是我设计的端口
input wire clk_main_in,
input wire sd_in,
input wire rst_n,
input wire [1:0] cfg_curr_mode,
output reg sd_out,
output reg [5:0] rpt_rz_err,
output reg PWM_R,
output reg PWM_G,
output reg PWM_B,
output reg [1:0] curr_mode_out

求大神指点,我这些端口和pad的那些引脚怎么例化在一起

最佳答案

查看完整内容

假定你的模块叫xxx,并且所有的port都要接到pad上,可以参考下面的代码。 你的代码里信号都是单向的,input或output,因此IE和OEN接成定值即可。针对input,I任意,OEN为1,此时I不起作用。针对output,C不需要使用。 module xxx_wrapper( input wire pad_clk_main_in , input wire pad_sd_in , input wire pad_rst_n , input wire [1:0] pad_cfg_curr_mode, inout wire ...
发表于 2021-11-17 11:20:43 | 显示全部楼层
假定你的模块叫xxx,并且所有的port都要接到pad上,可以参考下面的代码。

你的代码里信号都是单向的,input或output,因此IE和OEN接成定值即可。针对input,I任意,OEN为1,此时I不起作用。针对output,C不需要使用。

module xxx_wrapper(
    input wire       pad_clk_main_in  ,
    input wire       pad_sd_in        ,
    input wire       pad_rst_n        ,
    input wire [1:0] pad_cfg_curr_mode,
    inout wire       pad_sd_out       ,
    inout wire [5:0] pad_rpt_rz_err   ,
    inout wire       pad_PWM_R        ,
    inout wire       pad_PWM_G        ,
    inout wire       pad_PWM_B        ,
    inout wire [1:0] pad_curr_mode_out
);

wire       pad_clk_main_in  ;
wire       pad_sd_in        ;
wire       pad_rst_n        ;
wire [1:0] pad_cfg_curr_mode;
wire       pad_sd_out       ;
wire [5:0] pad_rpt_rz_err   ;
wire       pad_PWM_R        ;
wire       pad_PWM_G        ;
wire       pad_PWM_B        ;
wire [1:0] pad_curr_mode_out;

xxx u_xxx(
    .clk_main_in  (clk_main_in  ),
    .sd_in        (sd_in        ),
    .rst_n        (rst_n        ),
    .cfg_curr_mode(cfg_curr_mode),
    .sd_out       (sd_out       ),
    .rpt_rz_err   (rpt_rz_err   ),
    .PWM_R        (PWM_R        ),
    .PWM_G        (PWM_G        ),
    .PWM_B        (PWM_B        ),
    .curr_mode_out(curr_mode_out)
);

// input
PBSDxR u_pad_00(.IE(1'b1),.C(clk_main_in     ),.I(1'b0),.OEN(1'b1),.PAD(pad_clk_main_in     ));
PBSDxR u_pad_01(.IE(1'b1),.C(sd_in           ),.I(1'b0),.OEN(1'b1),.PAD(pad_sd_in           ));
PBSDxR u_pad_02(.IE(1'b1),.C(rst_n           ),.I(1'b0),.OEN(1'b1),.PAD(pad_rst_n           ));
PBSDxR u_pad_03(.IE(1'b1),.C(cfg_curr_mode[0]),.I(1'b0),.OEN(1'b1),.PAD(pad_cfg_curr_mode[0]));
PBSDxR u_pad_04(.IE(1'b1),.C(cfg_curr_mode[1]),.I(1'b0),.OEN(1'b1),.PAD(pad_cfg_curr_mode[1]));
// output
PBSDxR u_pad_05(.IE(1'b0),.C(),.I(sd_out          ),.OEN(1'b0),.PAD(pad_sd_out          ));
PBSDxR u_pad_06(.IE(1'b0),.C(),.I(rpt_rz_err[0]   ),.OEN(1'b0),.PAD(pad_rpt_rz_err[0]   ));
PBSDxR u_pad_07(.IE(1'b0),.C(),.I(rpt_rz_err[1]   ),.OEN(1'b0),.PAD(pad_rpt_rz_err[1]   ));
PBSDxR u_pad_08(.IE(1'b0),.C(),.I(rpt_rz_err[2]   ),.OEN(1'b0),.PAD(pad_rpt_rz_err[2]   ));
PBSDxR u_pad_09(.IE(1'b0),.C(),.I(rpt_rz_err[3]   ),.OEN(1'b0),.PAD(pad_rpt_rz_err[3]   ));
PBSDxR u_pad_10(.IE(1'b0),.C(),.I(rpt_rz_err[4]   ),.OEN(1'b0),.PAD(pad_rpt_rz_err[4]   ));
PBSDxR u_pad_11(.IE(1'b0),.C(),.I(rpt_rz_err[5]   ),.OEN(1'b0),.PAD(pad_rpt_rz_err[5]   ));
PBSDxR u_pad_12(.IE(1'b0),.C(),.I(PWM_R           ),.OEN(1'b0),.PAD(pad_PWM_R           ));
PBSDxR u_pad_13(.IE(1'b0),.C(),.I(PWM_G           ),.OEN(1'b0),.PAD(pad_PWM_G           ));
PBSDxR u_pad_14(.IE(1'b0),.C(),.I(PWM_B           ),.OEN(1'b0),.PAD(pad_PWM_B           ));
PBSDxR u_pad_15(.IE(1'b0),.C(),.I(curr_mode_out[0]),.OEN(1'b0),.PAD(pad_curr_mode_out[0]));
PBSDxR u_pad_16(.IE(1'b0),.C(),.I(curr_mode_out[1]),.OEN(1'b0),.PAD(pad_curr_mode_out[1]));

endmodule

点评

赞一个  发表于 2023-4-20 09:29
 楼主| 发表于 2021-11-18 13:54:26 | 显示全部楼层
本帖最后由 郑伟 于 2021-11-18 13:56 编辑


coolbear2021 发表于 2021-11-17 11:20
假定你的模块叫xxx,并且所有的port都要接到pad上,可以参考下面的代码。

你的代码里信号都是单向的,inpu ...


大神,那个inout是您写错了吧,是output吧,xxx u_xxx()是我设计的例化名,用不用加工艺库带的pad文件的例化名呀

点评

赞  发表于 2023-4-20 09:27
发表于 2021-11-18 15:50:19 | 显示全部楼层


郑伟 发表于 2021-11-18 13:54
大神,那个inout是您写错了吧,是output吧,xxx u_xxx()是我设计的例化名,用不用加工艺库带的pad文件的例 ...


这个要看情况,目前例化的那个IO,本身支持双向的,因此那个IO的PAD pin是inout类型的,一般在wrapper里也定义成inout的,虽然input功能实际上是不会用的。
如果有专门的支持输出的io,那时PAD是output类型的,wrapper时就可以定义成output了。
 楼主| 发表于 2021-11-19 13:17:20 | 显示全部楼层


coolbear2021 发表于 2021-11-18 15:50
这个要看情况,目前例化的那个IO,本身支持双向的,因此那个IO的PAD pin是inout类型的,一般在wrapper里 ...


谢谢大神
 楼主| 发表于 2021-11-22 10:04:01 | 显示全部楼层


coolbear2021 发表于 2021-11-18 15:50
这个要看情况,目前例化的那个IO,本身支持双向的,因此那个IO的PAD pin是inout类型的,一般在wrapper里 ...


大神,我那个io库的v文件名是SPC011D3RP.v,您写的例化input的前面写上SPC011D3RP u_SPC011D3RP()这个例化名呀,把下面那些pad包起来
发表于 2021-11-22 10:38:07 | 显示全部楼层


郑伟 发表于 2021-11-22 10:04
大神,我那个io库的v文件名是SPC011D3RP.v,您写的例化input的前面写上SPC011D3RP u_SPC011D3RP()这个例 ...


SPC011D3RP.v,这个是要加到仿真的文件列表里的,比如vcs xxx.v SPC011D3RP.v,xxx是你的module名称,这样工具就能找到IO的module定义了。
IO例化一般是要包成一个module的,方便管理,我写的那个只是个例子,至于IO的module名称,这个就随意了,比如就是module pad,不一定要和io库的名称一致。
 楼主| 发表于 2021-11-22 11:01:34 | 显示全部楼层


coolbear2021 发表于 2021-11-22 10:38
SPC011D3RP.v,这个是要加到仿真的文件列表里的,比如vcs xxx.v SPC011D3RP.v,xxx是你的module名称,这 ...


大神,我现在就是想把您写的这个xxx_wrapper module包成一个单独的顶层v文件,那这样是需要写一个pad的例化名吧,和上面xxx u_xxx()一样吧,不然读这个顶层文件应该读不出来底层包含的pad的v文件吧
发表于 2021-11-22 11:40:23 | 显示全部楼层


郑伟 发表于 2021-11-22 11:01
大神,我现在就是想把您写的这个xxx_wrapper module包成一个单独的顶层v文件,那这样是需要写一个pad的例 ...


可以考虑如下结构与module命名,这个没啥固定的要求,都是随意的,仅供参考,重点是方便集中管理与后面项目继承。你说的"不然读这个顶层文件应该读不出来底层包含的pad的v文件吧",这个要是把对应的文件与目录加到仿真器的rtl文件例表以及仿真文件列表里,工具不是靠module名称与例化名称来找对应文件的。
以下面的结构,rtl列表中至少要包括chip_top.v digital_top.v pad_top.v xxx.v(你的设计文件),仿真文件列表至少要包括SPC011D3RP.v。

chip_top.v

module chip_top(...);  // chip_top作为design的最顶层module名称

digital_top u_digital_top(...); // digital_top里包括除io外的所有设计的例化,包括你的设计,sram例化之类的

pad_top u_pad_top(...);// pad_top里包括所有的io例化

endmodule

digital_top.v
module digital_top(...);

xxx u_xxx(...); // 你的设计
......

endmodule

pad_top.v
modue pad_top(...);

PBSDxR u_pad_00(...); // io例化
.......

endmodule




 楼主| 发表于 2021-11-22 11:52:31 | 显示全部楼层


coolbear2021 发表于 2021-11-22 11:40
可以考虑如下结构与module命名,这个没啥固定的要求,都是随意的,仅供参考,重点是方便集中管理与后面项 ...


谢谢大神
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

×

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-5-2 14:46 , Processed in 0.036369 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表