- 博客(28)
- 资源 (1)
- 收藏
- 关注
原创 makefile
创建文本文档,取名makefile#是注释第一层:显示规则#目标文件:依赖文件 .c -> .i#【TAB】指令\\递归的方式.第一个是最终目标hello:hello.o gcc hello.o -o hellohello.o :hello.S gcc -c hello.S -o hello.ohello.S :hello.i gcc -S hello.S -o hello.ihello.i :hello.c gcc -E hello.c -o h.
2020-05-22 21:26:29 152
转载 RTL代码降低功耗的技巧
1、状态机的时候用格雷码,格雷码每次只有一个反转。2、选择二进制码的时候,原码和补码需要根据需求选择,位数适当,不要太大。3、门控时钟,编码的时候应当考虑后端工具额能否加入门控时钟。加入了门控时钟的,没加的,需要32个mux24、独热码多路器在case语句,if和状态机,实现多路器(数据选择器),输入如果是多位的总线,就会产生明显开关过程,产生额外功耗。如果用独热码,能够将未选中的总线隐藏掉,实现低功耗。把MUX变成了基本的门电路。5、除掉多余的转换读入所有的值,再进行操作,
2020-05-20 17:05:23 843
原创 perl
使用内建警告信息在运行时,加上 -w¥perl -w my_program#!/usr/bin/perl/ -w#!/usr/bin/perluse wariningsuse diagnostics 如果要查看更详细的信息可以用这个use strict 强制终止程序的执行直到程序问题被解决1、会避免错误拼写2、限定变量的范围如何使用帮助文档perldoc标量$数字标量 全部为双精度浮点数$data = 10;$data = 10.00;是一样的,都会被转到双精度浮点较长的
2020-05-13 11:51:17 389
原创 I2C总线的UVM验证
AHB总线:非常快速的传输速率APB总线:速度比其他串行总线要高I2C,UART速率就比较慢了APB总线协议1 同步总线2 一主多从3 接口简单4 可连接其他总线5 所有操作在上升沿有效PRESTn:带有n的是低电平有效T2->T4,除了enble之外,其他不要有变化slave 可以接受读写操作的时候,给一个pready信号,这样master读写的值才是正确的...
2020-04-18 15:28:56 8442
原创 Linux_basic
man :manual ,如果不知道某个命令怎么用,就man + 命令查找cd +文件 : 进入文件夹cd ~ :回到home/user/directoryls :list the directory and files 查找文件夹ls -a :所有的文件,文件夹都可以显示出来。ls -l :把文件夹的读写属性都打印出来,可以简写成llll -a:把隐藏的文件都列出来...
2020-04-16 17:25:56 142
原创 UVM笔记
验证:C、C++、system verilog 现在是主流工作:验证平台,搭平台,1、灌激励;2、收集相应;3、作比较。uvm:基于SV的验证方法学。1、提供架构;2、一套完整的库;3、一套成熟的运作机制。...
2020-04-16 12:33:06 1439
原创 STA笔记
1、clock skew偏差是两个或多个信号(可能是数据、时钟或两者)之间的时间差。例如,如果一个时钟树有500个端点,并且偏差为50ps,则表示最长路径和最短时钟路径之间的延迟差为50ps。图2-15显示了一个时钟树的示例。时钟树的起点通常是定义时钟的节点。时钟树的端点通常是同步元件(如触发器)的时钟管脚。时钟延迟是从时钟源到终点所需的总时间。时钟偏差是时钟树端点到达时间的差异一开始的时候,...
2020-03-20 21:36:58 295
原创 实际用到的修订时序的一些方法
一个时域内的情况1、如果是1bit的信号,建立时间不够的话,可以在线路中间加一个触发器。跨时域的情况1、快->慢;单bit的情况,主要是快时域产生的信号很容易在慢时钟还没采集的时候就消失,这种情况可以采用接绳法,将这个信号当作一个“时钟”。多bit:FIFO2、慢->快;主要是担心快时钟会多重复采集信号,可以用延时+异或的方式。多bit:用FIFO。...
2020-03-20 17:49:07 269
原创 硬件的加速设计方法
1、always,if-else,case assign 可以被综合,其他的都不可以被综合。使用完整的if elsecase设置default;三个条件如果不互斥 ,则会存在优先级,用parallel_case来解决A把延迟大的放在后面。单是需要兼顾前面的条件,在判断延迟大的条件的同时综合判断其他的。...
2020-03-14 16:08:47 241
转载 深度解析create_clock与create_generated_clock的区别
深度解析create_clock与create_generated_clock的区别吾爱IC社区将用本文为各位揭秘create_clock与create_generated_clock之间的联系和区别,为何要单独create一个generated_clock,以及这两种方式create的clock,它们clock之间的联系以及timing check。create_generated_cloc...
2020-02-27 19:16:13 7446
原创 verilog 数据流建模
建模方式在这里插入图片描述时延大,毛刺更容易别滤掉。行为级建模赋值语句和条件表达语句initial(用在仿真与测试)初始化在工程上风险比较大,常用复位的功能来做always@(posedge a)@(a or b) 在信号之后任何一个改变都可以@(a,b)fork-join 主要用在测试与仿真串行时相对延迟,并行是从零时刻开始的绝对延时。阻塞与...
2019-09-05 21:19:42 744
原创 verilog 数据类型
数据类型1、wire和tri:至于tri其实和wire在用法上是一模一样的,不过有时候,我们需要定义一些会被三态门驱动的硬件连线,用tri来命名会让代码更具有可读性,让人一看就知道这根连线上会出现Z状态,仅此而已!2、wor与trior:or的含义在里面。3、reg[3:0]:寄存器类型。运算符与表达式1、屏幕打印:display(”%b“,a*b)2、全等于 = = = ;非全等于...
2019-09-05 18:56:11 407
原创 两数之和
*1、nums 与nums[]的区别:*nt array[100]; 定义了一个数组,array是数组的名字,array在系统处理时,的确是用整型指针处理的,array中记录了数组在内容占用空间区域的首地址。你使用的 int array[]; 的定义方式,只能用于在子函数中定义参数数组时使用,此时参数数组的大小由实际参数数组的大小确定。int *array;也可以定义数组,但是有效使用时,必...
2019-09-03 19:54:15 82
原创 [程序错误]assignment to 'int *' from 'int' makes pointer from integer without a cast
整数和指针的问题没搞清楚,要加取地址符号
2019-09-03 19:25:17 9316
原创 整数翻转
1、取余数2、注意别溢出,所以new取long型。int reverse(int x){int tem,y,k,n;n =x;long new = 0;while(n){new = new*10+n%10;n = n/10;if(new<-2147483648||new>2147483647){new = 0;break;}}return new;}...
2019-09-03 19:19:56 62
原创 回文数
1、首先判断是否为负数,负数肯定不行;2、取%10来取出每一个的最后一位;3、每次加法前将之前的sum×10,保证最后一位腾出来。bool isPalindrome(int x){int i,n;long new;new = 0;n = x;if(x<0)return false;else{while(n){new = new*10+n%10;n = n/10;}...
2019-09-03 19:18:44 45
原创 罗马数字转整数
1、需要做一个罗马数字–>整数的翻译函数;2、for循环里面 len <=(max-1) 是为了不溢出;3、strlen:直到碰到第一个字符串结束符’\0’为止,然后返回计数器值(长度不包含’\0’);4、用正负来表示罗马数字的左右情况。int read(char a){switch(a){case ‘I’:return 1;case ‘V’:return 5;cas...
2019-09-03 19:16:30 49
原创 [C语言错误]expected declaration or statement at end of input)
[C语言错误]expected declaration or statement at end of input可能是缺少括号可能是没有定义函数
2019-09-03 19:05:50 674
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人