首页 > 系统相关 >sv的LSB 使用+SV的protect类型+RAL模型的lock原因+C语言结构体中的冒号用法+uvm版本在退出机制的区别+sv的random的seed生效问题+verdi的reserve的debu

sv的LSB 使用+SV的protect类型+RAL模型的lock原因+C语言结构体中的冒号用法+uvm版本在退出机制的区别+sv的random的seed生效问题+verdi的reserve的debu

时间:2023-10-06 12:34:34浏览次数:43  
标签:seq process random sv pData int seed data

sv的LSB 使用

https://blog.csdn.net/gsjthxy/article/details/90722378
等价关系

[LSB+:STEP] = [LSB+STEP:LSB]

伪代码:

bit [1023:0] mem;
bit [7:0] data;
j = 0..100
mem[j*8 +: 8] = data;
// [7:0],[15:8], [23:16]

SV的protect类型

https://blog.csdn.net/qq_37573794/article/details/117530044
local — 限制只在本class中使用,子类以及外部类中不可调用
protected — 限制只在本class以及子类中使用,外部类不可调用

RAL模型的lock原因

https://blog.csdn.net/liuwei848/article/details/103576767
必须在root block中调用lock_model,这样整个模型才算建立完整,因为在建立模型的时候所有寄存器的地址均是相对地址,在进行前门访问,是以绝对地址进行的,因此lock_model帮助我们得到所有寄存器的绝对地址。
如下源码相关:

function void uvm_reg_block::Xinit_address_mapsX();
   foreach (maps[map_]) begin
      uvm_reg_map map = map_;
      map.Xinit_address_mapX();
   end
      //map.Xverify_map_configX();
endfunction

C语言结构体中的冒号用法

https://blog.csdn.net/yihongxiaoxiang/article/details/50327587

struct  bit_struct{
    int  bit1:3;
    int  bit2:5;
    int  bit3:7;
}data;

结构体成员变量后面的冒号表示位域,表示存储空间不需要完整的字节,只需要几个bit。

#include <stdio.h>
#define  SYS_OK         0
#define  SYS_FAILED     1
typedef int SYS_TYPE;

SYS_TYPE main()
{       
    struct bit_st
    {
        int a:3; 
        int  :0; 
      int b:2; 
      int c:5; 
      int d:2; 
      int  :2; 
      int e:3; 
    }data, *pData;

    data.a = 1;
    data.b = 2; 
    data.c = 3; 
    data.d = 2; 
    data.e = 4;
    printf("a = %d, b = %d, c = %d, d = %d, e = %d\r\n",
            data.a, data.b, data.c, data.d, data.e); 

    pData = &data;
    pData->a = 3;
    pData->b &= 1;
    pData->c |= 5;
    pData->d ^= 1;
    pData->e = 5;
    printf("a = %d, b = %d, c = %d, d = %d, e = %d\r\n",
            pData->a, pData->b, pData->c, pData->d, pData->e); 
		printf("sizeof data:%ld\n", sizeof(data));
    return SYS_OK;
}

int占32位,第二个成员 int :0是后面的3~31全为0。整个结构体占8个字节,也就是两个int型变量,而int :2; 是占用两个空的位置,两个bit。输出值是8。

   struct bit_st
    {
        int a:3; 
        int  :0; 
      long int b:2; 
      long int c:5; 
      long int d:2; 
      long int:30; 
      long int e:3; 
    }data, *pData;

以上的sizeof大小是16。

uvm版本在退出机制的区别

//uvm1.1
component里直接调用
set_report_max_quit_count(8);

// uvm1.2
uvm_report_server server = uvm_report_server::set_server()
server.set_max_quit_count(8);

sv的random的seed生效问题

http://ee.mweda.com/ask/342266.html

1、随机系统函数包括$random(seed), $urandom(seed), $urandom_range(min,max), 
$srandom(seed),其中$random(seed)是verilog2001的语法,后面3个是sv的语法。
2、$random与$urandom除了有无符号的区别还有其他不同。sv语法中有提到线程稳定性的区别。
3、$random如果不带种子会使用系统缺省的种子产生随机数,这可能是每次不变的原因,
你带上种子参数试试看是是否改变。
4、$urandom不带种子也可以随机,我猜测可能是因为verilog与sv对其处理机制不一样,
且也不能排除不同编译仿真器对其理解的不同而导致的。
● testbench的 +ntb_random_seed 变量相关。这个option的值相当于所有random var的种子,
控制了$urandom的随机。
● $random必须通过$random(seed)的方式指定seed,seed不同则得到的随机数不同。
使用simv+ntb_random_seed_automatic没有效果。
● $urandom可以通过$urandom(seed)的方式指定seed,此时:
simv+ntb_random_seed_automatic不起作用。
● $urandom也可以不指定seed,通过simv+ntb_random_seed_automatic得到随机的seed值,
此时也可以得到随机数。
● 没有+ntb_random_seed_automatic选项,则默认seed为1,$urandom也拿到相同的值

verdi的reserve的debug

