对于reset 和clock这种大扇出的信号来说,必须要人为设置为ideal network,不要让DC动它,因为线负载模型对于这些大扇出的情况估算不准。
如果不添加don’t touch属性的话,DC会在很长的一根线上插入很多负载。
一般set_ideal_network 的对象是port或者pin,net也有,比较少见。
全是ideal network的信号经过一些逻辑还是ideal的,如果有一个不是ideal的,那输出就不是ideal的。
下面这条语句的意思是驱动这个net的所有的pin或者port是理想的。
针对net设置的有另外一条命令:set_ideal_net
设置为ideal network之后,可以选择设置latency 和transition ,像set_clock_latency之类
.ddc:交给后端工具ICC
.def:交给做DFT的
.v:交给做后仿的
.sdc:约束(standard design constraint)
sdc:约束,其它公司的EDA工具做后端的时候会用到这个文件,只有synopsys的后端工具才能读入自家的ddc文件。
SCAN-DEF.def存放了一些关于扫描链的信息。做DFT的会用到。
.v网表文件可能会综合出assign语句,这是不正常的。应该都是用单元例化的形式。
(tri类型的不要用,很可能生成这种assign语句。)
怎么让DC把它弄掉:
【多端口连线】
同一个输出写了两个端口会导致网表里出现assign语句。
端口输入直接连到了输出。
内部固定接到0或者1的(常数)。
增加这样一个命令:set_fix_multiple_port_nets -all -buffer_constants
插入一些buffer,不用net直连。
针对tri产生的问题:
(强制把代码中的tri转成wire。)
【特殊字符】
打开看网表的时候,经常在总线的前面加入一些反斜杠表示,对其他的工具而言,可能不认识。在保存的时候要把网表给拿掉。
compile之后、保存网表之前加入change_names命令
-rules verilog表示按照verilog的命名规则去命名
【【实操】】
这里有条命令,在设置输出的外部延时的时候:
set_isolate_ports设置隔离单元
在输出的时候插入buffer让输出端口和内部隔离开。
不加这个选项:当电路出现反馈结构的时候,输出端会影响电路的结果。
Step12:
第一条:不要用tri,如果用了,转换为wire类型的
第二条:如果某一个端口,没有用到,在报告的时候也显示出来
sdf文件长这样:
(把端口(all_outputs)展开成最基本的信息)
sdf文件:
时序信息
如果不用change_names,综合一些总线就会出现这样反斜杠的东西: