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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
12
返回列表 发新帖
楼主: cmgit

[讨论] 奇葩问题:SV里怎么简化定义多bit信号的代码长度

[复制链接]
发表于 2015-10-31 06:28:38 | 显示全部楼层
interface test_ch # (parameter USER_BIT = 11);

    logic    [USER_BIT - 1 : 0] user_array;

    modport ch_out
    (
        input  user_array
    );
    modport ch_in
    (
        output user_array
    );

endinterface : test_ch

例化:
test_ch # (.USER_BIT(12 )) test_aaa();

传递时用 test_aaa

使用时: 用 test_aaa.user_array[n];
发表于 2015-10-31 06:30:06 | 显示全部楼层
interface test_ch # (parameter USER_BIT = 11);

    logic    [USER_BIT - 1 : 0] user_array;

    modport ch_out
    (
        input  user_array
    );
    modport ch_in
    (
        output user_array
    );

endinterface : test_ch

例化:
test_ch # (.USER_BIT(12 )) test_aaa();

传递:
test_aaa

使用时:
test_aaa.user_array[n]
发表于 2015-10-31 12:53:01 | 显示全部楼层
interface test_ch #
(
        parameter DP_BIT = 11
);

    logic    [DP_BIT - 1 : 0] user_array;

    modport core_to_app
    (
        input  user_array
    );
    modport app_to_core
    (
        output user_array
    );

endinterface : test_ch

例化:
test_ch #(.DP_BIT(12)) test_aaa();

模块之间传递:
test_aaa

使用:
test_aaa.user_array[n]
发表于 2015-10-31 12:59:09 | 显示全部楼层
回复 5# cmgit


   interface test_if #
(
        parameter DP_BIT_WIDTH = 11
);

    logic    [DP_BIT_WIDTH - 1 : 0] user_array;

    modport core_to_app
    (
        input  user_array
    );
    modport app_to_core
    (
        output user_array
    );

endinterface : test_if

例化:


test_if # (.DP_BIT_WIDTH (15)) test_aaa();


模块之间传递:
test_aaa
使用:


test_aaa.user_array[n]


可以看看interface 如果使用
发表于 2015-10-31 13:04:04 | 显示全部楼层
回复 5# cmgit

回复 5# cmgit




interface test_if #
(
        parameter DP_BIT_WIDTH = 11
);

    logic    [DP_BIT_WIDTH - 1 : 0] user_array;

    modport core_to_app
    (
        input  user_array
    );
    modport app_to_core
    (
        output user_array
    );

endinterface : test_if

例化:


test_if # (.DP_BIT_WIDTH (15)) test_aaa();


模块之间传递:
test_aaa
使用:


test_aaa.user_array[n]

查看一下interface 如果使用,应该可以
发表于 2015-10-31 13:17:59 | 显示全部楼层
发帖子,总是不成功,
例化:dp_ram_if #(.DP_ADDR_WIDTH(15)) test_aaa();

你可以直接使用其中的 test_aaa.user_addra[n] , 来实现
 楼主| 发表于 2015-11-3 10:36:43 | 显示全部楼层




    谢谢您!最近好像发帖子要审核,发成功了也得半天才能刷新出来,不知道是为什么。
    我理解您的意思是使用带参数的interface,例化时可以使用不同的位宽,从而得到不同宽度的数组。
    但是我这边是不能用数组的,包括interface里面的数组,只能用单bit定义的信号。
    即,test_aaa.sig_array[1]是不能用的。
    原因在于这些信号我要用在一个automatic的task中,这些信号作为task的ref类型变量。
    task定义:task automatic test_task(ref logic a);
    task实例化时,test_task(.a(test_aaa.sig_array[1]))是不允许的,ref信号只要有"[n]"就会报错,所以我这边不仅是要实现实例化时能够定义信号位宽,而且这些信号是以单bit形式定义,例如不能定义logic [n:0] sig_array这种形式,只能定义成logic sig_array_0_, sig_array_1_,sig_array_2_ ......
    不知道我有没有表述清楚。
发表于 2015-11-4 08:46:24 | 显示全部楼层
回复 1# cmgit


    task里面进行generate可以么?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

×

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

GMT+8, 2024-4-19 21:19 , Processed in 0.023491 second(s), 5 queries , Gzip On, Redis On.

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