Cadence公司的数字IC设计工具:综合工具(Genus)——(1)

目录

一、Genus入门

1、用户接口

1.1 Unified User Interface

1.2 Legacy User Interface

2、log file

3、Navigation

4、输出重定向

5、脚本

二、Genus综合流程

1、Set Search Paths and Target Lbrary

1.1 Specifying explicit search paths

1.1.1 technology libraries

1.1.2 scritps

1.1.3 HDL files

1.2 Setting the target technology library

1.2.1  Specify single library

1.2.2 Specify multiple libraries

1.2.3  生成library forward saif file

2、Load HDL Files

2.1 Reading HDL files

2.2 read_hdl命令的命令行选项

2.3 read and elaborating a structural netlist design

3、Perform Elaboration

3.1 performing elaboration

4、Apply Constraints

4.1 importing and exporting SDC

4.2 applying timing constraints

4.2.1 Specifying clock information

4.2.1.1 defining a clock / the clock period / the rising and falling edges and creating clock domains

4.2.1.2 specifying clock latency (insertion delay)

4.2.1.3 specifying clock skew

4.2.1.4 Specifying the clock transition

4.2.1.5 Defining Externally Generated Clocks

4.2.2 defining input and output delays

4.2.3 setting timing exceptions

4.2.3.1 false path

4.2.3.2 Multicycle paths

4.2.3.3 paths delays

4.3 importing physical information

4.4 applying design rule constraints

4.4.1 specifying operating conditions

4.4.2 specifying wire-load models

4.4.3 setting external driver and load constraints

4.4.3.1 约束primary input的input transition

4.4.3.2 约束primary output的output load

4.4.4 setting Design Rule Constraints 

4.5 creating ideal objects

5、Apply Optimization Settings

5.1 Preserving Instances and Modules

5.2 Grouping and Ungrouping Objects

5.2.1 Grouping

5.2.2 Ungrouping

5.3 Partitioning

5.4 Setting Boundary Optimization

5.5 Mapping to Complex Sequential Cells

5.6 Deleting Unused Sequential Instances

5.7 Controlling Merging of Combinational Hierarchical Instances

5.8 Optimizing Total Negative Slack

5.9 Making DRC the Highest Priority

5.10 Creating Hard Regions

6、Synthesize

6.1 synthesizing the design

6.2 setting effort levels

7、Analyze

7.1 generating timing reports

7.2 generating area reports

8、export to P&R

8.1 Generating design and session information

8.2 writing out the design netlist

8.3 writing SDC constraints

8.4 writing an SDF file

三、Genus attribute

1、input and outputs

2、elaboration and synthesis

3、 library

四、genus command

1、SDC command

2、design manipulation


一、Genus入门

Cadence公司的Genus综合工具,前身是RC(RTL Compiler),现已更名为Genus。Genus是一种快速,高容量的综合解决方案,适用于要求苛刻的芯片设计。

1、用户接口

Genus支持以下用户接口

1.1 Unified User Interface

启动方式:

genus

1.2 Legacy User Interface

启动方式:

genus -legacy_ui

genus是为了与cadence后端flow的EDA工具保持命令的一致,所以导致genus不再兼容RC命令;genus -legacy_ui,与RC命令兼容;但是有些命令不再支持了,需要注意。

本文相关内容适用于genus -legacy_ui用户接口。

2、log file

缺省情况下,Genus会生成一个日志文件和一个命令文件,分别默认命名为genus .log和genus .cmd。日志文件包含当前Genus会话的整个输出;命令文件包含在特定会话中发出的所有命令的记录。通过下述命令可以在调用Genus时自定义这些文件的名称:

genus -legacy_ui -log test

3、Navigation

与Genus的相互作用发生在Genus shell内。它是一种类似于UNIX的环境,它与UNIX环境有许多共同的特征。Genus使用设计信息层次结构与其数据库进行交互。当调用LUI Genus时,便进入了设计信息层次结构的根目录(root)。在设计信息层次结构中,可使用ls,cd,pwd等命令。进入Genus之后,只可以使用有限数量的命令来访问UNIX操作系统,如lcd,lls,lpwd。

4、输出重定向

“>”将输出写入指定文件,覆盖任何现有文件;“>>”将输出追加到现有文件。

5、脚本

在任何工具中,脚本是执行任务的最有效的自动化方式。为了支持基本和高级别的脚本,Genus使用标准脚本语言TCL。

在UNIX命令行中输入以下命令来运行脚本文件<filename>:

genus -f <filename> -legacy_ui

通过输入以下命令在Genus中运行脚本文件<filename>:

include <filename>

使用下述命令生成一个包含运行Genus所需的命令和属性的模板脚本:

