自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 ICC Student Guide Unit0&Unit1

Unit 0 Introduction & OverviewGoal:目标Use IC Compiler to efficiently perform nonhierarchical chip-level design planning, placement, clock tree synthesis and routing on designs with moderate timing and congestion challengesTarget Audience:面向人群ASIC, b

2021-05-15 00:01:59 2738 2

原创 PT静态时序分析 第九课

第九课 Extracted and Interface Logic Models学会在已经有设计好的门级网表的前提下,创建interface logic model,或者extracted timing model学会用命令比较创建出的模型和门级网表之间的区别为什么要创建模型?为了实现超大规模集成电路的静态时序分析,需要简化电路。Create an ILM好处:可以做分层的STA;可以真实地还原网表的物理状况;模型容易创建ILM的特性:创建ILM之前1.保证设计的约束完整2.排

2020-12-04 14:15:32 2656 2

原创 PT静态时序分析 第八课

第八课 Quick Timing ModelsOverviewQTM用于为没有门级网表的模块建立时序模型,但是仍然有一定的时序特性,相当于黑盒子。常用于供系统工程师在布局或者顶层电路的时序分析时使用,此时HDL代码还没有开始编写,也有可能是第三方提供的IP核,无法查看内部电路结构。Create QTMsQTM是用PT的脚本构造出来的,脚本的命令当中包括以下内容:延迟可以用时间(例如2ns),或者用具体的cell表示。Example4-bit宽度的同步加法器/减法器编写QTM时

2020-12-04 11:00:43 1294

原创 PT静态时序分析 实践课

实践课用pt_shell打开软件pt_shell做STA之前1.已经有做过STA的文件时用restore_session可以载入以前的文件:restore_session share/载入文件后检查时序:report_timing2.对post-layout做STA时:首先设置PT的环境:source /eda/synopsys/pt/2012.12/admin/setup/.synopsys_pt.setup加载相应的文件:set link_path "* /h

2020-12-02 16:24:50 4328

原创 PT静态时序分析 第七课

第七课 Introduction to physical datawhy use physical data?wire load model在逻辑层面(pre-layout),PT软件中的时序模型如下所示:实际布线后的时序模型如下所示:基本单元的延迟和连线延迟的占比会根据工艺大小变化:==在目前的工艺水平下,连线延迟占到了70%以上。==因此对连线延迟的准确性要求很高。introduction to physical dataparasitic versus SDF物理参数分为

2020-12-02 11:11:29 3433 1

原创 ICC布局布线 第五课 实践课(2)

第五课 Clock tree synthesis

2020-12-01 16:24:21 1837

原创 ICC布局布线 实践课

图形界面打开icc图形界面的命令:icc_shell -guistart_guigui_start大致的界面如下:图上是已经完成了布局布线的版图,放大以后看可以看到标准单元都放在row上面也有下图所示无法看到内部结果的hardmacro版图颜色不同,表示power domain不同...

2020-11-27 10:06:05 2820 1

原创 PT静态时序分析 第五课 第六课

第五课 Scripting:Collections and Procedures关于TCL的语法部分,可以参考其它软件中的笔记。Collectionscollection:是由collection的句柄指代的一组设计对象set myvar [all_inputs] {"IN1","IN2","in3"}Attributes可以用以下命令列出设计对象的属性:list_attributes -application -class clock两个示例:示例2中-filter选项只选

2020-11-24 15:31:58 1612

原创 PT静态时序分析 第三课 第四课

第三课 Timing Exceptions即时序例外Using Timing Exceptions上一节课所讲到的时钟约束都是针对常规的单周期时钟,默认施加在所有path上。若有些path并不是常规路径,不需要PT分析,则需要额外的约束来对其进行设置。Related Commands:Start and end points这类时序例外需要有合法的路径起点和终点,对起点和终点的规定如下:起点:输入端口,寄存器的时钟端口终点:输出端口,寄存器的信号端口皆可:Clock object

2020-11-21 12:00:52 3802

原创 PT静态时序分析 第一课 第二课

绪论目录:第一到第四课比较重要第一课

2020-11-20 11:01:18 5688 3

原创 verilog RTL编程实践 笔记 十七课

十七课lab10 loopsfor循环可不可综合取决于变量是否是固定值。for循环很多情况下和generate语句放在一起使用。repeat/while不可综合,SV里面的foreach不可综合。FindPatternBeh.v代码的功能是在某一帧输入中寻找规律。pad可以视为分割数据的标签,IJump设定了分配给每个标签的位数,StartI设定起始位。...

2020-11-12 10:01:57 496

原创 verilog RTL编程实践 笔记 十六课

十六课lab09 race_operator_netter竞争与冒险 Racer.valways模块中左侧的数据类型必须是寄存器。注:此模块不符合coding style,仅做测试用。操作符 Operators.vFunction: Shows results of various operators and precedence.可以用于区分逻...

2020-11-12 10:01:38 246

原创 verilog RTL编程实践 笔记 十五课

十五课lab08 counter最简单的方法就是用代码直接i=i+1。Ripple counter设计电路时需要1.先写design spec,用自然语言去描述功能;2.构造architecture,搭建电路框图。总线AMBA的spec:AMBA→AHB/APB/AXICounter4.v这里是行为级的写法,注释当中是RTL级的写法。综合时一般以时序为先,...

2020-11-12 10:01:22 473

原创 verilog RTL编程实践 笔记 十四课

十四课lab07lab07的内容是实现一个memory在对模块不了解的情况下写一个SRAM是非常耗费时间的IxOffset.v实现功能:每过5个时间单位将PIxLine1的8位数据赋值给PixLine2Legal.vA check on legality of various memory reference constructs.是一个testbench...

2020-11-12 10:01:02 541

原创 verilog RTL编程实践 笔记 十一课 十二课

第十一课Verilog simulation event queue与VCS视频教程第一课的内容相同。补充:SV的队列有三个模块:oop,rtl,assertion,interface会隔离oop和rtl(?)lab04scheduler.v模块当中包含了一些testbench,用来描述阻塞语句和非阻塞语句的区别**在大型电路(如CPUGPU等)用RTL代码跑...

2020-11-12 10:00:26 296

原创 verilog RTL编程实践 笔记 第十课

第十课lab03数字电路主要有control path和data path,计数器是非常常见的控制手段,可以向上计数也可以向下计数converter.v//converter.v//module converter #(parameter WIDTH = 4, PAD_NUM = 0)module converter #(parameter WIDTH = 4, PAD_...

2020-11-12 09:59:57 370

原创 verilog RTL编程实践 笔记 第八课 第九课

