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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2221|回复: 9

[讨论] systemVerilog中流操作符的使用

[复制链接]
发表于 2020-6-18 22:02:09 | 显示全部楼层 |阅读模式

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

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

x
bit [7:0] pld[];
{<< byte {pld, pdu[1], pdu[0]}} = {<< byte {pdu}};
运行后发行,这种写法会改变pdu[1]和pdu[0]的值,导致错误,而如果改成
bit [7:0] pld[];
bit [15:0] header;

{<< byte {pld, header}} = {<< byte {pdu}};

这样就可以,什么原因呢?
发表于 2020-6-19 09:25:15 | 显示全部楼层
a = a 你说会不会变了。。有的语言会报错,有的会读取旧的覆盖。
 楼主| 发表于 2020-6-19 19:11:34 | 显示全部楼层


A1985 发表于 2020-6-19 09:25
a = a 你说会不会变了。。有的语言会报错,有的会读取旧的覆盖。


覆盖应该也是原来的值啊,不会发生变化才对
发表于 2020-6-20 09:14:05 | 显示全部楼层
你这个写法是verilog的写法吧,软件写法中间不是该有个temp吗,具体可参考下c中两个值交换
 楼主| 发表于 2020-6-20 20:09:05 | 显示全部楼层


zhuyi1234567899 发表于 2020-6-20 09:14
你这个写法是verilog的写法吧,软件写法中间不是该有个temp吗,具体可参考下c中两个值交换 ...


我这个是systemverilog,我就是想获得pld的值,不想改变pdu数组的值,这不是交换。不知道为什么这样会出问题

发表于 2020-6-21 10:23:08 | 显示全部楼层
你的pdu怎么声明的也没写。
 楼主| 发表于 2020-6-21 10:44:20 | 显示全部楼层


年轻的韭菜 发表于 2020-6-21 10:23
你的pdu怎么声明的也没写。


pdu是相当于一个全局变量一样class pkt extends uvm_object;
      ...
      rand bit [7:0] pdu[];

      virtual function get_pld();
            bit [7:0] pld[];

            {<< byte {pld, pdu[1], pdu[0]}} = {<<byte {pdu}};
            return pld;
      endfunction
endcalss
我开始是这样写的,通过调用get_pld()函数从pdu获得pld,但是发现pdu[1]和pdu[0]的值会被改变
发表于 2020-7-15 16:21:37 | 显示全部楼层
pdu[1] 和 pdu[0] 当然会变了。你可以这样理解,等号右边的 {<< byte {pdu}} 意思就是打包 成这样 {pud[x],pud[x-1]....pdu[1],pud[0]}  , 等号左边的  {<< byte {pld, pdu[1], pdu[0]}} 打包成这样 {pdu[0],pud[1],pld[x],pld[x-1]....pld[1],pld[0]}      右边给左边赋值,pdu[1],pdu[0]的位置都变了。当然会改变了。楼主你对 流操作符 >>  <<理解偏差了。
 楼主| 发表于 2020-7-17 23:14:06 | 显示全部楼层


年轻的韭菜 发表于 2020-7-15 16:21
pdu[1] 和 pdu[0] 当然会变了。你可以这样理解,等号右边的 {


谢谢,是这样的
 楼主| 发表于 2020-7-17 23:44:47 | 显示全部楼层


年轻的韭菜 发表于 2020-7-15 16:21
pdu[1] 和 pdu[0] 当然会变了。你可以这样理解,等号右边的 {


您好,还问你一个问题:std::randomize(state) with {state inside { SCANNING, ADVERTISING};};
这种写法与直接给state赋值有什么区别啊, 为什么在另外一个task中wait(state != IDLE)检测不到state值得变化,而直接对state赋值的就能检测到?

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

本版积分规则

关闭

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

×

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

GMT+8, 2024-4-27 01:50 , Processed in 0.037607 second(s), 6 queries , Gzip On, Redis On.

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