<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[bleauchat的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/bleauchat</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; bleauchat]]></copyright><item><title><![CDATA[Environment Modules]]></title><link>https://blog.youkuaiyun.com/bleauchat/article/details/130978158</link><guid>https://blog.youkuaiyun.com/bleauchat/article/details/130978158</guid><author>bleauchat</author><pubDate>Wed, 31 May 2023 22:29:47 +0800</pubDate><description><![CDATA[通常，用户在登录时通过为会话期间要引用的每个应用程序设置环境信息来初始化其环境；Environment Modules包 是一个简化shell初始化的工具，它允许用户在使用。]]></description><category></category></item><item><title><![CDATA[systemverilog中的bind]]></title><link>https://blog.youkuaiyun.com/bleauchat/article/details/127116581</link><guid>https://blog.youkuaiyun.com/bleauchat/article/details/127116581</guid><author>bleauchat</author><pubDate>Fri, 30 Sep 2022 02:13:21 +0800</pubDate><description><![CDATA[即使 dut_assert.sv 中不包含 断言，bind 依旧可以将 dut_assert 与 dut 连接起来；由此，可以得出结论，bind 时，bind 的 dut 中的信号必须是 dut module中的信号名，而不能是 dut 实例的输入输出信号名！可以看到，此时 bind dut，相当于 bind 了2次，所以打印语句打印2次；也就是说，此时改为 dut 的实例名，相当于只 bind 了1次，所以打印1次；，也就是说 property 中包含的信号都是从 interface 的外部给进来的；]]></description><category></category></item><item><title><![CDATA[verilog-延迟语句]]></title><link>https://blog.youkuaiyun.com/bleauchat/article/details/126861750</link><guid>https://blog.youkuaiyun.com/bleauchat/article/details/126861750</guid><author>bleauchat</author><pubDate>Wed, 21 Sep 2022 00:21:42 +0800</pubDate><description><![CDATA[verilog延时]]></description><category></category></item><item><title><![CDATA[systemverilog 中的 `define ---带参数的宏函数--macro function]]></title><link>https://blog.youkuaiyun.com/bleauchat/article/details/126772810</link><guid>https://blog.youkuaiyun.com/bleauchat/article/details/126772810</guid><author>bleauchat</author><pubDate>Thu, 08 Sep 2022 23:42:22 +0800</pubDate><description><![CDATA[上面的例子中A_SRAM_RW 为定义的宏函数， dst_cc_num 和 src_cc_num 均为宏的形参，在宏函数中 引用 形参，需要在参数前后加 ``；需要注意的是，由于在第24行展开时，$display 必须带;1. 用 macro 定义简单的 function，使代码简洁。似乎宏参数的替换并不需要在 参数的 前后加上 ``需要注意的是，宏函数 不接受传进来的变量，如下是错误的：--这里有待商榷。]]></description><category></category></item><item><title><![CDATA[linux三剑客之grep]]></title><link>https://blog.youkuaiyun.com/bleauchat/article/details/126493985</link><guid>https://blog.youkuaiyun.com/bleauchat/article/details/126493985</guid><author>bleauchat</author><pubDate>Wed, 24 Aug 2022 00:05:45 +0800</pubDate><description><![CDATA[grep]]></description><category></category></item><item><title><![CDATA[linux之管道符详解]]></title><link>https://blog.youkuaiyun.com/bleauchat/article/details/126395920</link><guid>https://blog.youkuaiyun.com/bleauchat/article/details/126395920</guid><author>bleauchat</author><pubDate>Thu, 18 Aug 2022 00:33:40 +0800</pubDate><description><![CDATA[linux管道符]]></description><category></category></item><item><title><![CDATA[xargs命令]]></title><link>https://blog.youkuaiyun.com/bleauchat/article/details/126383563</link><guid>https://blog.youkuaiyun.com/bleauchat/article/details/126383563</guid><author>bleauchat</author><pubDate>Wed, 17 Aug 2022 14:25:34 +0800</pubDate><description><![CDATA[xargs]]></description><category></category></item><item><title><![CDATA[重载(overload)和重写(override)的区别]]></title><link>https://blog.youkuaiyun.com/bleauchat/article/details/125786884</link><guid>https://blog.youkuaiyun.com/bleauchat/article/details/125786884</guid><author>bleauchat</author><pubDate>Thu, 14 Jul 2022 16:29:08 +0800</pubDate><description><![CDATA[重载和重写]]></description><category></category></item><item><title><![CDATA[perl的输入输出]]></title><link>https://blog.youkuaiyun.com/bleauchat/article/details/118380236</link><guid>https://blog.youkuaiyun.com/bleauchat/article/details/118380236</guid><author>bleauchat</author><pubDate>Wed, 08 Jun 2022 17:19:18 +0800</pubDate><description><![CDATA[标准输入&lt;STDIN&gt;

