自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(291)
  • 资源 (1)
  • 收藏
  • 关注

转载 Environment Modules

通常,用户在登录时通过为会话期间要引用的每个应用程序设置环境信息来初始化其环境;Environment Modules包 是一个简化shell初始化的工具,它允许用户在使用。

2023-05-31 22:29:47 577

原创 systemverilog中的bind

即使 dut_assert.sv 中不包含 断言,bind 依旧可以将 dut_assert 与 dut 连接起来;由此,可以得出结论,bind 时,bind 的 dut 中的信号必须是 dut module中的信号名,而不能是 dut 实例的输入输出信号名!可以看到,此时 bind dut,相当于 bind 了2次,所以打印语句打印2次;也就是说,此时改为 dut 的实例名,相当于只 bind 了1次,所以打印1次;,也就是说 property 中包含的信号都是从 interface 的外部给进来的;

2022-09-30 02:13:21 4456

原创 verilog-延迟语句

verilog延时

2022-09-21 00:21:42 8727

原创 systemverilog 中的 `define ---带参数的宏函数--macro function

上面的例子中A_SRAM_RW 为定义的宏函数, dst_cc_num 和 src_cc_num 均为宏的形参,在宏函数中 引用 形参,需要在参数前后加 ``;需要注意的是,由于在第24行展开时,$display 必须带;1. 用 macro 定义简单的 function,使代码简洁。似乎宏参数的替换并不需要在 参数的 前后加上 ``需要注意的是,宏函数 不接受传进来的变量,如下是错误的:--这里有待商榷。

2022-09-08 23:42:22 2085 1

原创 linux三剑客之grep

grep

2022-08-24 00:05:45 411

转载 linux之管道符详解

linux管道符

2022-08-18 00:33:40 2205 1

原创 xargs命令

xargs

2022-08-17 14:25:34 299

原创 重载(overload)和重写(override)的区别

重载和重写

2022-07-14 16:29:08 2656 1

原创 perl的输入输出

标准输入<STDIN><STDIN>表示从标准输入中读取内容,如果没有输入会继续等待,默认读取的内容会带换行符;

2022-06-08 17:19:18 2570

原创 DPI基础知识

dpi基础介绍

2022-06-06 22:16:05 2909

原创 perl文件操作

文件句柄文件句柄(filehandle)就是程序里代表 perl 进程与外界之间I/O联系的名称,perl中对文件的操作都是通过文件句柄来完成的,建议句柄名都使用大写字母来命名;其实文件句柄早就接触过,STDIN就是一个文件句柄,通过 <STDIN>来获取标准输入,perl中保留了6个特殊的文件句柄:STDIN、STDOUT、STDERR、DATA、ARGV、ARGVOUT对文件进行操作,需要经历三个步骤:1)打开文件2)对文件进行读写3)关闭文件这三个过程都需要通过

2022-06-06 12:21:48 2338

原创 makefile中的条件判断

条件语句可以根据一个变量的值来控制 make 执行或者忽略 Makefile 的特定部分;条件语句可以是两个不同变量、或者变量和常量值的比较。要注意的是:条件语句只能用于控制 make 实际执行的 makefile 文件部分,它不能控制规则的 shell 命令执行过程;makefile中主要有以下几种条件判断:1.判断是否相等 ifeqifeq 条件语句 条件成立时要做的事情endif或者ifeq 条件语句 条件成立时要做的事情else 条件不成立时要做的事情

2022-04-17 10:57:21 5121

原创 内部函数和外部函数

变量有作用域,有局部变量和外部变量之分,那么函数有没有类似的问题呢?有的函数可以被本文件中的其他函数调用,也可以被其他文件中的函数调用,而有的函数只能被本文件中的函数调用,不能被其他文件中的函数调用;函数本质上是全局的,因为定义一个函数的目的就是要被另外的函数调用;如果不加声明的话,一个文件中的函数既可以被本文件中其他函数调用,也可以被其他文件中的函数调用,但是也可以指定某些函数不能被其他文件调用;根据函数能否被其他源文件调用,将函数区分为 内部函数 和 外部函数;内部函数如果一个函数只能被本文

2022-04-14 23:54:05 3438 1

原创 c语言中的局部变量和全局变量

每个变量都有属于它的作用域,就是这些变量在什么范围内有效;我们按照变量的作用域范围可以把变量划分为局部变量和全局变量;局部变量局部变量出现在三种地方:(1)在函数的开头定义的变量(2) 在函数内的复合语句内定义的变量(3)形式参数在一个函数内部定义的变量只在本函数范围内有效,也就是只有本函数内才能引用它们,在此函数外不能使用这些变量;在复合语句内定义的变量只能在本复合语句范围内有效,只有本复合语句内才能引用他们,在该复合语句外不能使用这些变量;还有就是函数的形参,只在该函数内有.

2022-04-13 23:13:38 60552 19

转载 C语言项目中.h和.c文件的关系和概念

在编译器只认识.c(.cpp))文件,而不知道.h是何物的年代,那时的人们写了很多的.c(.cpp)文件,渐渐地,人们发现在很多.c(.cpp)文件中的声明语句就是相同的。但他们却不得不一个字一个字地重复地将这些内容敲入每个.c(.cpp)文件。但更为恐怖的是,当其中一个声明有变更时,就需要检查所有的.c(.cpp)文件。  于是人们将重复的部分提取出来,放在一个新文件里,然后在需要的.c(.cpp)文件中敲入#include XXXX这样的语句。这样即使某个声明发生了变更,也再不需要到处寻找与修改

2022-04-10 23:04:26 702

原创 C常用头文件

拥有可变参数的函数通过在参数列表的末尾使用省略号(,...)来定义,如下:int check(int a, double b, ...);不定参数的函数至少要有一个命名参数,所以下面的定义在C语言中是不允许的 :char *wrong(...);库变量 va_list这是一个适用于 va_start()、va_arg()、v.

2022-04-10 21:02:15 2927

原创 SVN基本操作

SVN是subversion的缩写,是一个开放源代码的版本控制系统,通过采用分支管理系统的高效管理,简而言之就是用于多个人共同开发同一个项目,实现共享资源,实现最终集中式的管理;SVN是最流行的一个开放源代码的版本控制系统。作为一个开源的版本控制系统,Subversion管理着随时间改变的数据。这些数据放置在一个中央资料档案库(Repository)中。这个档案库很像一个普通的文件服务器,不过它会记住每一次文件的变动。这样就可以把档案恢复到旧的版本,或是浏览文件的变动历史。Subversion是一个通用

2022-04-10 17:54:11 1827

原创 后仿遇到违例

后仿真,是对经过综合/布局布线后的门级网表进行仿真,与前仿真对rtl代码进行仿真,找出功能上的缺陷相比,后仿真主要检查时序上的问题;相比较理想状况下的rtl仿真(功能仿真、前仿真),后仿消耗时间更多,在可读性差的cell里穿梭行走,debug的难度大大增强了,而一般我们在做后仿的时候,往往也意味着离tapeout的时间很急迫了后仿的步骤:1、用时序计算工具生成时序信息存储在SDF文件中2、添加 notiming_check 列表文件到仿真工具选项中3、将SDF文件反标到设计中:在tb_top

2022-04-06 23:08:30 9033 1

原创 C语言随机数

1. 随机数概述编写程序过程中,我们经常需要产生一些随机数。随机数在程序中分为两种:真随机数:完全没有规则,无法预测接下来要产生的数。 伪随机数:通过一些预先设定好的规则产生不能简单预测的数。当然,我们在程序中使用的随机数主要是伪随机,一般场景下,伪随机数能够满足我们大部分的场景了。本篇文章给大家介绍下,如何在C语言中产生一个伪随机数:伪随机数在C语言中产生分为两个步骤:设置随机数种子 获得随机数设置随机数种子和获得随机数,我们需要使用两个函数。srand 函数 和 rand 函数。

2022-04-01 00:44:46 8634 1

原创 package包

systemverilog中的package 为在module、interface、program之间共享parameter、data、type、function、task、class等提供了额外的机制;在package 中一般包括类型定义、task、function以及class等,这些条目(item)都不能包含层次引用,如在某个包的class 中给某个rtl路径下的变量赋值,这是不允许的;为了在一个范围内使用 package 中的内容,必须在使用之前导入package;如果在某个 module

2021-12-13 23:21:13 1628

原创 $monitor, $strobe, $write以及$display的区别及使用场景

$display 与 $strobe来看下面一个例子:结果如下:这里 $display 语句是在 active 区域执行的,而 44行的赋值语句则是在 NBA 区域执行的,所以每次 $display 打印出来的 a 的值都是前一个值;而对于 $strobe ,是当每次 #5 时刻所有的操作都执行完后才开始打印,所以 $strobe 打印出来的值都是每次 a 更新后的值;总结来说:当 $strobe 被调用的时刻所有的语句都执行完了,$strobe 才打印文本,这包括阻塞和非阻塞的

2021-12-04 16:47:26 4585

原创 makefile中调用linux命令

在makefile中可以直接执行 linux 命令,如下:all: @ls -al执行结果如下:如果想将 命令的输出 赋给一个变量,可以使用下面的两种方式:即第一种方式:变量名 = $(shell linux命令)第二种方式:变量名 = `linux命令`运行结果如下:第二种方式最为常见,例如在 shell 脚本中给变量赋值或者在perl中给变量赋值,好像都是一样的写法;附加:date命令date命令可以按照指定格式显示日期,只...

2021-09-26 21:19:35 3089

原创 C结构体和共用体

结构体前面的数组是一组具有相同类型数据的集合,但是在实际编程过程中,我们往往还需要一组不同类型的数组,比如学生的信息登记表,姓名为字符串,学号为整数,性别为字符串等等;这种情况下,因为每个数据的类型不同,这时候显然不能用数组来保存;因此在C语言中,可以通过创建结构体来保存一组不同类型的数据,结构体的定义语法为:struct 结构体名{ 成员1; 成员2; ...};也就是说,结构体是一种集合,里面包含了多个成员,成员的数据类型可以不同,如下的例子:struc

2021-08-30 00:30:39 1052

原创 C语言流程控制语句

1.goto语句goto语句是一种无条件转移语句,goto 语句的使用格式为:goto 语句标号;其中语句标号是一个有效的标识符,这个标识符加上一个 ":" 一起出现在函数内某处,执行goto语句后,程序将跳转到该标号处并执行其后的语句;另外语句标号必须与goto语句同处于一个函数中,但可以不在一个循环层中;通常goto语句与if条件语句连用,当满足某一条件时,程序跳到标号处运行;如下例子:#include <stdio.h>int main(void){ i

2021-08-17 22:01:56 3306 14

转载 linux修改shell命令提示符及颜色

1.linux 登录过程中加载配置文件的顺序/etc/profile → /etc/profile.d/*.sh → ~/.bash_profile → ~/.bashrc → [/etc/bashrc]可查看默认的~/.bashrc文件如下:[root@localhost ~]$ cat ~/.bashrc# .bashrc# User specific aliases and functions# Source global definitionsif [ -f /etc/bas

2021-06-27 14:34:44 1003

原创 shell流程控制

if else包括三种形式:if conditionthen command1 command2 ... commandN fi# condition 可以用test也可以用[ ]if conditionthen command1 ...else command ...fiif condition then command1elif condition command2else

2021-06-16 23:24:08 222

原创 shell中的${}、## 和 %% 的使用

假设定义了一个变量:file=/dir1/dir2/dir3/myfile.txt那么可以用${} 分别替换得到不同的值:${file#*/}:删掉第一个/ 及其左边的字符串:dir1/dir2/dir3/my.file.txt${file##*/}:删掉最后一个/ 及其左边的字符串:my.file.txt${file#*.}:删掉第一个. 及其左边的字符串:file.txt${file##*.}:删掉最后一个. 及其左边的字符串:txt${file%/*}:删掉最后一个 /

2021-06-14 23:29:35 1296 2

原创 推导式

推导式有三种:列表推导式 字典推导式 集合推导式列表推导式列表推导式又叫列表生成式,就是用一个表达式创建或控制一个有规律的列表,作用是减少生成列表的代码量以生成一个1-10的列表为例:首先用循环来实现:列表推导式实现:1.带if的列表推导式以生成1-10之间的奇数列表为例:2.多个for循环实现列表推导式可以看到,多for的列表推导式就是for循环嵌套,只不过在for循环之前需要加上返回值,如上面的i,j以及(i, j)字典推导式

2021-01-17 23:32:39 949

原创 公共操作

运算符1.++运算符用来合并字符串、列表、元组2.**运算符用来复制字符串、列表、元组3.in and not in判断元素是否存在于字符串、列表、元组以及字典、集合中公共方法len() 返回序列的长度del() 删除序列或者序列中的元素对于不可变数据类型:字符串和元组字符串和元组为不可变类型,不能用del去单独删除其中的某个元素而对于可变类型:列表、字典、集合,集合无法通过索引来查找元素,所以也不能用de.

2021-01-17 21:16:31 348

原创 python字符串

了。

2021-01-17 01:43:41 382

原创 元组

元组使用场景如果想要存储多个数据,但是这些数据是不能修改的,这个时候就需要使用元组,因为列表的数据允许修改注意:如果定义的元组只有⼀个数据,那么这个数据后⾯面也好添加逗号,否则数据类型为唯⼀元素的数据类型元组的特点定义元组使用小括号,且逗号隔开各个数据,数据可以是不同的数据类型,这与列表相同可以看到,元组中的元素不能被修改!!元组的常见操作1.查找按下标查找index():查找某个数据,如果数据存在返回对应的下标,否则报错,语法和列表

2021-01-13 23:30:30 121

原创 列表

列表的格式列表名 = [数据1, 数据2, 数据3, 数据4......]列表可以⼀次性存储多个数据,且可以为不同数据类型,但是一般在使用时只存储一种列表的常用操作1.查找下标查找列表的下标从0开始,查找时下标不能超过列表长度,否则会报错函数查找(1)index(元素, 开始位置下标, 结束位置下标) 返回指定元素所在位置的下标,如果元素不存在则报错如果省略查找范围,则默认在整个列表内查找如果存在多个查找结果,只返回第一个...

2021-01-13 00:07:12 192

原创 集合

创建集合创建集合使用{}或者set(),但是如果创建空集合只能使用set(),因为{}用来创建空字典可以看到,集合中的元素是无序的,所以集合并不支持用下标对元素进行查找;此外,集合具有去重性,会主动去掉集合中的重复元素集合中的元素不能是序列!!但是可以包含多种数据类型,如下:集合常见的操作方法1.增加集合中的数据add()add只能用来添加单一的元素,不能是列表或者其他python序列;如果添加的元素已经存在,则什么也不做;添加的元素并没有固

2021-01-10 23:13:33 122

原创 python字典

字典的使用场景字典⾥里里⾯面的数据是以键值对形式出现,字典数据和数据顺序没有关系,即字典不支持利用下标对元素进行查找,后期无论数据如何变化,只需要按照对应的键的名字查找数据即可创建字典的语法字典特点:符号为大括号 数据为键值对形式出现 各个键值对之间用逗号隔开 注意:⼀般称冒号前⾯面的为键(key),简称k;冒号后面的为值(value),简称v字典的常见操作1.新增字典元素写法: 字典序列[key] = 值注意:如果key存在则修改这个key对应的值;如...

2021-01-10 17:58:18 1073

原创 格式化输出和输入

1.格式化输出1.1格式化符号%06d,表示输出的整数显示位数,不⾜以0补全,超出当前位数则原样输出 %.2f,表示小数点后显示的小数位数

2020-10-14 08:06:48 3539

转载 Cache的基本原理

对于没有接触过底层技术的朋友来说,或许从未听说过cache。毕竟cache的存在对程序员来说是透明的。在接触cache之前,先为你准备段code分析:int arr[10][128];for (i = 0; i < 10; i++) for (j = 0; j < 128; j++) arr[i][j] = 1;如果你曾经学习过C/C++语言,这段code自然不会陌生。如此简单的将arr数组所有元素置1。 你有没有想过这段code还有

2020-09-07 23:02:45 30475 20

原创 find、grep、which查找命令

find-文件查找find 命令功能非常强大,通常用来在特定的目录下搜索符合条件的文件,也可以用来搜索特定用户属主的文件。文件名查找find 查找的目录 -name "查找的文件名"注意,这里文件名最好加上双引号表示字符串。文件类型查找find 查找目录 -type 文件类型普通文件:p目录:d符号链接:l管道:p套接字:s字符设备:c块设备:b文件大小查找find 查找目录 -size -10k+10k:大于10k-10k: 小于1.

2020-08-09 23:25:59 470

原创 为规则书写命令

每条规则中的命令和操作系统Shell的命令行是一致的。make会一按顺序一条一条的执行命令,每条命令的开头必须以Tab键开头,除非,命令是紧跟在依赖规则后面的分号后的。在命令行之间中的空格或是空行会被忽略,但是如果该空格或空行是以Tab键开头的,那么make会认为其是一个空命令。显示命令通常,make会把其要执行的命令行在命令执行前输出到屏幕上。当我们用@字符在命令行前,那么,这个命令将不被make显示出来,最具代表性的例子是,我们用这个功能来向屏幕显示一些信息。如:@echo 正在编...

2020-08-03 07:57:51 385

转载 Makefile:使用函数

1. makefile中的函数make解释器提供了一系列的函数供makefile调用(即预定义函数,相当于库函数) 在makefile中支持自定义函数实现,并调用执行 通过define关键字实现自定义函数 自定义的函数一般用于定义命令的集合,并且运用于规则中自定义函数的语法来看下面的例子:在Makefile中, 通过define关键字来实现函数的自定义,并以endef关键字结束,自定义函数使用预定义函数call调用,后边跟自定义函数名及参数。define 函数名 ...

2020-08-02 23:55:00 2925

原创 perl 局部和全局变量

局部变量局部变量范围是局部的,它存在于这两个花括号(通常称为代码块)之间,在该块之外这个变量不存在。这些变量可以在任何代码块中使用,它可以在任何控制结构块中,如if,if-else等,或任何循环块,如for,while,do-while等或任何子例程的块,它甚至可以出现在匿名区块中。例如:在上面的程序变量中,$age在if中被声明,因此这个变量只对这个块是本地的。如果我们尝试在if体外访问此变量,我们会收到错误。让我们运行以下程序:1)使用my关键字声明局部变量,如上面的程序

2020-07-30 23:34:52 3441

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除