首页 > 其他分享 >codeblock快捷键+VS code快捷键+DW_minmax文件+莱文斯坦距离+char* 和 char[]区别+可增删constraint的实现方法+$fatal的传参+巴科斯范式命令行语法+

codeblock快捷键+VS code快捷键+DW_minmax文件+莱文斯坦距离+char* 和 char[]区别+可增删constraint的实现方法+$fatal的传参+巴科斯范式命令行语法+

时间:2023-12-23 19:22:25浏览次数:53  
标签:constraint object 快捷键 char item only 参数 莱文

codeblock快捷键

ctrl+G 跳转。
ctlr+J 生成补全。
cygwin用于获得开发环境。注意安装路径要对,特殊字符路径和codeblocks不兼容。
codeblock返回上一处:点击光标即可。

VS code快捷键

Shift Alt F:vs code格式化代码
Ctrl Shift O:打开函数列表
Ctrl P:快速打开文件,或者跳到指定行
Esc:禅模式退出,

DW_minmax文件

这个文件是一个库,在EDA工具安装路径下可以找到,
参见:http://ee.mweda.com/ask/265861.html

~/eda/synopsys/K-2015.06/dw/sim_ver

莱文斯坦距离

莱文斯坦距离在UVM中有用到,主要是提示用户是否是错误输入了,而输入本应该是怎样的。
https://xiaoyuhen.com/blog/2019-03-16-levenshtein-distance/
这个讲解非常好。莱文斯坦距离主要用在用户偶尔输入了错误的字符串,然后根据已有的字符串判定大体上应该输入哪个字符串。

莱文斯坦距离就是比较字符串A如果要变为字符串B,那么需要做增删改操作单个字符的最小次数。在算法实现层面上使用动态规划,以子问题的形式获知最终的问题结果。

char* 和 char[]区别

https://blog.csdn.net/u012611878/article/details/78291036
1.char是变量,值可以改变, char[]是常量,值(指针)不能改变。
2.char[]对应的内存区域总是可写,char
指向的区域只读
3.char * 和char[]的初始化操作有着根本区别:前者指向了常量(字符串常量),后者则指向了变量(字符数组)

可增删constraint的实现方法

约束定义出来的class,本身的成员变量中,包括了item和约束两部分。
为了能够动态的添加和删除对特定item的约束。实现方法代码如下:
以下代码的实现在module中,initial语句也在module中。
重点在于add_instance_constraint方法,当创建了一个constrained_item以后,
对该item的实例增加两个约束,而这两个约束在增加的过程中,先将约束本身指向对应的item,
获得一个带有item实例的约束,然后将该约束放入到队列中。
放入两个约束到队列后,这两个约束同时指向了constrained_item,
从而constrained_item在调用randomize函数后,可以执行多个约束的同时生效。

class item;
  rand int val;
endclass

