自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C - int constant

int* - pointer to intint const * - pointer to const intint * const - const pointer to intint const * const - const pointer to const intNow the first const can be on either side of the type so:const int * == int const *const int * const == int const *

2021-12-12 05:18:25 742

原创 Soritng Algorithm

Selection sortgo through the rest of the list and take the next smallest value.Insertion sortTake the next value and insert it where it belongs in the already sorted area.Quick sortChoose a value, put all of the larger values to the right and smaller

2021-12-11 19:57:42 322

原创 C - 零长度数组

最近在看代码有看到变长数组的应用,这里整合了两篇比较好的变长数组的文章分享给大家,文章链接见文末。零长度数组零长度数组,顾名思义,就是长度为0的数组。ANSI C 标准规定:定义一个数组时,数组的长度必须是一个常数,即数组的长度在编译的时候是确定的。在ANSI C 中定义一个数组的方法如下:int a[10];C99 新标准规定:可以定义一个变长数组。int len;int a[len];也就是说,数组的长度在编译时是未确定的,在程序运行的时候才确定,甚至可以由用户指定大小。比如,我

2021-12-10 03:05:27 390

原创 C - do{....} while 0 & goto

在一些函数中,我们可能需要在return语句之前做一些清理工作,比如释放在函数开始处由malloc申请的内存空间,使用goto总是一种简单的方法:int foo(){ somestruct *ptr = malloc(...); dosomething...; if(error) goto END; dosomething...; if(error) goto END; dosomething...;END: f

2021-12-10 02:51:16 447

原创 C - do{.....} while 0

在很多的C程序中,你可能会看到许多看起来不是那么直接的较特殊的宏定义。下面就是一个例子:#define __set_task_state(tsk, state_value) \ do { (tsk)->state = (state_value); } while (0)在Linux内核和其它一些著名的C库中有许多使用do{…}while(0)的宏定义。这种宏的用途是什么?有什么好处?Google的Robert Love(先前从事Linux内核开发)给我们解答如下:do{…

2021-12-10 02:47:00 84

原创 DC -.sdc & .sdf

SDC - Synopsys Design ConstraintsThis file is used for all implementation tools starting from synthesis, timing analysis, place&route,dft,fpga…etc. This is very important file to ensure proper operation of your design, fpga, siliconSDF - Standard Del

2021-12-09 04:36:33 871

原创 DC - .saif & .vcd

saif contains the switching profile of the simulation data generally used by prime power.vcd files contain all the information that might be carried by saif but it is more lengthy and sometimes contain redundant information.To analyze the average power co

2021-12-09 04:34:44 428

原创 RISC-V - 16, 32, 64

RISC-V allows mixing 16-bit, 32-bit, 48-bit, 64-bit instructions, and beyond!RV32I defines a 32-bit computer architecture, where registers are 32-bits wide. Its instructions are all 32-bits wide. For example, it has lw to load a 32-bit word into a regis

2021-12-08 03:31:18 619

原创 Difference between char* and const char*?

char* is a mutable pointer to a mutable character/string.const char* is a mutable pointer to an immutable character/string. You cannot change the contents of the location(s) this pointer points to. Also, compilers are required to give error messages when

2021-11-07 15:09:37 107

原创 Constant pointer vs Pointer to constant

const int* ptr; declares ptr a pointer to const int type. You can modify ptr itself but the object pointed to by ptr shall not be modified.const int a = 10;const int* ptr = &a; *ptr = 5; // wrongptr++; // right Whileint * const ptr; de

2021-11-07 15:06:11 111

原创 Verilog- $stop $finish的区别

$finish exits the simulation and gives control back to the operating system.$stop suspends the simulation and puts a simulator in an interactive mode.

2021-10-28 16:50:28 525

原创 Verilog -sbit

sbit是定义特殊功能寄存器的位变量。bit和sbit都是C51扩展的变量类型。典型应用是:sbit P0_0=P0^0;//即定义P0_0为P0口的第1位,以便进行位操作。bit和int char之类的差不多,只不过char=8位, bit=1位而已。都是变量,编译器在编译过程中分配地址...

2021-09-28 10:15:36 175

原创 文档标题中的缩写字母代表的意思

文档标题中DS:data sheetRN: release note

2021-09-27 11:35:19 607

原创 2021-09-27 周会总结

资深工程师和junior工程师的区别就是在于能不能发现仿真看不出来的问题。比如:CDCRDC - 这就牵扯到 Recovery & remove 的问题输入输出的处理比如clock的去抖动处理

2021-09-27 11:20:25 67

原创 Asserted Deasserted

Asserted(Asserting、Assert),Deasserted (Deassert、deasserting、de-asserted)asserted的意思就是把信号变为active(可以理解为有效),根据系统有求不同,该有效电平可以是高电平(即高有效)也可以是低电平(即低有效)。deasserted的意思就是解除active状态,就是信号变为非active状态,可以是高也可以是低。...

2021-09-24 11:34:30 428

原创 CAN总线笔记

CANFD有两种标准,分别为ISO CANFD和非ISO CANFD,非ISO CANFD就是BOSCH制定的规范,目前主流推ISO CANFD。经过查找手册,发现CANFD寄存器默认是ISO CANFD

2021-09-23 14:51:53 68

原创 数字后端 - 一些名词总结(未解决)

close timingdrclvs独立开发后端flowICC - floorplanePT - timing analysislinux - cmdlinux - ecodc/fm/ic/pt/star/icvdrc/lvs/tmax/redhawk/calibretiming fix的ecoicc跑完自动做star pt,然后自动跑dmsa eco timing fix, 自动回去icc ecodrc fixicc里面用tcl script是比较慢的,比如他不能忍受一个tcl

2021-09-17 15:32:12 813

原创 SoC 与 MCU

1、CPU(Central Processing Unit),是一台计算机的运算核心和控制核心。CPU由运算器、控制器和寄存器及实现它们之间联系的数据、控制及状态的总线构成。差不多所有的CPU的运作原理可分为四个阶段:提取(Fetch)、解码(Decode)、执行(Execute)和写回(Writeback)。 CPU从存储器或高速缓冲存储器中取出指令,放入指令寄存器,并对指令译码,并执行指令。所谓的计算机的可编程性主要是指对CPU的编程。2、MPU (Micro Processor Unit),叫微处理

2021-09-17 15:01:31 781

原创 数字IC后端中的各种仿真简介

数字电路设计中一般有源代码输入、综合、布局布线等三个比较大的阶段,而电路仿真的切入点也基本与这些阶段相吻合,根据适用的设计阶段的不同仿真可以分为RTL行为级仿真、综合后门级功能仿真和时序仿真。这种仿真轮廓的模型不仅适合FPGA/CPLD设计,同样适合IC设计。一、RTL行为级仿真在大部分设计中执行的第一个仿真将是RTL行为级仿真。这个阶段的仿真可以用来检查代码中的语法错误以及代码行为的正确性,其中不包括延时信息。如果没有实例化一些与器件相关的特殊底层元件的话,这个阶段的仿真也可以做到与器件无关。因此在设

2021-09-17 15:01:08 1968

原创 Chisel 入门

each creation of a component adds hardware;each assignment statement generates gates and/or flip flops.When Chisel executes your code it runs as a Scala program, and by executing the Chisel statements, it collects the hardware components and connects th

2021-09-16 17:27:36 159

原创 UVM-小结

uvm_driver会从uvm_sequencer中获取transaction,经过转化进而在接口中对DUT进行时序激励uvm_monitor通常执行的 功能包括:观测DUT的interface,并且收集总线信息永远不会驱动DUT,即永远保持passive模式在总线协议或者内部信号协议观察时,可以做一些功能和时序的检查对于更加复杂的检查需求,它们可以将数据发送至其他验证组件,例如scoreboard, reference model 或者coverage collector.uvm_se.

2021-09-16 09:04:57 91

原创 TCL_括号总结

{……}:它在外面谁都不好使,锁死,不许替换,包括转义字符。“……“: 它在外面,内部的东西一切皆字符,该替换就替换。[……]:内部是可执行指令命令输出{[......]}[......]"[......]"Value of ......[{.....}]Error"{......}"{.....}["....."]...

2021-09-13 16:48:30 268

原创 VHDL语法总结

VHDL语法总结##VHDL数据类型转换STD_LOGIC_1164包集合TO_STD_LOGIC_VECTOR(A)----由BIT_VECTOR转换为STD_LOGIC_VECTORTO_BIT_VECTOR(A) -----------由STD_LOGIC_VECTOR转换为BIT_VECTORTO_STD_LOGIC(A)-------------由BIT转换成STD_LOGICTO_BIT(A) --------------------由STD_LOGIC转换成BITSTD_

2021-09-13 07:55:23 884

原创 数字后端 - STA

Timing arc,中文名时序弧。这是timing计算最基本的组成元素,如果两个pin之间在timing上存在因果关系,我们就把这种时序关系称为Timing arc,主要分为定义时序延迟,和定义时序检查两种。为啥叫它时序弧?因为时序图中经常用一条弧形线段来表示它。如下图所示:cell的timing arc定义在lib中,non-unate clock 意思是输出与输入无函数关系,即不相关的non-unate path的意思就是单个输入固定时,输出也是不确定的,没有确定的函数关系,即不相关路径根据s

2021-09-10 15:57:57 2909

原创 floorplan 和 place的区别

floorplan放macro,就是大的cell(人工为主),place放std cell(自动为主)当然floorplan还有其他的一些工作,比如放 IO,创建power,放physical cell等physical cell 就是 endcap, tap cell之类,就是没有逻辑意义的单元,没有任何功能性质,功能比filler多点,filler主要是连接rail,N阱等endcap放在row两端,tap cell 防闩锁效应Tap cell, 也被称为welltap cell。这也是一种特殊

2021-09-08 10:57:48 1987

原创 IC设计- 浅谈各种验证 - 功能验证,形式验证,原型验证

浅谈逻辑仿真,形式验证及硬件仿真随着硬件设计复杂性的不断增加,为了能够最大程度的使得验证收敛,验证方法也越来越多,今天我们针对常见的几种验证方法做一些简单的分析,指出它们的常用应用环境以及一些优缺点,主要包含:逻辑仿真,形式验证,硬件仿真。一、逻辑仿真(功能验证)- UVM相关从我们整个芯片的验证过程来讲,基于软件的逻辑仿真在验证中仍然起着举足轻重的作用,整个项目中的功能验证都是通过逻辑仿真来进行验证,下面我们就逻辑仿真的优缺点进行一个简单的阐述:优点:逻辑仿真的工具可以在标准的服务器上运

2021-09-08 09:35:16 8604 1

原创 数字IC设计 - 后端DC 概述

1、逻辑综合的概述synthesis = translation + logic optimization + gate mapping .DC工作流程主要分为这三步Translation : 翻译,主要把描述RTL级的HDL语言,在约束下转换成DC内部的统一用门级描述的电路(Generic Boolean Gates)(DC自己的库表现),以GTECH或者没有映射的ddc形式展现。Logic optimization :逻辑优化, 就是把统一用门级描述的电路进行优化,就是把路径调整一下,门给改一下

2021-09-06 14:24:11 1864

原创 2021-09-06 周会小结

DC检查比Verdi更为全面,因为DC有是否可综合的检查SpyGlass的检查又称为静态检查,所需时间长,报出的信息多,需要一条条过滤或者waveLint:类似于Coding style check输出无接口可以,但是输入无驱动不行!...

2021-09-06 14:22:26 104

原创 数字IC设计-SpyGlass

用spyglass -tcl ./scr/your_chip_edition_lint.tcl 跑lintspyglass -tcl ./scr/your_chip_edition_constraint.tcl 跑constraintspyglass -tcl ./scr/your_chip_edition_cdc.tcl 跑cdc, rdc

2021-09-03 14:53:54 1116

原创 数字IC验证浅谈

什么是验证?我所认为的验证就是指为确保芯片在流片之前,所有既定功能已被正确设计而所做一系列工程活动,站在全流程的角度,它是一种防范于未然的措施。我们知道芯片一旦被制造出来,就没有办法进行更改,即使在流片过程中容许一定程度的EC,其代价也非常昂贵,所以把问题拦截在流片环节之前异常重要,这正是验证存在的意义。不要把验证与测试等同起来,测试的所有结果都基于既成事实,即使发现了功能问题,也无力回天了。什么是验证方法学?验证工程师绕不开的一个基本概念。芯片规模越大功能越复杂,潜在的问题也就越多,验证的难度也就越大,

2021-08-30 13:46:42 2397

原创 Emacs - Verilog mode 自动实例化

打开emacs,敲入下面代码:module fanout (/*AUTOARG*/) input i; output [31:0] o; wire [31:0] o = {32{i}};endmodule保存,(快捷键CTRL+x CTRL+s,为了便于说明,用C-x C-s来表示),命名文件为fanout.v。然后,用户C-c C-a,代码就变成了如下:module fanout (/*AUTOARG*/ // Outputs o, // Inputs

2021-08-27 14:29:20 2023

原创 数字IC验证 - UVM - sequence

每个sequence都有一个body任务。当一个sequence启动后,会自动执行sequence的body任务,所以在sequence的class中,一定要有一个名为body的task。此外,如果一个sequence中,还有pre_body与post_body,则这两个task,会分别在body的task前面与后面执行。sequence的源码中,没有build_phase,所以,不要在sequence中使用build_phase。但是记得,sequencer中可以有build_phase。.

2021-08-27 11:17:55 515

原创 数字IC设计 - SODS - 低功耗设计

掉电用例一般跟低功耗相关,主要包含三个概念:isolation,retention和level shifter。根据电源的作用效果,可以分为常开区和掉电区。 当一个芯片中的电源数目不止一个的时候,就需要小心谨慎的描述各个电源之间的关系。这种设计类型被称为Multi-Voltage(MV)。 其中又包含一些小的概念,比如level shifter,isolation cell,等等。isolation从字面意思可以理解,是隔离的意思。如果当前区域或者外部区域中的一个电源被关闭了,则相应的信号线上的被

2021-08-27 11:04:52 709

原创 ARM | Thumb与 ARM 状态切换

CODE32 //ARM状态下的代码LDR R0, =Into_Thumb+1//产生跳转地址并且设置最低位BX R0//Branch Exchange 进入Thumb状态…CODE16 //Thumb状态下的子函数…LDR R3, =Back_to_ARM//产生字对齐的跳转地址,最低位被清除BX R3//Branch Exchange 返回到ARM状态CODE32 //ARM状态下的子函数Bach_to_ARM…在上面的程序中,CODE16/CODE32伪指令告诉汇编编译器

2021-05-06 12:25:36 1004

原创 ARM | LDR &ADR

LDR 是ARM中的指令,也是伪指令。当用 LDR r, =imd // r 为寄存器, imd为立即数LDR 是一条伪指令。编译器会根据 立即数的大小,决定用 ldr 指令或者是mov或mvn指令。当imd能用mov或者mvn操作时,就将它翻译成一条mov或mvn指令。当imd大于mov或mvn能够操作的数时,编译器会将imd存在一个内存单元中,然后再用一条ldr指令加载这个内存单元的的值到寄存器中。LDR r, label 和 LDR r, =label的区别:LDR r, =label

2021-05-06 10:38:59 101

原创 C语言 | 指针

函数参数为指针本质就是拿内存地址直接操作,所有的变量(包括形参和指针变量)都指向同一个地址,对那个地址内的内容直接操作#include <stdio.h>void swap (int *a, int *b); // 指针作为参数int main(){ int i = 20, j =10; swap (&i, &j); printf("i = %d, j = %d\n", i,j);return 0;}void swap (int..

2021-05-05 15:05:44 55

VLSI 国外校招笔试资料.pdf

VLSI 国外校招笔试资料.pdf

2021-08-06

空空如也

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

TA关注的人

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