&lt;STDIN&gt;表示从标准输入中读取内容，如果没有输入会继续等待，默认读取的内容会带换行符；




]]></description><category></category></item><item><title><![CDATA[DPI基础知识]]></title><link>https://blog.youkuaiyun.com/bleauchat/article/details/124994332</link><guid>https://blog.youkuaiyun.com/bleauchat/article/details/124994332</guid><author>bleauchat</author><pubDate>Mon, 06 Jun 2022 22:16:05 +0800</pubDate><description><![CDATA[dpi基础介绍]]></description><category></category></item><item><title><![CDATA[perl文件操作]]></title><link>https://blog.youkuaiyun.com/bleauchat/article/details/118391401</link><guid>https://blog.youkuaiyun.com/bleauchat/article/details/118391401</guid><author>bleauchat</author><pubDate>Mon, 06 Jun 2022 12:21:48 +0800</pubDate><description><![CDATA[文件句柄

文件句柄（filehandle）就是程序里代表 perl 进程与外界之间I/O联系的名称，perl中对文件的操作都是通过文件句柄来完成的，建议句柄名都使用大写字母来命名；

其实文件句柄早就接触过，STDIN就是一个文件句柄，通过 &lt;STDIN&gt;来获取标准输入，perl中保留了6个特殊的文件句柄：STDIN、STDOUT、STDERR、DATA、ARGV、ARGVOUT

对文件进行操作，需要经历三个步骤：

1）打开文件

2）对文件进行读写

3）关闭文件

这三个过程都需要通过]]></description><category></category></item><item><title><![CDATA[makefile中的条件判断]]></title><link>https://blog.youkuaiyun.com/bleauchat/article/details/124225775</link><guid>https://blog.youkuaiyun.com/bleauchat/article/details/124225775</guid><author>bleauchat</author><pubDate>Sun, 17 Apr 2022 10:57:21 +0800</pubDate><description><![CDATA[条件语句可以根据一个变量的值来控制 make 执行或者忽略 Makefile 的特定部分；条件语句可以是两个不同变量、或者变量和常量值的比较。要注意的是：条件语句只能用于控制 make 实际执行的 makefile 文件部分，它不能控制规则的 shell 命令执行过程；

makefile中主要有以下几种条件判断：

1.判断是否相等 ifeq


ifeq 条件语句
    条件成立时要做的事情
endif
或者
ifeq 条件语句
    条件成立时要做的事情
else
    条件不成立时要做的事情
]]></description><category></category></item><item><title><![CDATA[内部函数和外部函数]]></title><link>https://blog.youkuaiyun.com/bleauchat/article/details/124184173</link><guid>https://blog.youkuaiyun.com/bleauchat/article/details/124184173</guid><author>bleauchat</author><pubDate>Thu, 14 Apr 2022 23:54:05 +0800</pubDate><description><![CDATA[变量有作用域，有局部变量和外部变量之分，那么函数有没有类似的问题呢？有的函数可以被本文件中的其他函数调用，也可以被其他文件中的函数调用，而有的函数只能被本文件中的函数调用，不能被其他文件中的函数调用；

函数本质上是全局的，因为定义一个函数的目的就是要被另外的函数调用；如果不加声明的话，一个文件中的函数既可以被本文件中其他函数调用，也可以被其他文件中的函数调用，但是也可以指定某些函数不能被其他文件调用；根据函数能否被其他源文件调用，将函数区分为 内部函数 和 外部函数；

内部函数

如果一个函数只能被本文]]></description><category></category></item><item><title><![CDATA[c语言中的局部变量和全局变量]]></title><link>https://blog.youkuaiyun.com/bleauchat/article/details/119429254</link><guid>https://blog.youkuaiyun.com/bleauchat/article/details/119429254</guid><author>bleauchat</author><pubDate>Wed, 13 Apr 2022 23:13:38 +0800</pubDate><description><![CDATA[每个变量都有属于它的作用域，就是这些变量在什么范围内有效；我们按照变量的作用域范围可以把变量划分为局部变量和全局变量；

局部变量

局部变量出现在三种地方：

(1)在函数的开头定义的变量
(2) 在函数内的复合语句内定义的变量
(3)形式参数

在一个函数内部定义的变量只在本函数范围内有效，也就是只有本函数内才能引用它们，在此函数外不能使用这些变量；

在复合语句内定义的变量只能在本复合语句范围内有效，只有本复合语句内才能引用他们，在该复合语句外不能使用这些变量；

还有就是函数的形参，只在该函数内有.]]></description><category></category></item><item><title><![CDATA[C语言项目中.h和.c文件的关系和概念]]></title><link>https://blog.youkuaiyun.com/bleauchat/article/details/124088178</link><guid>https://blog.youkuaiyun.com/bleauchat/article/details/124088178</guid><author>bleauchat</author><pubDate>Sun, 10 Apr 2022 23:04:26 +0800</pubDate><description><![CDATA[在编译器只认识.c(.cpp))文件，而不知道.h是何物的年代,那时的人们写了很多的.c(.cpp)文件，渐渐地，人们发现在很多.c(.cpp)文件中的声明语句就是相同的。

