抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

逻辑综合三个阶段:转译、优化、映射

时序路径约束

  • 输入到寄存器的路径
  • 寄存器到寄存器之间的路径
  • 寄存器到输出的路径
  • 输入直接到输出的路径
1
2
create_clock-period 10 [get_ports Clk]
set_dont_touch_network [get_clocks Clk]

对所有定义的时钟网络设置为dont_touch​,即综合的时候不对Clk​信号优化。

如果不加这句,DC会根据CIk的负载自动对他产生Buffer​,而在实际的电路设计中,时钟树(Clock Tree)的综合有自己特别的方法,它需要考虑到实际布线后的物理信息,所以DC不需要在这里对它进行处理,就算处理了也不会符合要求。

1
2
3
4
5
#定义输入延迟
set_input_delay -max 4-clock Clk [get_ports A]

#定义输出延迟
set_output_delay -max 5.4 -clock Clk [get_ports B]

TCL脚本

1
2
3
4
5
6
7
8
9
10
11
sh date      //显示开始时间
remove_design-designs //移除DC中原有的设计
//下面是库的设置,对应图形界面操作的2
###########井#############井
#set library
#
###########井####井##井#####井
set search_path [list *********]
set target_library {tt.db}
set link_library {*tt.db}
set symbol_library {tt.sdb}
1
2
3
4
5
6
7
8
9
10
11
12
//下面是屏蔽一些warning信息,DC在综合时遇到这些warning时就把它们忽略,
//不会报告这些信息,VER-130,VER-129等是不同warning信息的编码,
//具体含义可以查看帮助

#void warning Info

#############
suppress_message VER-130
suppress_message VER-129
suppress_message VER-318
suppress_message ELAB-311
suppress_message VER-936
1
2
3
4
5
6
7
8
9
//读入example1.v文件,对应于图形界面的3
#################################
#read&link&Check design#
read_file -format verilog ~/example1.v
#analyze -format verilog ~/example1.v
#elaborate EXAMPLE1
current_design EXAMPLE1 //把EXAMPLE1指定为当前设计的顶层模块
uniquify
check design
1
2
3
4
5
6
7
8
9
10
//设置一些变量
############################
#define IO port name
#############################

set clk[get_ports clk] //设置变量clk的值是[get_ports clk],
//在下面的代码中若出现$clk字样,则表示引用该变量的值,即用[get_ports clk]代替$clk
set rst_n [get_ports rst_n]
set general_inputs [list a b c]
set outputs [get_ports o]
1
2
3
4
5
6
7
8
9
10
11
/设置约束条件,对应于图形界面的4
#
set_constraints
#
############################井
//设置时钟约束,对应于图形界面的4.1
#1 set constraints for clock signals
create_clock -n clock $clk -period 20 -waveform{0 10} //创建一个周期为20ns,占空比为1的时钟
set_dont_touch_network[get_clocks clock]
set_drive 0 $clk //设置时钟端口的驱动为无穷大
set_ideal_network [get_ports clk] //设置时钟端为理想网络
1
2
3
4
5
//设置复位信号约束,对应于图形界面的4.2
#2 set constraints for reset signals
set_dont_touch_network $rst_n
set_drive 0 $rst_n
set_ideal network[get_ports rst_n]
1
2
3
4
5
6
7
8
//设置输入延时,对应图形界面的4.3
#3 set input delay
set_input_delay -clock clock 8
$general_inputs
/设置输出延时,对应图形界面的4.4
#4 set output delay
set_output_delay -clock clock 8
$outputs
1
2
3
4
5
6
//设置面积约束和设计约束,对应图形界面的4.5
#5 set design rule constraints
set_max_fanout 4 $general_inputs
set_max_transition 0.5 [get_designs "EXAMPLE1"]
#6 set area constraint
set_max_area 0