在数字IC中,综合是从RTL代码到门级网表的过程。所谓门级网标,就是在指定的工艺库下,得到对应verilog的“电路图”(不知道这个描述是否准确),这个”电路图“是门级的电路图,且“电路图”不涉及到具体门的摆放位置信息,离实际的layout还有差距。
ASIC的综合需要准备工艺库,RTL代码,如果使用ip核,则还要准备对应ip生成的.db文件,以及输入输出的约束信息。一般来说,这些路径都会放在一个名字叫“common_setup.tcl”的脚本文件中。
综合完成以后,会提供面积、功耗和时序的报告,放在reports文件夹里;生成的网表和时序信息会存储在results文件夹里,网标的后缀是.mapped.v,时序信息的后缀是.sdf,这两者可以用来做综合后的时序仿真。
FPGA的仿真会简单很多,只需要提供约束信息即可,生成的报告都可以在图形化的界面(Vivado)等直接找到。
值得一提的是,在ASIC中,综合后的报告并不准,这是因为没有布局布线的信息,给出的面积、功耗不可能准,所以关注这些数值具体的大小并没有实际意义。但这些数值可以辅助我们进行优化,也就是说我们可以在优化RTL代码后再综合,看看给出的新的报告的数值大小,如果比之前的小了,证明有效,否则优化不成功。
FPGA还是比较准的,经过我的实测,综合后和实现后的功耗差距并不大。
同样,用综合生成的网标跑ptpx功耗分析意义也不大,因为没有布局布线的信息,根本不准。
总之,综合得到的结果,如网表信息和各种报告,大概参考下是可以的,也可以用来跑跑时序仿真,修时序违例,但其他的地方用处不大,相比之下,只有布局布线之后的结果才比较有意义。