class constrained_item extends item;
  local rand abstract_constraint #(TYPE) instance_constraints[$];
  function void add_instance_constraint(abstract_constraint #(TYPE) c);
    abstract_constraint #(TYPE) c_copy = new c;
    c_copy.set_object(this);
    instance_constraints.push_back(c_copy);
  endfunction
endclass

virtual class abstract_constraint #(type T = int);
  protected T object;
  function void set_object(T object);
    this.object = object;
  endfunction
endclass

class only_even_values extends abstract_constraint #(item);
  constraint c {
    object.val % 2 == 0;
  }
endclass

class only_even_values2 extends abstract_constraint #(item);
  constraint c {
    object.val> 0;
    object.val< 100;
  }
endclass

initial begin
  	automatic constrained_item i = new();
	automatic only_even_values only_even = new();
  	automatic only_even_values2 only_even2 = new();
	i.add_instance_constraint(only_even);
  	i.add_instance_constraint(only_even2);

    repeat (100) begin
      if (!i.randomize())
        $fatal(0, "Randomization failure");
      $display("%p", i);
    end
end

$fatal的传参

$fatal会隐式调用$finish,因此$fatal和$finish都有一个退出号码,这个退出号码默认是1。

image

巴科斯范式命令行语法

https://www.cnblogs.com/uakora/p/11809501.html

命令 <必选参数1|必选参数2> [-option {必选参数1|必选参数2|必选参数3}]
		[可选参数…] {(默认参数)|参数|参数}
  尖括号< >:必选参数,实际使用时应将其替换为所需要的参数
  大括号{ }:必选参数,内部使用,包含此处允许使用的参数
  方括号[ ]:可选参数,在命令中根据需要加以取舍
  小括号( ):指明参数的默认值,只用于{ }中
  竖线|:用于分隔多个互斥参数,含义为“或”,使用时只能选择一个
  省略号…:任意多个参数

ralgen生成的寄存器模型存在覆盖率的警告(uvm-1.2)

添加如下代码:

uvm_config_db#(int)::set(this, "*", "include_coverage", 0)

标签:constraint,object,快捷键,char,item,only,参数,莱文
From: https://www.cnblogs.com/bai2022/p/17923469.html

相关文章

  • cmd 运行 python 常用快捷键
    在Windows命令行下运行Python文件,你可以按照以下步骤操作¹:打开Windows下的terminal。快捷键是Win+R,然后在框中输入cmd并回车¹。使用cd命令和dir命令找到要编辑运行的Python文件。如果还未创建,可以使用typenul>*.py创建Python文件(*代指文件名)¹。编辑P......
  • C++ Qt开发:Charts折线图绘制详解
    Qt是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍QCharts折线图的常用方法及灵活运用。折线图(LineChart)是一种常用的数据可视化图表,用于展示随着......
  • 使用 Helm Chart 部署分布式 GreptimeDB
    部署分布式GreptimeDB文档大纲一、概述什么是HelmChart一、概述什么是HelmChart是一种用于管理和部署Kubernetes应用程序的工具。它通过定义应用程序的资源、依赖关系和配置参数等信息,将应用程序打包成一个可重复部署的单元。HelmChart具有模板化的特性,可以根据不同的环......
  • C++ Qt开发:Charts绘图组件概述
    Qt是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍QCharts二维绘图组件的常用方法及灵活运用。QtCharts提供了一个强大且易于使用的工具集,用于在......
  • 『LeetCode』3. 无重复字符的最长子串 Longest Substring Without Repeating Characte
    『1』双指针算法我的想法:一般看到字符串子串问题想到用双指针解,看到字符串子序列问题想到用动态规划解。此题用双指针可以很快解题。遍历字符串中的每个字符s.charAt[i],对于每一个i,找到j使得双指针[j,i]维护的是以s.charAt[i]结尾的无重复字符的最长子串,长度为i-j+1,......
  • wpf + LiveCharts.wpf 做个漂亮的图表
    十年河东,十年河西,莫欺少年穷学无止境,精益求精参考:WPFLiveChart图表详解接着上一篇博客: wpf+MaterialDesign+Prism8实现导航功能 1、项目引入图表包 2、定义用户控件IndexView的IndexViewModel,如下usingLiveCharts;usingPrism.Mvvm;usingSystem;using......
  • Eclipse、IntelliJ IDEA、PyCharm三种IDE的区别
    Eclipse、IntelliJIDEA和PyCharm是三种流行的集成开发环境(IDE),每个都有其特性和优点。1. Eclipse:Eclipse是一款开源的JavaIDE,由Eclipse基金会开发。它具有许多功能,包括代码自动完成、调试、源代码控制等。另外,Eclipse有许多插件可以安装,以扩展其功能。它的优点包括免费开源,功能强......
  • html主体和header中charset
    #如果body中没有charset,则在header中提取$meta=get_meta_charset($html);$charset=preg_match("/charset=[^\w]?([-\w]+)/i",$meta,$temp)?strtolower($temp[1]):"";if(empty($charset)){$header=print_r($html_array['header']......
  • string char[] char*
    C++中的string与char[]、char*详解_c++stringchar*-CSDN博客https://blog.csdn.net/m0_37433111/article/details/107347101 #ifndef_Person_H#define_Person_Hclassperson{  char*name;  intid;public:  voidset(char*,int);  voidgetdet......
  • intellij idea常用快捷键快速生成main方法、for循环、out输出
    1、System.out.println()//输入sout,按下enter键,生成System.out.println()方法.sout--->soutv=System.out.println("变量名="+变量)soutp--->System.out.println("")2、publicstaticvoidmain(String[]args){}//输入psvm,按下enter键,生成main方法.3、for(inti=......