- 博客(30)
- 资源 (1)
- 收藏
- 关注
原创 Tessent MBIST SDC
主要是两个PROC,tessent_constrain_${design_name}_mentor_ijtag_non_modal和tessent_constrain_${design_name}_mentor_memory_bist_modal。其中,Memory/MBIST controller/MEM Interface可以从func_clk_1来(用func_clk_1和func_clk_2的高频时钟),如图中红色线。其中,SIB和BAP用ijtag_tck的clock,如图绿色线。
2024-11-22 17:51:31
1025
原创 Tessent MBIST算法
过程5:把所有单元的值,读出来并检查是否是0,再给所有的单元写入1,读出来检查是否是1,再给所有单元写入1。过程6:把所有单元的值,读出来并检查是否时1,再给所有单元写入0,读出来检查是否是0,再给所有单元写入0。过程7:按照地址降序,读出来所有的地址并检查是否是0,再按照降序给所有单元写入1,再读出来检查是否是1。过程8:按照降序读出来所有单元是否是1,再按照降序给所有单元写入0,并读出来检查是否是0。过程9:按照升序读出来所有单元是否0,再按照升序写入0,再按照升序读出来检查是否是0。
2024-11-22 16:09:53
394
1
原创 Tessent MBSIT对Memory分组的方法
具体分法:工具吃了def之后,会把memory都划分成cluster,然后用cluster的直径除以die size的对角线的值,得到的ratio值就是physical_cluster_size_ratio。5. column segments 必须有相同的low value的CountRange,row segments必须有相同的low value的CountRange。3. 通过命令,不同的group label下的Memory,要放在不同的Controller下面。部分,然后再通过load回来。
2024-11-22 10:22:59
695
原创 Code Coverage
这个注释是 Synopsys 的可以识别的,注释包含的那一部分内容在逻辑综合的时候是不考虑的(比如RTL代码中的 display 语句。该注释选项,同时也可以关闭对该部分内容的覆盖率计算。RTL源代码中会有一些内容是用于调试等其他作用的,希望在计算 RTL 代码覆盖率的不考虑该部分内容,这个时候是需要告诉工具不去分析这一部分内容的,如果不做说明,工具会考虑在内。(一般情况下, case 语句的 default 是不会执行到的,所以是可以在计算覆盖率的时候忽略该语句的,通过-cm_nocasedef实现)
2024-10-08 09:54:08
457
原创 DC学习.11 综合产生的文件
这时候,同一个信号用了两种符号串表示(也就是Bus[31]和Bus[31:0]中的第31位是同一个信号,但是却有不同的字符串表示,这是不好的,一些工具可能解读出错)。最好的办法是把设计中的反斜线符号去掉,用有效的字符代替非有效(特别)的字符。里面包含的是一些扫描链的布局信息,需要注意的是,必须在生成ddc网表文件之前生成.def(也就先生成.def文件),以便将def文件包含在ddc文件中。一个是生成.v的门级网表。例如,写出网表时,有时网表中会有反斜线符号“\”,对于这个符号,不同的工具有不一样的理解。
2024-09-27 10:28:46
860
原创 DC学习.10 其他的时序约束选项
告诉DC这是一个多时钟周期的加法器电路是不够充分的,一方面是由于后面的触发器应该经过6个时钟周期之后才能采到正确的值(但是C_reg不知道什么采到的值是正确的),另一方面是约束仅仅是告诉DC如果这块电路的延时太大或者太小的时候要报错;,但是这个加法器电路经过延时得到结果后,后面的C_reg采样的正确性,需要在RTL代码的设计上保证,需要加上相应的控制信号,保证DC能够综合出能够正确工作的多时钟周期的加法器。(虽然上面说是同步电路,但是在传统上看,上面的电路不算是同步时钟,因为他们的相位没有固定的关系;
2024-09-27 10:28:30
790
原创 DC学习.09 综合后处理时序分析
当然有时候并不是真正的设计违规,有可能是约束设计过紧,有可能是设计的输入延时太紧导致violation,比如前面那个实战中,综合得到的结果是可以满足要求的,但是由于约束不当而导致DC爆出违规。(由于上一级D触发器的翻转(路径的起点也就这里)、芯片外部组合逻辑而经历的)输入延时约束(set_input_delay),也就是数据到达芯片的数据输入管脚的延时建模,这个延时是1ns;主要报告了工作条件,使用的工艺库,时序路径的起点和终点,路径所属的时钟组,报告的信息是作建立或保持的检查,以及所用的线负载模型。
2024-09-26 10:51:31
1579
原创 DC学习.08 综合与优化
网表文件生成后,静态时序分析时,DC工具对路径进行分析,对关键路径进行优化,逻辑级优化与门级优化可以迭代使用(若路径延时过大,不满足设计规则,DC会resynthesis,一直到路径延迟满足要求)。: 用户自定义路径组后,如果设计的总性能有改善,DC允许以牺牲一个路径组的路径时序(时序变差)为代价,而使另一个路径组的路径时序有改善。如果DC不进行专门的分组,只有默认(Default)的路径组,DC只对默认组的关键路径进行优化,当它不能为关键路径找到一个更好的优化解决方案时,综合过程就停止。
2024-09-26 10:49:27
1034
原创 Tcl与Design Compiler (四)——综合库(时序库)和DC的设计对象
由于DesignWare库中的所有器件都是事先验证过的,使用该IP库我们可以设计得更快,设计的质量更高,增加设计的生产力和设计的可重复使用性,减少设计的风险和技术的风险。在实际电路中,输入转换时间、负载与连接单元的电路有关,所以我们只需要列出在不同的输入转换时间、不同的负载下单元的延时就可以了。描述中,包含了如下内容:输入引脚的fanout-load属性、输出引脚的max_fanout属性、输入或输出引脚的max_transition属性、输出或者inout引脚的max_capacitance属性。
2024-09-26 10:46:14
1365
原创 DC学习.07 环境和面积约束
连线延迟目前用线负载模型(wire load model,简称WLM),WLM是厂商根据多种以及生产出来芯片的统计结果,在同样的工艺下,计算出某个设计规模范围内负载扇出为1的连线平均长度,负载扇出为2的连线平均长度,负载扇出为3的连线平均长度等。是设置DC的工作环境,也就是DC要从在什么样的环境下对你的设计进行约束,举个例子,比如你的芯片要在恶劣的环境中进行工作,DC如果在优质的环境中对你的设计进行约束,你的芯片生产出来,就很有可能工作不了。在top模式下, 采用top层的连线负载模型, 即50×50;
2024-09-26 10:38:46
673
原创 DC学习.06 基本时序约束之路径2时钟的建模与约束
一般情况下,我们把时钟源延迟(source latency)和时钟网络的延迟(network latency)分开来,因为时钟源延时需要建模,是因为DC是真的不知道这延时是多大,但是对于时钟网络的延迟,DC在布局布线前不知道,但是在布局布线后就可以计算出来时钟网络的延时了,因此在布局布线之后进行综合时,就没有必要对时钟网络进行延时,因此就要把这两个延时分开来进行约束。默认的上升转换时间为从电压的20%上升至80%的时间,下降的转换时间为从电压的80%下降至20%的时间。
2024-09-26 10:35:44
796
原创 DC学习.05 基本时序约束
如果DC选来选去,发现最牛逼的单元得到的电路延时还是很大,无法满足FF2的建立时间要求,DC就会报错。在进行约束1之前,DC是不知道的,因此我们通过约束这条路径,也就是告诉DC外部的延时是多少,比如Tclk-q + Tm,在约束了时钟之后,DC就会计算这条路径留给电路N的延时是多少,也就是,然后DC就拿Tclk-(Tclk-q+Tm)和Tn+Tsetup相比较,如果Tn较大(Tn+Tsetup>Tclk-(Tclk-q+Tm)),那么DC就会进行优化,使Tn减少,如果Tn还是过大,DC就会报错。
2024-09-26 10:34:15
940
原创 DC学习.04 关于objects
set_load 5 [get_ports addr_bus*] *是模式匹配里多个的意思,以addr_bus开头的n个port。add_to_collection $pci_ports [get_ports CTRL*] #在pci_ports里添加CTRL*包括六类:Design,Clock,Port,Pin(cell里面的引脚),Cell(例化的模块),Net(模块与模块之间的互连线)set_load 5 [get_net sum]:加载在net上。使用echo返回objects的句柄。
2024-09-26 10:29:42
309
原创 DC学习.03 关于.synopsys_dc.setup配置文件
在由上而下的综合工程中,上一层的设计调用底层已经综合的模块时,将从link_library中寻找并且链接起来,因此当读入的文件是门级网表(比如用到了IP核的网表)时,需要把 link library 设成指向生成该门级网表的目标库,否则 DC 因不知道网表中门单元电路的功能而报错。B库变量的指定我们一般放在dc_setup.tcl这个文件中,这里的库变量一般是用set_app_var进行指定,此外指定的是具体的某一个库,而不仅仅是路径,DC会从search_path里面寻找到这些库。
2024-09-26 10:27:55
1059
原创 DC学习.02 综合的流程
③ 使用 DC 完成设计的综合并满足设计目标.这个过程包括三个步骤,即综合=翻译+逻辑优化+映射,首先将 RTL 源代码转化为通用的布尔等式,然后设计的约束对电路进行逻辑综合和优化,使电路能满足设计的目标或者约束,最后使用目标工艺库的逻辑单元映射成门级网表,在将设计综合成门级网表之后,要验证此时的设计是否满足设计目标。④当设计满足功能、时序以及其他的设计目标的时候,需要执行物理层设计最后分析物理层设计的性能,也就是使用DC的拓扑模式,加入floorplan的物理信息后进行综合分析设计的性能。
2024-09-26 10:26:27
942
原创 DC学习.01
逻辑综合需要基于特定的综合库(工艺库),不同的库中,门电路基本标准单元(standard cell)的面积,时序参数是不一样的。所以,选用的综合库不一样,综合出来的电路在时序,面积上是有差异的。过程(如下图):DC-T第一次综合 ——> 预网表信息 ——> 预布局布线吐出脚本约束,得到器件布置的大致模型 ——>根据前面的大致模型计算延迟约束 ——> DC-T第二次综合。最后得到网表(sdf文件),进行后仿真 (ddc文件) (ddc,sdf还有v文件,都是什么?area,delay(性能)的权衡。
2024-09-26 10:23:09
335
原创 TCL学习.01
1:新建目录,新建example.tcl脚本文件。输出:source example.tcl。3:编写example.tcl文件。一:在DC下使用Tcl。2:在该目录下启动DC。
2024-09-26 10:21:03
228
原创 数字IC设计流程
常用的就是等价性检查(Equivalence Check)方法,以功能验证后的HDL设计为参考,对比综合后的网表功能,他们是否在功能上存在等价性。所以,选用的综合库不一样,综合出来的电路在时序,面积上是有差异的。设计输入工具:具有强大的文本编辑功能,多种输入方法(VHDL,Verilog,状态转移图,模块图等),语法模板,语法检查,自动生产代码和文档等功能。芯片规格,也就像功能列表一样,是客户向芯片设计公司(称为Fabless,无晶圆设计公司)提出的设计要求,包括芯片需要达到的具体功能和性能方面的要求。
2024-09-26 10:18:39
444
原创 VCS学习-Code Coverage
cm_hier ./filename 先在当前文件夹下新建一个文件,用gvim打开这个文件,输入-module fs,则在报告中屏蔽这个module的报告;输入 +module fs,则报告里只有fs的覆盖率;输入-file fs.v,则在报告里屏蔽fs.v文件;line(行)覆盖率,Toggle(跳变)覆盖率,condition(条件)覆盖率,FSM(状态机)覆盖率,path(路径)覆盖率。-cm_dir directory_of_file:覆盖率文件所在文件;x->1,x->0不会报告。
2024-09-26 10:15:58
586
原创 VCS学习 — fast RTL-level simulation
在compile里添加开关命令,sim后,生成性能分析文件(后缀名prof),包括cpu, 模块等使用时间,消耗资源等。4: 使用小的语句块,避免block块>10000语句;re-compile需求的控制:多个错误改完之后再re-compile。2: 提升抽象等级,不要使用太过低级的语句,使simulator工作简便。compile时使用开关命令:+rad。1: 使用可综合verilog语句。3: 避免没有效率的结构:双向口。一:RTL级快速仿真的要求。五:时序电路避免使用的逻辑。
2024-09-26 10:14:29
332
原创 VCS学习
大的项目波形文件很占内存与影响速度,所以产生了VCD波形文件,记录寄存器的值,层次等;make clean -> make com -> make sim -> dve &(或者dve -dvp vcdplus.vpd) -> 查看波形,可双击波形上的某个数值进入源代码 - >debug。行为级描述(验证,不可综合) - RTL级描述(设计,寄存器传输级) - Gate-level(门级,RTL级经过综合得到,与具体工艺 库相关,TSMC,SMIC,CSMC)
2024-09-26 10:12:25
1049
原创 Tcl与Design Compiler (三)——DC启动环境的设置
在由上而下的综合工程中,上一层的设计调用底层已经综合的模块时,将从link_library中寻找并且链接起来,因此当读入的文件是门级网表(比如用到了IP核的网表)时,需要把 link library 设成指向生成该门级网表的目标库,否则 DC 因不知道网表中门单元电路的功能而报错。B库变量的指定我们一般放在dc_setup.tcl这个文件中,这里的库变量一般是用set_app_var进行指定,此外指定的是具体的某一个库,而不仅仅是路径,DC会从search_path里面寻找到这些库。
2024-07-24 15:58:31
773
原创 Tcl与Design Compiler (二)—— DC综合的流程
这个图将上面的流程图细化,着重DC的部分,描述了使用DC进行逻辑综合的流程,同时,也是对前面的流程图解说的图形概述。③ 使用DC完成设计的综合并满足设计目标.这个过程包括三个步骤,即综合 = 转化 + 逻辑优化 + 映射,首先将RTL源代码转化为通用的布尔等式,然后设计的约束对电路进行逻辑综合和优化,使电路能满足设计的目标或者约束,最后使用目标工艺库的逻辑单元映射成门级网表,在将设计综合成门级网表之后,要验证此时的设计是否满足设计目标.如果不能满足设计目标,此时需要产生及分析报告确定问题及解决问题.
2024-07-24 15:13:50
1223
原创 Tcl与Design Compiler(一)—— DC综合与Tcl语法结构概述
我们可以通过 man dc_shell或者dc_shell -help来查看DC的启动选项,不过我们可以发现,这些选项是一致的,是告诉我们如何启动DC,启动DC的时候可以加载哪些选项。Tcl的基本语法结构差不多就是这样了,Tcl的使用需要结合Tcl自带的一些命令,比如说自己的函数、错误处理、正则表达式等,此外还要结合DC的命令,总之就是具体问题具体分析。与C语言、Verilog语言不一样,这里的条件是用大括号{}来进行包括的,然后要执行的内容也是通过{}来表示的。特别注意,{}的使用都有空格间隔开。
2024-07-23 17:41:50
1067
原创 跨时钟域信号传输——数据信号
首先,我们知道,读地址需要跟写地址比较来产生空和满信号,然后对于异步FIFO,读写为不同时钟,如果直接采样,就会有:类似前面数据产生多位亚稳态的问题,(时序图就不画了)比如写地址从00111改变从01000的时候,读时钟恰好采样,那么除了最高位外,其它的4位都有可能产生亚稳态,有可能同步得错误的地址。如果在t=2s这个时候读地址=A,即读地址=写地址,读赶上了写,按照上面的设计想法就会产生读空信号,但是实际上是不相等的,也就是实际上读并没有赶上写,即没有读空的,这不就是产生错误的读空信号了吗?
2024-07-23 16:16:04
1034
原创 数字设计中的时钟与约束
主要如下所示:·同步电路与异步电路;时钟/时钟树属性(偏移(skew)与时钟的抖动(jitter)、延时(latency)、转换(transition)时间);内部时钟;多路复用时钟;门控时钟;行波时钟;双沿时钟;Design Compiler中的时钟约束。·补充:时钟分配策略首先来谈谈同步电路与异步电路。那么首先就要知道什么是同步电路、什么是异步电路?
2024-07-23 15:23:57
830
原创 亚稳态与多时钟切换
山顶就是亚稳态,这是数字逻辑中存在的一种状态,在这个状态下,触发器/寄存器的输出可能为毛刺或者某一未定义的电压值(电压值在高低电平之间波动),反正基本不是正确的输入值。时钟在切换的时候难免会产生毛刺,这里就来聊聊如何把这个时钟切换产生的毛刺减少(甚至消灭)的典型电路,而不是要求时钟切换的时候寄存器要处于复位的情况(当然寄存器复位也是双重保险的措施)。·减少使用或者避免使用那种信号翻转时间很长的输入信号,如果翻转时间长,那么进入器件未定义的电平的时间也很长,容易导致亚稳态的产生。(--->使用更快的触发器)
2024-07-23 15:09:07
859
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人