Posts

Showing posts from January, 2022

Place and Route based on Innovus

  对于新手来说,建议使用GUI来进行操作。   下面是我所使用的脚本:   读入设计后在命令行中使用以下指令即可运行,假设文件名为: PlaceandRoute.tcl                                    source  PlaceandRoute.tcl   也可将此语句加入设计文件中init_design后,假设设计文件名为 alu_setup.tcl, 然后在命令行中使用:                                  innovus -files alu_setup.tcl 即可全自动运行Place and Route。   PlaceandRoute.tcl: set_global timing_apply_default_primary_input_assertion false set_global timing_clock_phase_propagation both setOptMode -powerEffort high setOptMode -leakageToDynamicRatio 1.0 setAnalysisMode -asyncChecks async setExtractRCMode -layerIndependent 1 setPlaceMode -reorderScan false setExtractRCMode -engine preRoute set edi_pe::pegConsiderMacroLayersUnblocked 1 set edi_pe::pegPreRouteWireWidthBasedDensityCalModel 1 setRouteMode -earlyGlobalHonorMsvRouteConstraint false \ -earlyGlobalRoutePartitionPinGuide true setEndCapMode -reset setEndCapMode -boundary_tap false setNanoRouteMode -quiet -droutePostRouteSpreadWire 1 setNanoRouteMode -quiet -timingEngine {} # setUsefulSkewMode

Synthesis based on Cadence Tools

     Cadence所用的Synthesis工具为Genus。      目前的使用感受,相对于Design Compiler而言,有以下几个明显的优缺点。       优点:1.不用db文件,lib文件可以直接使用。                 2.可以添加tech lef、*.lef和qrc file或者Capacitance table来更加贴近真实情况,                       和Place and Route连接紧密,如若可提供上述的文件,便可直接利用                              commad:                           syn_opt -physical                  进行Placement。       缺点:1.SDC文件有些指令并不能完全读取,需要更改,而Gensu本身所提供的Timing constraints 指令又太少。                  2.Design Compiler有时即便读取的Verilog有错误也可继续执行任务。Genus会直接终止任务。                  3.运行速度上没有Design Compiler快。        以下为我所使用的脚本:(待更新) include setting.tcl # set_attribute information_level 6 ;# See a lot of warnings. set_attribute max_cpus_per_server 16 / set basename exu set runname RTL ; # name appended to output files include spc.tcl # foreach file_name $ file_names { read_hdl $ file_name } elaborate $ { basename } #read timing constraint set_attribute max_fanout 6 $ basename read_sdc constraint.sdc if {[ llength [all :: all_se