reverse的debug似乎是不能将波形也reverse掉。
reserve需要额外的编译选项,然后在打开verdi后,tools/perxxx,勾上reverse的开关。
https://zhuanlan.zhihu.com/p/401940992

deubg_access+reverse

vcs禁用打印屏幕输出

仿真时候的选项,加上以后log就只打印在-l指定的文件中。但是该选项使用后,仿真使用的-gui/-verdi调试功能将会受限,认为vcs版本小于2012

+vcs+nostdout

清空seqr中的seq

当seq.start()已经调用,但是被kill掉,seqr需要清空。
https://blog.csdn.net/lbt_dvshare/article/details/80594234

seqr.stop_sequences();

sv使用process开启进程和结束

initial begin
  	process proc

  	fork
      	begin
          	proc = process::self();
          	xxxx_run();
				end
  	join_none

  	#5;
  	proc.kill();

end

标签:seq,process,random,sv,pData,int,seed,data
From: https://www.cnblogs.com/bai2022/p/17744409.html

相关文章

  • 记一次愚蠢的svg使用。。。
    问题描述参考了老师的写的优雅使用iconfontvue引入iconfont的优雅实践确实很优雅,感谢老师,但是我脑残把use里的xlink:href写成xlink-href,导致我一直拿不到iconTT经常因为这点小错误就浪费一下午,痛定思痛记一下我的代码代码vue.config.js...chainWebpack(config){co......
  • Windows 10 VS2015旧项目缺少MFC42D.DLL, MFCD42D.DLL, mfco42d.dll, MSVCP60D.DLL和M
    文章目录问题解决参考问题在Windows10中的VS2015找开旧项目,由于缺少MFC42D.DLL,MFCD42D.DLL,mfco42d.dll,MSVCP60D.DLL和MSVCRTD.DLL,无法调试并运行程序,进行了解决。解决下载MFC42D.DLL,MFCD42D.DLL,mfco42d.dll,MSVCP60D.DLL和MSVCRTD.DLL这些DLL文件,旧系统中是可以放在......
  • chisel安装和使用+联合体union的tagged属性+sv读取文件和显示+sv获取系统时间+vcs编译
    chisel安装和使用sbt:scalabuildtool,是scala的默认构建工具,配置文件是build.sbt。mill:一个新的java/scala构建工具,运行较快,与sbt可以共存,配置文件是build.sc。chisel的安装可以参考这篇文章。安装过程务必联网,而没有联网情况下的安装,按照其它的说明,如移动缓存文件等,并无法正常......
  • 感性理解梯度下降 GD、随机梯度下降 SGD 和 SVRG
    MLTheory太魔怔了!!!!!从微积分课上我们学到对一个\(\mathscrC^2\)函数,其二阶泰勒展开的皮亚诺余项形式\[f(\bmw')=f(\bmw)+\langle\nablaf(\bmw),\bmw'-\bmw\rangle+o(\|\bmw'-\bmw\|)\]这说明只要\(\bmw'\)和\(\bmw\)挨得足够接近,我们就可......
  • 2023-10-05 "code":"40006",msg"."Insufficient Permissions", ISV权限不
    1.登录支付宝开放平台https://open.alipay.com/2.找到控制台==》产品绑定,如下图: 我这里虽然已经绑定了,但是还没签约,意思就是还没开通app支付;3.点击去开通。 ......
  • asp.net mvc Core 网页错误提示:An unhandled exception occurred while processing th
    网页错误提示:Anunhandledexceptionoccurredwhileprocessingtherequest.InvalidOperationException:Theentitytype'IdentityUserLogin<string>'requiresaprimarykeytobedefined.Ifyouintendedtouseakeylessentitytype,call'Has......
  • 基于HSV空间的彩色图像分割技术
    1.引言每当我们看到图像时,它通常都是由各种元素和目标组成的。在某些情况下,我们可能会想要从图像中提取某个特定的对象,大家会怎么做?首先我们会想到的是进行crop相关的操作,这在某种程度上是可行的,但是这通常也会有一些不相关的像素会被包括在内,我确信大多情况下我们不希望这样。事......
  • Ubuntu 安装谷歌浏览器报错解决:Errors were encountered while processing
    Ubuntu安装谷歌浏览器报错解决parallels@ubuntu-linux-22-04-02-desktop:~/snap/firefox/common/Downloads$sudodpkg-igoogle-chrome-stable_current_amd64.deb[sudo]passwordforparallels:dpkg:errorprocessingarchivegoogle-chrome-stable_current_amd64.deb(......
  • SVG标签
    SVG有一些预定义的形状元素矩形<rect>圆形<circle>椭圆<ellipse>线<line>折线<polyline>多边形<polygon>路径<path>矩形-<rect><svgwidth="400"height="180"><rectx="50"y="2......
  • ImageNet数据集(ILSVRC2012)分析
    ImageNet数据集(ILSVRC2012)获取方法:首先,需要有一个edu的邮箱,因为该数据集只提供给高校科研工作者。然后,使用edu邮箱注册一个账号,获得的邮件通知,需要验证以后登录,进入下载链接即可下载。官网下载链接:https://image-net.org/download-images.php本次下载内容:ImageNetLarge-scaleV......