桅杆的个人空间 https://blog.eetop.cn/zwg [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

关于systermverilog中使用define的尝试

热度 5已有 3005 次阅读| 2019-4-28 15:52 |系统分类:其他| 宏定义

最近写代码比较多去考虑复用性。
在写uvm里的class的时候,发现一改个名字,就要改挺多东西。
于是尝试了使用宏定义进行简化,代码如下,编译可以通过:

`define data_gen(num, width, name )  `define name_``num  name \
                                                        `define width_``num  width \
                                                        `define data_``num    `width_``num   `name_``num
`data_gen( 0,  [12:0],  test_name_0 )
`data_gen( 1,  [1:0],      test_name_1 )
. . . . . . 
logic `data_0;
logic `data_1;
这样在量初始化的时候,就可以比较统一了
`name_0 = 0;
`name_1 = 0;
使用uvm的automation 机制也不用很麻烦的改名字
`uvm_field_int( `name_0, UVM_ALL_ON )
`uvm_field_int( `name_1, UVM_ALL_ON )
当然也不影响单独使用
test_name_0 = 11;
test_name_1 = 2;
只是这种写法感觉不规范,查了一下有说define不能嵌套的,所以应该有未知的bug存在。
而且定义1bit的数据要写成 [0:0] 来定义,虽然编译仿真过了,总觉得哪怪怪的。
有什么错误请大家多多指教,有别的复用好方法希望能分享一下。




点赞

全部作者的其他最新日志

发表评论 评论 (6 个评论)

回复 桅杆 2019-4-29 14:32
2019/4/29 因为手打有点错误,修改了一下代码
回复 桅杆 2019-5-7 10:52
关于1bit要写成[0:0]的问题,最近找到了一个替代方案,换成 ·· 可以被识别成空格。
回复 精武英雄 2019-5-24 16:27
define无法嵌套的问题该怎么解决呢?
回复 hover99 2019-5-27 20:30
用脚本生成其实不是更方便
回复 桅杆 2019-5-28 08:59
hover99: 用脚本生成其实不是更方便
我也发现了
回复 桅杆 2019-5-28 09:01
精武英雄: define无法嵌套的问题该怎么解决呢?
从尝试结果看是可以嵌套的,你看上面的例子,就是define了一个相当于denfine了几个。

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 4

    粉丝
  • 5

    好友
  • 0

    获赞
  • 12

    评论
  • 633

    访问数

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

GMT+8, 2024-11-5 13:23 , Processed in 0.015089 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部