#VCS# 关于VCS 编译选项:+vcs+initreg+random的理解(3)回头是岸

这篇具有很好参考价值的文章主要介绍了#VCS# 关于VCS 编译选项:+vcs+initreg+random的理解(3)回头是岸。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前段时间,有时间整理了一下关于+vcs+initreg+random 编译和仿真选项的心得,草草写了两篇笔记。自觉得对该选项已经掌握了,后来实际应用中再次触及到了该知识点,不想又卡壳了。今天,继续追加一篇,希望对大家能有所帮助!不正之处,请指正。

+vcs+initreg+random,VCS 杂记,+vcs+initreg+x

对于上述规则rule#2和 rule#3, 并没有什么可值得推敲的地方。今天我们着重看第一点,rule#1。

代码:

`timescale 1ps/1ps
module tb_top;

wire aa,bb,cc,dd;

reg clk;
reg rst_n;

wire [7:0] t_i, t_j, t_k, t_l_a, t_l_b, t_l_c;
wire [1:0] t_bit_a, t_bit_b;
wire [7:0] t_byte;
wire [63:0] t_time_value;
wire [127:0] t_r_time_value;

wire [3:0] data_out0;
wire [3:0] data_out1;

reg [3:0] data_in0;
reg [3:0] data_in1;

bit [1:0] bit_a, bit_b; 

integer age, score;

int i, j, k;

byte addr;

real time_value;
realtime r_time_value;

logic [5:0] l_a, l_b, l_c;

assign  cc = aa + bb ;
assign  cc = aa+dd;

counter u_counter0(.clk(clk), .rst_n(rst_n), .data_out0(data_out0), .data_out1(data_out1), .data_in0(data_in0), .data_in1(data_in1));

assign  t_i = i;
assign  t_j = j;
assign  t_k = k;
assign  t_l_a = l_a;
assign  t_l_b = l_b;
assign  t_l_c = l_c;
assign  t_bit_a = bit_a;
assign  t_bit_b = bit_b;
assign  t_byte = addr;
assign  t_time_value = time_value;
assign  t_r_time_value = r_time_value;

initial  begin
  clk=1'b0;
  forever begin 
     #1 clk = ~clk;
  end
end


initial begin
  rst_n = 1'b1;
  #15 rst_n = 1'b0;
  #180 rst_n = 1'b1;
  #200 $finish;
end

initial begin
  //data_in0 = 0;
  wait(!rst_n);
  wait(rst_n);
  @(posedge clk);
  data_in0 = 1;
  @(posedge clk);
  data_in0 = 2;
  @(posedge clk);
  data_in0 = 4;
  @(posedge clk);
  data_in0 = 8;
  @(posedge clk);
  data_in0 = 0;
end

initial begin
  //data_in1 = 0;
  wait(!rst_n);
  wait(rst_n);
  @(posedge clk);
  data_in1 = 1;
  @(posedge clk);
  data_in1 = 2;
  @(posedge clk);
  data_in1 = 4;
  @(posedge clk);
  data_in1 = 8;
  @(posedge clk);
  data_in1 = 0;
end

initial begin
   $fsdbDumpfile("tb_top.fsdb");
   $fsdbDumpvars(0,"tb_top");
end
endmodule

一 操作对象范围

 变量类型支持:reg、bit、interger、int、logic、byte,  但是 real 、realtime 类型不可以。

+vcs+initreg+random,VCS 杂记,+vcs+initreg+x

二 操作应用场景

这里提到应用场景,这个很重要。只有知道应用的场景,才能更好的使用这个功能。我们知道,之所以出现该选项,VCS 厂商也不是一拍脑袋定下的,也是客户反馈的需求。

该选项,其实主要应用在后仿真过程中,因为前仿真的环境下,初始化没有赋值的寄存器等变量非常少,即便有个别,估计对仿真也没有致命程度。而后仿真条件下,就会存在大量的这样寄存器。因为后仿真netlist ,会出现大量没有初始化的寄存器存在,估计考虑面积等原因,会被后端同事处理掉。针对这种场景,该选项可以提供很大帮助。

但是前仿真我们不是不可以使用,但前提是寄存器变量没有被赋初始数值。如果关注的寄存器被赋予了初始数值,那么该选项不会起作用。

+vcs+initreg+random,VCS 杂记,+vcs+initreg+x

+vcs+initreg+random,VCS 杂记,+vcs+initreg+x

 如上面的rst_n reg ,在initial begin...end 中被赋值1,那么即便我们采用+vcs+initreg+0, 也是毫无用处的。这一点很重要。

+vcs+initreg+random,VCS 杂记,+vcs+initreg+x

+vcs+initreg+random,VCS 杂记,+vcs+initreg+x

+vcs+initreg+random,VCS 杂记,+vcs+initreg+x

+vcs+initreg+random,VCS 杂记,+vcs+initreg+x文章来源地址https://www.toymoban.com/news/detail-808619.html

到了这里,关于#VCS# 关于VCS 编译选项:+vcs+initreg+random的理解(3)回头是岸的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • VCS中的DPI和PLI

    在VCS中,DPI(Direct Programming Interface)是一种机制,用于在Verilog和C/C++代码之间进行互操作。DPI允许从Verilog代码中直接调用C/C++函数,并允许C/C++代码直接访问Verilog模块的内部信号和状态。 DPI的主要用途是为仿真器提供更高级别的功能和控制,并将仿真器与其他软件工具进行

    2024年02月10日
    浏览(35)
  • Vivado工程怎么用VCS仿真

    在进行数字电路设计的的时候,我们用Vivado写了一个工程,但是大家都知道Vivado自带的仿真是很拉胯的,信号多了就很慢很不方便,很容易卡死,所以就需要用VCS去进行仿真,有2种方法。 1.首先也是最重要的一步,你需要把Vivado的所有的IP编译成VCS可以识别的库文件,因为你

    2023年04月08日
    浏览(44)
  • idea2022 顶部没有 vcs 菜单

    创建本地仓库是使用 VCS Import into Version Control Create Git Repository 但是idea的顶部菜单变成了Git 1、进入配置 mac:Preferences Version Control Directory Mappings win:File Settings Version Control Directory Mappings 2、修改内容 修改 Directory 为项目根目录 ,VCS 为 Subversion 即可。 点击 apply 就可以了,返回

    2024年02月09日
    浏览(42)
  • EDA09--VCS 操作实践(二)

    前面介绍过了VCS的基本知识,现在进行VCS操作实践,介绍两类,即交互式操作和后处理两种。 本次操作所用到的所有文件脚本都在这里,大家下载下来即可:链接: link 本次操作所用到的所有文件脚本都在这里,大家下载下来即可:链接: link 本次操作所用到的所有文件脚本都在

    2024年02月12日
    浏览(43)
  • vcs+verdi仿真Verilog代码

    我们以一个简单的加法器为例,来看下如何用vcs+verdi仿真Verilog文件并查看波形。 源文件内容如下: 我们再定义一个宏定义的文件: 我们需要再定义一个testbench文件: 再定义一个filelist文件: dut.f 最后就是需要一个Makefile文件了: 总的文件如下: 执行 make all : 跑完后如下

    2024年02月13日
    浏览(44)
  • EDA07--VCS仿真验证(一)

    VCS用于在Linux下仿真.v代码,vcs六大功能: ·System Verilog ·OVA ·NTB ·DVE调试环境 ·覆盖率统计 ·DirectC ·增量编译 ·64-bit模式 ·混合信号仿真 本文讲解VCS的知识内容,具体操作步骤单独写一篇… VCS-DVE仿真由三步构成: 编译、仿真、调试 。提前编写好设计文件和Testbench的.v文件。

    2024年02月08日
    浏览(49)
  • error obtaining VCS status: exit status 128 Use -buildvcs=false to disable VCS stamping. make: ***

    mac go version go1.19.4 darwin/amd64 使用了 git clone 命令拉取远程仓库到本地后,使用了 make install 命令出现: 按照终端的报错信息展示,是仓库的权限问题,根据指示运行 git config --global --add safe.directory /Users/xxx/xxx/irita 命令后能解决这个问题。 GitHub上也有关于这个问题的解释:Ru

    2024年02月10日
    浏览(37)
  • 逻辑仿真工具VCS的使用-Makefile

            Gvim写RTL code,VCS仿真,Verdi看波形,DC做综合下约束,Primetime做STA,Spyglass做异步时序分析。            VCS全称Verilog Computer Simulation ,VCS是逻辑仿真EDA工具的编译源代码的命令。要用VCS做编译仿真,首先得有一个RTL代码,比如我们写了一个全加器和全加器的

    2024年02月02日
    浏览(40)
  • [VCS、verdi、makefile] 联合仿真 ——步骤

    目录 1、vcs、verdi简介和安装 2、Verdi的配置 3、vcs与Verdi联合仿真的Makefile脚本 1、基于Verilog系统函数Makefile脚本 1.1 先在tb文件中添加代码段,仿真后可以产生.fsdb文件  1.2 Makefile写法 2、基于ucli/tcl接口Makefile脚本 4、Verdi的使用       建议去淘宝买别人别人装好的环境,自己整

    2024年02月01日
    浏览(37)
  • VCS ICO - Intelligent Coverage Optimization

    ico 是vcs提供的用于优化覆盖率的feature;一般用户通过 dist solver bofore 等约束了变量的随机概率,而 ico 会在用户约束的基础上,做一些自动“修正”,以此来优化随机激励,提高随机多样性,加速覆盖率收敛,缩短 turn-around time TAT 。 主要功能包含如下几部分: Prognosis : 用于

    2024年02月14日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包