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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 20004|回复: 12

[求助] systemverilog里面怎么吧字符串和变量连起来?

[复制链接]
发表于 2012-2-24 15:20:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
每个对应的数i,找对应 string_$i.  譬如1,就找对应的string_1
现在有个instance,想要根据数字,显示instance里面对应的某个值。

   if ( var == i)
   $display(M_top.string_i)  ----这一行该怎么写?

的值有几百个,不会是要一个个对应写过去吧?有没有什么写法,可以用genvar 或者for
循环什么的写出来呢?
另外,string_i 没有可能让我改变定义成数组:string。
谢谢大家。
-
发表于 2012-2-24 17:30:05 | 显示全部楼层
$display("M_top.string_%d",i)这个可以打印i变量
发表于 2012-2-24 21:58:03 | 显示全部楼层
回复 1# zzczx


   好像叫$sformat or $sprintf, 你去查查,忘记了,最近在写RTL,把SV忘的差不多了
发表于 2012-2-27 15:14:19 | 显示全部楼层
比如你的instance个数不会超过3位数,你可以这样:
例如:i = 321 , 你要输出 “string_321”
1、定义三个string类型来存储三个1位数,即string p,q,s
2、分解int i,得到它的个十白位,如下:
   case(i%10): ///得到个位
     0:p = “0” ;
     1:p = “1” ;
     ...
     9:p = “9” ;
    endcase

   case((i/10)%10): ///得到十位
     0:q = “0” ;
     1:q = “1” ;
     ...
     9:q = “9” ;
    endcase

   case((i/100)%10): ///得到百位
     0:s = “0” ;
     1:s = “1” ;
     ...
     9:s = “9” ;
    endcase
3、合并字符串
   你想要的字符串 = {“string_”,s,q,p};

不知道这个答案你满不满意?
发表于 2012-2-27 20:29:43 | 显示全部楼层
回复 4# asic_wang


  使用systemverilog提供的宏连接符``就可以实现。
要不断使用`define更新宏名
 楼主| 发表于 2012-2-27 23:10:31 | 显示全部楼层
谢谢各位答复。
这个问题主要是为了在$snps_get_voltage里面xmr 跨界获取spice网表里的总线名。
可惜就算获取成功,但是$snps_get_voltage依然不认。可能是必须要求是直接给出的node名字吧。
发表于 2012-7-30 23:06:15 | 显示全部楼层
回复 4# asic_wang
这个答案解决了我的一个问题。多谢!
发表于 2012-7-31 23:42:21 | 显示全部楼层
字符串 放到 数组里面 ~
发表于 2013-5-29 15:53:38 | 显示全部楼层
asic_wang的回答很精彩!
 楼主| 发表于 2015-8-4 18:12:04 | 显示全部楼层
回复 4# asic_wang


   今天再看这个回复,还是收益匪浅啊。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2024-11-6 07:33 , Processed in 0.021105 second(s), 6 queries , Gzip On, Redis On.

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