write_template [-area] [-outfile string] [-performance]

二、Genus综合流程

1、Set Search Paths and Target Lbrary

1.1 Specifying explicit search paths

可以指定libraries、scritps和HDL files的搜索路径。默认搜索路径是调用Genus的目录。

1.1.1 technology libraries

当发出set_attribute library命令时,将在指定路径中的目录中搜索technology libraries

set_attribute init_lib_search_path path /
1.1.2 scritps

当发出include命令时,将在指定路径中的目录中搜索scritps

set_attribute script_search_path path /
1.1.3 HDL files

当发出read_hdl命令时,将在指定路径下的目录中搜索HDL files

set_attribute init_hdl_search_path path /

这些命令中的“/”指的是包含所有全局Genus设置的根级Genus对象。如果要为path包含多个条目,需要将它们全部放入{}中,后面无需“/”。

1.2 Setting the target technology library

1.2.1  Specify single library
set_attribute library lib_name.lib /

如果库不在先前指定的搜索路径中,需要指定完整路径,后面无需“/”。

1.2.2 Specify multiple libraries
#方式1
set library {lib_name1.lib lib_name2.lib}
set_attribute library $library /
#方式2
set_attribute library {lib_name1.lib lib_name2.lib} /
1.2.3  生成library forward saif file
#生成library forward SAIF file。该文件包含在模拟期间生成backward SAIF file所需的状态相关和路径相关(SDPD)指令。不需要加载任何design来编写forward SAIF文件。只需要加载libraries。
write_forward_saif > file

2、Load HDL Files

2.1 Reading HDL files

搜索HDL文件的主目录是使用init_HDL_search_path根属性指定的。

#1
read_hdl top.v block1.v block2.v
#2
set file_list {top.v block1.v block2.v}
read_hdl $file_list
#3
read_hdl -f optionfile

2.2 read_hdl命令的命令行选项

[-v1995 | -v2001 | -sv | -vhdl] :默认为-v2001

[-mixvlog]

[-f]

[-library library_name]:将源文件放入不同的工作库  

2.3 read and elaborating a structural netlist design

如果整个设计是由Verilog-1995或Verilog-2001结构网表描述的,可以使用read_netlist命令读取并elaborate结构网表。此命令创建了一个可以准备synthesize的通用网表,而不再需要使用elaborate命令。

3、Perform Elaboration

3.1 performing elaboration

elaborate命令自动详细说明顶层设计及其所有引用。

elaborate [topmodule] [-parameters {value1 value2 value3}]

#建立详细的power模型,进行更准确的RTL功率分析。这些模型将用于后续的RTL power分析报告。该命令将在以后的版本中被废弃。
build_rtl_power_models
-clean_up_netlist:请求删除网表中的悬空逻辑,因为这会影响估计的准确性。

4、Apply Constraints

4.1 importing and exporting SDC

read_sdc <filename>
write_sdc > <filename>

4.2 applying timing constraints

注:

(1)Genus命令默认使用皮秒(pm)和飞法(fF)作为单位,其中,1fF=10^-15F。SDC命令默认使用纳秒和皮法作为单位。所以,当混合使用SDC命令和Genus命令时,应注意电容和延迟的单位是不同的。

(2)在本节描述的时序约束命令中,若无特殊说明,则均为SDC命令。

(3)在SDC命令中,-max针对建立时间,-min针对保持时间。

(4)逻辑综合阶段无需检查保持时间。

4.2.1 Specifying clock information
4.2.1.1 defining a clock / the clock period / the rising and falling edges and creating clock domains

A clock domain是一组彼此同步的时钟,允许在这些时钟之间执行时序分析。Genus仅计算同一时钟域中时钟之间的时间约束。不同域内时钟之间的路径默认不受约束。

当时钟在不同的时钟域中定义时,它们被认为是异步的,也就是说,彼此之间没有约束。Genus自动解除不同时钟域的约束,不需要为时钟指定false paths。

#SYSCLK is 100MHz. CLK is 50MHz

create_clock -name clk1 -period 10 [get_ports SYSCLK]
create_clock -name clk2 -period 20 [get_ports CLK]

set_false_path -from [get_clocks clk1] -to [get_clocks clk2]
set_false_path -from [get_clocks clk2] -to [get_clocks clk1]

#Specifies the groups of clocks between which timing analysis will not be done.
set_clock_groups 

#下述为等同的genus命令
define_clock -domain domain1 -name clk1 -period 10000 [get_ports SYSCLK]
define_clock -domain domain2 -name clk1 -period 20000 [get_ports CLK]
4.2.1.2 specifying clock latency (insertion dela
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值