
DC学习
文章平均质量分 86
巨人城市
这个作者很懒,什么都没留下…
展开
-
DC学习.11 综合产生的文件
这时候,同一个信号用了两种符号串表示(也就是Bus[31]和Bus[31:0]中的第31位是同一个信号,但是却有不同的字符串表示,这是不好的,一些工具可能解读出错)。最好的办法是把设计中的反斜线符号去掉,用有效的字符代替非有效(特别)的字符。里面包含的是一些扫描链的布局信息,需要注意的是,必须在生成ddc网表文件之前生成.def(也就先生成.def文件),以便将def文件包含在ddc文件中。一个是生成.v的门级网表。例如,写出网表时,有时网表中会有反斜线符号“\”,对于这个符号,不同的工具有不一样的理解。原创 2024-09-27 10:28:46 · 862 阅读 · 0 评论 -
DC学习.10 其他的时序约束选项
告诉DC这是一个多时钟周期的加法器电路是不够充分的,一方面是由于后面的触发器应该经过6个时钟周期之后才能采到正确的值(但是C_reg不知道什么采到的值是正确的),另一方面是约束仅仅是告诉DC如果这块电路的延时太大或者太小的时候要报错;,但是这个加法器电路经过延时得到结果后,后面的C_reg采样的正确性,需要在RTL代码的设计上保证,需要加上相应的控制信号,保证DC能够综合出能够正确工作的多时钟周期的加法器。(虽然上面说是同步电路,但是在传统上看,上面的电路不算是同步时钟,因为他们的相位没有固定的关系;原创 2024-09-27 10:28:30 · 791 阅读 · 0 评论 -
DC学习.09 综合后处理时序分析
当然有时候并不是真正的设计违规,有可能是约束设计过紧,有可能是设计的输入延时太紧导致violation,比如前面那个实战中,综合得到的结果是可以满足要求的,但是由于约束不当而导致DC爆出违规。(由于上一级D触发器的翻转(路径的起点也就这里)、芯片外部组合逻辑而经历的)输入延时约束(set_input_delay),也就是数据到达芯片的数据输入管脚的延时建模,这个延时是1ns;主要报告了工作条件,使用的工艺库,时序路径的起点和终点,路径所属的时钟组,报告的信息是作建立或保持的检查,以及所用的线负载模型。原创 2024-09-26 10:51:31 · 1579 阅读 · 0 评论 -
DC学习.08 综合与优化
网表文件生成后,静态时序分析时,DC工具对路径进行分析,对关键路径进行优化,逻辑级优化与门级优化可以迭代使用(若路径延时过大,不满足设计规则,DC会resynthesis,一直到路径延迟满足要求)。: 用户自定义路径组后,如果设计的总性能有改善,DC允许以牺牲一个路径组的路径时序(时序变差)为代价,而使另一个路径组的路径时序有改善。如果DC不进行专门的分组,只有默认(Default)的路径组,DC只对默认组的关键路径进行优化,当它不能为关键路径找到一个更好的优化解决方案时,综合过程就停止。原创 2024-09-26 10:49:27 · 1036 阅读 · 0 评论 -
DC学习.07 环境和面积约束
连线延迟目前用线负载模型(wire load model,简称WLM),WLM是厂商根据多种以及生产出来芯片的统计结果,在同样的工艺下,计算出某个设计规模范围内负载扇出为1的连线平均长度,负载扇出为2的连线平均长度,负载扇出为3的连线平均长度等。是设置DC的工作环境,也就是DC要从在什么样的环境下对你的设计进行约束,举个例子,比如你的芯片要在恶劣的环境中进行工作,DC如果在优质的环境中对你的设计进行约束,你的芯片生产出来,就很有可能工作不了。在top模式下, 采用top层的连线负载模型, 即50×50;原创 2024-09-26 10:38:46 · 673 阅读 · 0 评论 -
DC学习.06 基本时序约束之路径2时钟的建模与约束
一般情况下,我们把时钟源延迟(source latency)和时钟网络的延迟(network latency)分开来,因为时钟源延时需要建模,是因为DC是真的不知道这延时是多大,但是对于时钟网络的延迟,DC在布局布线前不知道,但是在布局布线后就可以计算出来时钟网络的延时了,因此在布局布线之后进行综合时,就没有必要对时钟网络进行延时,因此就要把这两个延时分开来进行约束。默认的上升转换时间为从电压的20%上升至80%的时间,下降的转换时间为从电压的80%下降至20%的时间。原创 2024-09-26 10:35:44 · 797 阅读 · 0 评论 -
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 阅读 · 0 评论 -
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 阅读 · 0 评论 -
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 阅读 · 0 评论 -
DC学习.02 综合的流程
③ 使用 DC 完成设计的综合并满足设计目标.这个过程包括三个步骤,即综合=翻译+逻辑优化+映射,首先将 RTL 源代码转化为通用的布尔等式,然后设计的约束对电路进行逻辑综合和优化,使电路能满足设计的目标或者约束,最后使用目标工艺库的逻辑单元映射成门级网表,在将设计综合成门级网表之后,要验证此时的设计是否满足设计目标。④当设计满足功能、时序以及其他的设计目标的时候,需要执行物理层设计最后分析物理层设计的性能,也就是使用DC的拓扑模式,加入floorplan的物理信息后进行综合分析设计的性能。原创 2024-09-26 10:26:27 · 942 阅读 · 0 评论 -
DC学习.01
逻辑综合需要基于特定的综合库(工艺库),不同的库中,门电路基本标准单元(standard cell)的面积,时序参数是不一样的。所以,选用的综合库不一样,综合出来的电路在时序,面积上是有差异的。过程(如下图):DC-T第一次综合 ——> 预网表信息 ——> 预布局布线吐出脚本约束,得到器件布置的大致模型 ——>根据前面的大致模型计算延迟约束 ——> DC-T第二次综合。最后得到网表(sdf文件),进行后仿真 (ddc文件) (ddc,sdf还有v文件,都是什么?area,delay(性能)的权衡。原创 2024-09-26 10:23:09 · 335 阅读 · 0 评论