- 博客(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
原创 后仿 时序检查 为什么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关注的人
RSS订阅