但他们却不得不一个字一个字地重复地将这些内容敲入每个.c(.cpp)文件。但更为恐怖的是，当其中一个声明有变更时，就需要检查所有的.c(.cpp)文件。

　　于是人们将重复的部分提取出来，放在一个新文件里,然后在需要的.c(.cpp)文件中敲入#include XXXX这样的语句。这样即使某个声明发生了变更，也再不需要到处寻找与修改]]></description><category></category></item><item><title><![CDATA[C常用头文件]]></title><link>https://blog.youkuaiyun.com/bleauchat/article/details/117387343</link><guid>https://blog.youkuaiyun.com/bleauchat/article/details/117387343</guid><author>bleauchat</author><pubDate>Sun, 10 Apr 2022 21:02:15 +0800</pubDate><description><![CDATA[拥有可变参数的函数通过在参数列表的末尾使用省略号(,...)来定义，如下：


int check(int a, double b, ...);

不定参数的函数至少要有一个命名参数，所以下面的定义在C语言中是不允许的 ：


char *wrong(...);

库变量 va_list

这是一个适用于 va_start()、va_arg()、v.]]></description><category></category></item><item><title><![CDATA[SVN基本操作]]></title><link>https://blog.youkuaiyun.com/bleauchat/article/details/124029134</link><guid>https://blog.youkuaiyun.com/bleauchat/article/details/124029134</guid><author>bleauchat</author><pubDate>Sun, 10 Apr 2022 17:54:11 +0800</pubDate><description><![CDATA[SVN是subversion的缩写，是一个开放源代码的版本控制系统，通过采用分支管理系统的高效管理，简而言之就是用于多个人共同开发同一个项目，实现共享资源，实现最终集中式的管理；

SVN是最流行的一个开放源代码的版本控制系统。作为一个开源的版本控制系统，Subversion管理着随时间改变的数据。这些数据放置在一个中央资料档案库（Repository）中。这个档案库很像一个普通的文件服务器，不过它会记住每一次文件的变动。这样就可以把档案恢复到旧的版本，或是浏览文件的变动历史。Subversion是一个通用]]></description><category></category></item><item><title><![CDATA[后仿遇到违例]]></title><link>https://blog.youkuaiyun.com/bleauchat/article/details/124001530</link><guid>https://blog.youkuaiyun.com/bleauchat/article/details/124001530</guid><author>bleauchat</author><pubDate>Wed, 06 Apr 2022 23:08:30 +0800</pubDate><description><![CDATA[后仿真，是对经过综合/布局布线后的门级网表进行仿真，与前仿真对rtl代码进行仿真，找出功能上的缺陷相比，后仿真主要检查时序上的问题；相比较理想状况下的rtl仿真（功能仿真、前仿真），后仿消耗时间更多，在可读性差的cell里穿梭行走，debug的难度大大增强了，而一般我们在做后仿的时候，往往也意味着离tapeout的时间很急迫了

后仿的步骤：

1、用时序计算工具生成时序信息存储在SDF文件中

2、添加 notiming_check 列表文件到仿真工具选项中

3、将SDF文件反标到设计中：在tb_top]]></description><category></category></item><item><title><![CDATA[C语言随机数]]></title><link>https://blog.youkuaiyun.com/bleauchat/article/details/123887081</link><guid>https://blog.youkuaiyun.com/bleauchat/article/details/123887081</guid><author>bleauchat</author><pubDate>Fri, 01 Apr 2022 00:44:46 +0800</pubDate><description><![CDATA[1. 随机数概述

编写程序过程中，我们经常需要产生一些随机数。随机数在程序中分为两种：

真随机数：完全没有规则，无法预测接下来要产生的数。
	伪随机数：通过一些预先设定好的规则产生不能简单预测的数。
当然，我们在程序中使用的随机数主要是伪随机，一般场景下，伪随机数能够满足我们大部分的场景了。本篇文章给大家介绍下，如何在C语言中产生一个伪随机数：

伪随机数在C语言中产生分为两个步骤：

设置随机数种子
	获得随机数
设置随机数种子和获得随机数，我们需要使用两个函数。srand 函数 和 rand 函数。]]></description><category></category></item><item><title><![CDATA[package包]]></title><link>https://blog.youkuaiyun.com/bleauchat/article/details/121914815</link><guid>https://blog.youkuaiyun.com/bleauchat/article/details/121914815</guid><author>bleauchat</author><pubDate>Mon, 13 Dec 2021 23:21:13 +0800</pubDate><description><![CDATA[systemverilog中的package 为在module、interface、program之间共享parameter、data、type、function、task、class等提供了额外的机制；

在package 中一般包括类型定义、task、function以及class等，这些条目(item)都不能包含层次引用，如在某个包的class 中给某个rtl路径下的变量赋值，这是不允许的；

为了在一个范围内使用 package 中的内容，必须在使用之前导入package；如果在某个 module ]]></description><category></category></item></channel></rss>