第七课由于太短,不作记录第八课make会直接寻找名字为Makefile的文件,执行其中的命令。dve可以调出gui界面,然后打开vpd文件。DC也可以通过.tcl文件执行脚本。(以上笔记与第六课相同)lab01Timing report在lab01(课程特有)中,用已经写好的tcl文件进行DC综合:综合以后的电路没有满足timing的要求(vi...

2020-11-12 09:59:03 299

原创 verilog RTL编程实践 笔记 第六课

第六课以《Verilog数字VLSI设计教程》为教材,包含27个lab工艺在library文件夹当中(只限课程内,光盘中没有)misc文件夹中包含了一些参考文档lab01文件名需要和模块名一致;端口声明默认位宽是1bit,类型是wire;`include等反引号后面不需要加分号。例句与解释$dumpportsall;$dumpfile("VCS_S...

2020-11-12 09:58:45 489

原创 verilog RTL编程实践 笔记 第五课

第五课AMBA 2.0 AHB SRAMCHow to build and test a moduleTestbenchtestbench是最后加在设计电路的输入接口上的硬件模块,用来测试必要的功能。主要功能:1.generate timulus 2.check response**第四课的答疑:$finish(2)中的数字代表最后打印信息的详细程度,默认是1。...

2020-11-12 09:58:33 534

原创 verilog RTL编程实践 笔记 第三课 第四课

第三课Timing#数字 表示经过多长时间begin……end 表示顺序执行;fork……end表示并行执行。Continuous AssignmentsSyntaxassign #del <id> = <expr>#del表示延时,属于可选项;<id>表示net的名字Properties1.都是并发执行的2.互相独...

2020-11-12 09:58:09 609

原创 ICC布局布线 第四课

第四课TCL语言simple text outputs "Hello"puts {Hello}用大括号则文本不转义**有的时候文本会出现乱码^M,是因为unix和windows对换行符处理不同,lunix用\n换行,windows用\r\n。推荐用ultraedit,可以自动替换最后的换行符。tcl每一行的结束用回车标志,也可以用分号variablesset a 5set b {a b c d}set b 1.25set c "Hello"与c语言等有强制类型的语言不同

2020-11-04 22:17:27 4085

原创 ICC布局布线 第三课

第三课Layoutpower pin一般用M1、M2power mesh/power grid一般用top meta(l高层金属),是一种相对的概念,这里的top metal概念与工艺文件中的top metal不同standard与power mesh所连接的pin也叫做follow pinCustom Macro/Cell模拟电路的版图走线较为规则,用的是custom layout,讲究power plan和floorplanStandard Cell vs. Custom工艺中

2020-11-03 23:20:31 6296

原创 布局布线ICC 第二课

第二课tablesetup和hold time的检查也要通过一个table,在dc报告中的lib_setup_time的来源就是这一类表格。信号传输的延迟以及控制晶体管开关的栅电压转换延迟,将会决定建立时间的正负。corner一般高温低压的工艺参数会变差,但是60nm以下的某些工艺低温低压的参数也会较差。layout canstraint除了DRC和LVS意外还有DFM规则检查,DFM是工艺厂商推荐的规则,并不需要全部满足,但是会影响到芯片的良率。Metal fill版

2020-10-24 15:29:33 2203

原创 布局布线ICC 第一课

第一课什么是后端?拿到的是加上了各种约束(constraint)的代码,目标是将代码转化为版图。前端和后端需要完成的工作如下图所示:后端的流程:1.拿到netlist后,首先floorplan,给芯片设定形状并安排cell的位置2.定义macro size,此时需要给芯片做partition,macrosize就是每个模块的大小3.macro level backend,进行模块级的后端设计4.signoff,指满足工艺厂商要求的过程,包括timing,layout,power等,最主要

2020-10-20 16:59:58 1718

原创 Systemverilog 第十二课 线程

线程两种分组语句:begin/end:串行执行fork/jion:并行执行join,join_none,join_anyjoin必须要执行完程序段内所有的进程才会跳出在上述程序中理论上两个$display没有先后关系,但是仿真器会先后输出两句话(输出顺序无参考价值),因此应当尽量避免这种写法。整个程序段在至少经过20ns并且eventA执行完毕后才会跳出。** join_any**等到任何一个进程执行完毕即可跳出,但是剩下的进程会继续执行join_none程序段内的进

2020-08-24 09:47:28 247

原创 Systemverilog 第十课 随机化

第十课 RandomizationRandomization关键词:randrand[7:0] y;y会在0~255之间随机生成。关键词:randcrandc[1:0] y;y会在0~3之间随机生成,并且必定以四个为循环生成互不相同的数字,只能对bit 或enum类型使用这个关键词。关键字:constraint对于声明过rand/randc的变量可以使用constraint限定randomize()函数randomize属于内嵌的系统函数 ,函数会给所有object里

2020-08-24 09:47:11 744

原创 Systemverilog 第九课 面向对象高级编程

第九课 面向对象高级编程new的时候括号可加可不加,如果有参数列表则必须含有括号。Polymorphism 多态当类派生出子类时,基类中的一些方法可能需要被重写,对象中的类型来决定调用方法的实现方式,通常这是一个动态的过程,动态的选择方法的方式叫多态。虚方法(virtual function)的重写与实现就是多态。例子:实方法和虚方法的区别就在于是否有关键字virtual注意:基类当中如果定义了virtual,子类当中继承的基类即使不加关键字,也会默认认为是虚类上述例子中,两边第一次dis

2020-08-24 09:47:04 163

原创 Systemverilog 第八课 面向对象编程

第八课 OOP什么是OOP?可以帮助你搭建并维护一个大型的testbench;提升代码效率;提升代码的复用性。TerminologyClass(类,蓝图) -> Object(对象,表示具体的物件) -> Handle(句柄,指向对象的指针/地址)-> Properties(属性,类当中定义的变量)-> Methods(方法,控制属性的方法)SV当中尽量不要写always,而是用task和function处理任务的过程(偏软件思维)OOP的三大特点:封装、继承、多态

2020-08-24 09:46:56 527

原创 Systemverilog 第七课 Structure

第七课Structurestructure是一组变量或者常数的集合,能够更方便地同时访问其中的元素。语法:struct{ int a,b; logic[7:0] opcode; logic[23:0] address; bit error;} Instruction_Word最后一行是这个structure的名字,引用变量时的格式为:Instruction_Word.address = 24'hF0000;Packed structurestructure默认状态下在内存当中

2020-08-24 09:46:43 699

原创 Systemverilog 第六课 Array/Queue/Method

第六课Dynamic array1.动态数组在定义时不需要确定数组的大小,用空括号[]声明,但是在仿真时需要声明,完成仿真后即可释放。2.当元素个数以及元素基本类型相同时,固定长度的数组可以被assign给动态数组3.$size函数可以用于返回固定长度/动态数组的长度。data_type name_of_dynamic_array[];name_of_dynamic_array = new[number of elements];图中new[20] (dyn)在重新定义动态数组元素宽度的同

2020-08-24 09:46:36 1616

原创 Systemverilog 第五课

ProgramQ:Program能不能含有always块?A:不能,因为program不能含有module,因此必然不会含有always块。要生成图中激励,可以写出如下的代码:program test(arb_if.TB arbif);initial begin //asynch drive reset arbif.reset <= 0; #15ns arbif.reset <= 1; #35ns arbif.reset <= .

2020-08-24 09:46:12 250

原创 Systemverilog 第四课 Interface and program

P13 Interface and Program正式运行testcase之前需要做好的准备:1.对CLK和RESET进行规划,DUT和TB都需要时钟和复位信号。2.对于第一个testcase用log记录仿真过程,并用display显示仿真结果。3.首先排除tb的错误,再检查tb给dut环境设置是否错误,全都没错才去检查RTL的错误。Q:logic数据类型有几个状态?A:4个,01xzInterfaceQ:如何连接testbench与DUT?A:先定义连接途径,并利用例化将端口连接起来

2020-08-24 09:45:55 924

原创 Systemverilog 第一课

P9 课程概述课程内容Verilog Testbench功能算法需要用C/C++进行描述· 产生激励 Generate stimulus· 将激励输入到待测设计 (DUV-Design Under Verification)· 获取响应 Capture response· 检查响应的正确性 Check the response for correctness· 根据验证目标评估验证进度 Measure the progress against the overall verif

2020-08-24 09:45:26 294

原创 Perl教程 第三课 第三节

Pattern matching and Regular Expression分隔根据指定的分隔符拆开字符串,返回子串的列表。语法规则: @list = split /separator/, $stringor @list = split(/separator/, $string)这里separator是分隔符,string是分隔目标。注意split会保留开头的空字段,并省略结尾的空字段。实例[3]中开头的空字符段保留,结尾的空字符段被省略。[5]中splig字符的默认操作是

2020-07-31 11:28:27 134

原创 Perl教程 第三课 第二节

模式锚位1.^:标志字符串的开头2.$:标志字符串结为 eg/^\s* $/ 可以匹配空串3./b:单词(\w+)锚位,匹配任何单词的收尾4./B:非单词锚位,能匹配所有\b不能匹配的位置在perl中的单词的定义是:由数字、字母、下划线组成的单独的词串绑定操作符 =~默认情况下模式匹配的对象是“$ _ ”,绑定操作符=~用于告诉Perl拿右边的模式匹配左边的字符串,而不是匹配“$_”变量中的字符串。变量内插在Perl的正则表达式中可以进行双分界符形式的变量内插。e.g. $

2020-07-27 11:18:41 298

原创 Perl教程 第三课

Pattern Matching and Regular Expression模式之从字符串中寻找特定序列的字符或者匹配某字符串的模板,模式由反斜线包含。正则表达式,指用某种模式去匹配一类字符串$_ = "Yahoo will close.";if (/Yahoo/){ #此处使用了匹配 print "Matched \n"; }匹配1.小数点 . :匹配任何单个字符(除换行符)2.反斜线\ :转义字符3.加号+ :匹配该字符前面的字符至少一次4.星号* :匹配该字符前面的字符任

2020-07-27 11:18:31 282

原创 VCS 视频教程 笔记 第五课

第五课如何写出一个合格的RTL代码,如何在仿真和验证时节省资源目标:1.养成好的coding style 2.通过+rad选项改善仿真性能VCS内部结构VCS当中有三个主要结构可以改善仿真性能以及几个coding改善方式:使用可综合的verilog语法 提升抽象层次,不要用太底层的描述方式,可以适当地用状态机描述 避免双向口,和开关级的原语(很少会碰到)...

2020-07-13 19:21:39 217

原创 VCS 视频教程 笔记 第四课

第四课Debugging simulation mismatchesif (data == 3)是判断语句,而误写成 if(data = 3)就会先把值赋给data,再判断data是否为3,因此判断语句永远为真。用(3 == data)可以避免误操作,只要少一个等号就会报错。本章学习内容使用+race选项对竞争冒险现象生成报告 e.g.对一个数据同时进行读和写 使用$vcdpl...

2020-07-13 19:21:28 650

原创 VCS 视频教程 笔记 第一课

第一课仿真事件队列Verilog内建仿真规范同一个代码在不同的仿真器当中,或者同一个仿真器的不同版本结果可能是不同的,因为仿真器的内建规范不同。verilog的仿真队列如上图所示:1.VCS首先会读取所有的initial和always block,并执行一些没有延时的语句。2.将时间设置成t=03.进入active region:(1)首先执行原语(包括UD...

2020-07-13 19:21:15 872 1

原创 VCS 视频教程 笔记 第三课

第三课Post-processing with VCD+ files后处理模式第二课中介绍的是互动模式(interactive)是一种动态debug的做法,在第三课中后处理模式(post-processing)需要先仿真完成后打开波形当项目趋于收敛时(即比较稳定)时,不会干预仿真,而是等仿真执行完毕出现Fail会启用DVE,只有ERROR和Warning出现说明可以仿真是可以...

2020-07-13 19:20:58 512

VCS仿真教程lab文件

VCS仿真教程的配套代码,请拖入linux配合vcs食用。

2019-10-26

空空如也

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

TA关注的人

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