自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 tcl脚本 如何判断是直接执行此脚本还是 通过其他文件source此脚本

如果 info source 成功,说明 slv.tcl 是被其他脚本(如 main.tcl)source 的。# 不论是直接运行 slv.tcl,还是被 source,info script 都能获取 slv.tcl 本身的路径。# 如果 info source 报错,说明是直接运行 slv.tcl,而不是被其他脚本 source。# 如果 slv.tcl 是直接执行的(如 tclsh slv.tcl),info source 会出错。# 获取当前脚本自身的路径,并规范为绝对路径。

2025-06-25 14:31:39 371

原创 tcl脚本 mst端搜索总线信号

模式2:其它格式,如 maddr/saddr 之类(用于标记是其他格式,而非干净信号)# 这里是为了判断 是不是已经匹配过一次了。# 模式1:干净信号(前后不是字母/数字)

2025-06-25 10:28:35 164

原创 芯片验证 IO测试总结

测试原理:pad上至少存在两个输入功能的信号,比如说gpio1 gpio2,如果需要测试gpio1的安全值是否正确,需要先通过复用关系选中gpio2,然后段言gpio1的输入值跟设计给出的默认值是否相同,如果pad上还有其他输入信号,则依次选中之后,判断gpio1的输入值是否正确。通过ie将输入使能关闭,pad上给1 给0 判断 pad的值是否会传递到IP端口上,没有传递进去表示是IE功能正常。输出测试--在不加外部上拉的时候,测试PAD上的值为0,保证可以正常输出0。加外部上拉,测试PAD上的值为1.

2025-06-10 10:27:30 344

原创 pll频点计算 不考虑展频 但是会输出最小频点组合的都多个组合

【代码】pll频点计算 不考虑展频 但是会输出最小频点组合的都哦个组合。

2025-05-05 22:44:27 147

原创 PLL输出频点 考虑展频

【代码】PLL输出频点 考虑展频。

2025-04-30 18:04:54 186

原创 pll频点计算 不考虑展频

【代码】pll频点计算 不考虑展频。

2025-04-30 18:03:26 155

原创 后仿 时序检查 为什么verilog和sdf文件中都有,且延迟不一样

之所以sdf中的延迟和verilog中的延迟不一样是因为,verilog中只是理想值,跑后仿的时候,sdf中的延迟会把verilog中延迟都替换掉。

2025-02-08 15:43:08 333

原创 虚方法——systemverilog,SV

此时父类句柄a指向子类对象,调用a.method(),SV中会有个动态查找的过程,当a句柄看到父类A中的method()是虚方法时,会查找子类中是不是重写了method(),如果子类中也有同名、同参的方法,会直接调用子类中的method(),实现子类对父类方法的继承。在父类中使用virtual定义的方法和函数,父类句柄在指向子类对象时,可以动态索引到子类重写的子类方法。默认情况下,子类覆盖的方法并不会继承父类的同名方法,只有通过super.method()的方式显式执行,才会达到继承父类方法的效果。

2024-10-18 10:56:33 473

原创 centos gvim安装步骤

sudo make install 安装成功显示如下。执行makefile -j8表8个进程。git上先下载vim安装包。出现 这个界面表示安装成功。

2024-07-07 18:06:21 916 1

原创 芯片验证 后仿 时序检查 specify

在这个例子中,$recrem 用于同时设置联合恢复时间和去除时间约束,确保在控制信号 clr 上升沿发生之后,时钟信号 clk 的上升沿至少在 2 个时间单位内发生,并且在 clr 上升沿之前,clk 上升沿至少在 3 个时间单位内发生。当设计进行时序分析时,如果发现保持时间约束违规(data_event 发生在 reference_event time + limit 之后),工具会报告相应的错误或警告,以提示设计人员需要调整时序约束或电路设计。

2023-11-15 16:20:03 3014 1

原创 多态和动态类型转换

bd.display()执行的结果一样,bd.vdisplay()执行的结果不一样,这就是因为vdisplay加了virtual声明,结果是成功通过父类方法调用执。首先,声明父类bird(鸟类),然后父类里面有两个方法,一个是display,一个是vdisplay(vdisplay有个virtual声明,这是重点);(2) 子类中重写的方法对父类是不可见的,所以要想子类重写父类的方法能被父类看到,那就需要虚方法。然后看到一开始 bd.display()、bd.vdisplay()打印的都是父类中的结果。

2023-10-16 11:57:41 137 1

原创 关于单片机为啥要把结构体用typedef重定义

关于单片机为啥要把结构体用typedef重定义--为已经存在的变量类型重新命一个别名struct student{int score;char *name;};因为在C语言中结构体在函数中定义变量的时候需要这样写: struct student stu1;定义变量需要每次吧struct加上,这样比较麻烦。c++里边的话可以不加struct直接用student来定义变量。所以用typedef可以解决这个麻烦,如下。typedef struct...

2021-05-25 21:46:20 1231

原创 结构体大小计算

结构体大小的计算(学习笔记)计算需要遵循两条规则(1)结构体成员的偏移量必须是成员大小的整数倍。(0被认为是任何数的整数倍)(2)结构体大小必须是所有成员(数组,结构体除外)大小的整数倍。注:偏移量指的是每个成员相对结构体首地址的位移。ex:1.struct s1{char ch1; //偏移量为0 char ch2; //偏移量为1int i; //偏移量为2,不是自身大小的整数倍。所以前边需要补2个字节空位。};...

2021-05-25 20:54:04 1135

原创 C语言的API函数

C语言的API函数字符指针的初始化--memset函数char *strDest; //字符指针无法存放字符串,只能指向一个字符串的起始地址。strDest =(*char)malloc(128); //开辟128个字节空间 分配的空间要及时释放,否则会造成内存泄漏问题。if(strDest==NULL) //malloc申请空间可能会失败{...

2021-05-25 17:21:59 722

空空如也

空空如也

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

TA关注的人

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