本人小白,目前也是在看着userguide自行摸索,将现阶段对flow的一些理解写下来,请各位大佬指教。
1,创建项目文件夹;
文件夹层级可以根据个人习惯来,我的目录一般包含以下几个:
lib (存放库文件)
unmapped
mapped
rtl(存放rtl代码)
script(脚本)
work(工作目录,默认log文件在这)
con (存放约束文件)
2,启动genus,并且输入
::legacy::set_attribute commn_ui false /
这个语法的意思是Legacy UI运行模式,这个模式可以支持RC(genus的前身)指令
3,设置默认文件检索路径
set_attribute init_lib_search_path {绝对路径或者相对路径} /
set_attribute script_search_path {绝对路径或者相对路径} /
set_attribute init_hdl_search_path {绝对路径或者相对路径} /
4,设置每个阶段的effort
set_attribute syn_generic_effort high /
set_attribute syn_map_effort high /
set_attribute syn_opt_effort high /
这里的每个effort都可以设置low,medium,high三个等级,等级越高优化效果越好,但是也需要占用更多的资源。
5,设置library和lef_library
set_attribute library {xxx.lib yyy.lib} /
set_attribute lef_library {xxx.lef yyy.lef} /
6, 设置log等级
set_attribute information_level 5 /
这里我看userguide推荐的等级有三个,分别是5,7,9,等级越高log越详细。
到这一步,环境设置就基本完成了,相信用过DC的小伙伴也能发现,这些步骤其实相当于dc设置.synopsys_dc.setup文件。
7,读入文件
read_hdl "top.v xxx.v yyy.v ...." #如果是sv文件记得加选项 -sv
elaborate top
check_design -unresolved #检查是否缺少子模块
8,读入sdc
read_sdc top.sdc #时序约束文件和dc是通用的,后续可能会再出一个如何写sdc的博客
9,执行generic生成, 生成GTECH文件
syn_generic
write_db -to_file top_generic.db
10,执行map,并且生成一个未优化的verilog文件,这个文件可以去做形式验证
syn_map
write_hdl -lec > top_intermediate.v
11,执行门级优化,输出各目标文件
syn_opt
write_db -to_file top_opt.db
write_sdc > top_m.sdc
write_hdl -lec > top_m.v
12,查看结果,主要关注最差路径,gate和area等等
report qor >top_qor.rpt
report area > top_area.rpt
report gates > top_gates.rpt