关于objects
1、分类
2、包括六类:Design、clock、port、net(模块与模块之间的互连线)、cell(例化的模块)、pin(cell里面的引脚)
3、design可以转换为cell
4、当objects名字相同时:
加在net上,5个单位的电容会覆盖原电容值;加在port上,5个单位电容与原电容值x并联,总电容值为(5+x)个单元
set_load 5 [get_net sum]:加载在net上
相关命令:
1、get_:返回一组objects;使用echo返回objects的句柄
set_load 5 [get_ports addr_bus * ] * 是模式匹配里多个的意思,以addr_bus开头的n个port
set_load 6 [get_ports "Y??M Z"] ?是模式匹配里匹配前面字符0个或者1个的意思
如果不存在,返回empty_collection
2、all_*:
all_inputs
all_outputs
all_clocks
all_registers
3、 remove_from_collection
remove_from_collection [all_inputs] [get_ports CLK] #从所有inputs里去除CLK
add_to_collection $pci_ports [get_ports CTRL] #在pci_ports里添加CTRL
4、query_objects $pci_ports
query_objects $foo #得到集合的具体objects
5、sizeof_collection $pci_ports(大小)
6、echo
set foo [get_ports p*]
echo $foo #返回集合的句柄值
7、过滤器
filter_collection [get_cells ] "ref_name = ~AN "
get_cells *-filter “don’t_touch == true”
8、index_collection $pci_ports number
相当于求数组的某个number值
objects的属性:
基本时序约束:
1、分类:时钟的约束(寄存器与寄存器之间)、输入延时的约束、输出延时的约束
2、时序约束对电路的要求:
- 综合工具现在不能很好地支持异步电路,甚至不支持异步电路;
- single clock,single cycle,单个时钟,单延触发,不要一会posedge,一会negdege
3、路径:
- 起点:输入端口(input port)、触发器或寄存器的时钟引脚
- 输出端口:输出端口、时序器件的除时钟引脚外的所有输入引脚
具有四条路径: - 从输入端口A到FF1的D端口
- 从时钟clk到FF2的D端口
- 从时钟clk到FF2的输出端口
- 从输入端口A到FF2的输出端口
路径的特性是存在延时,也就是说,路径1、2、3、4都存在有延时,延时最长的一条路径称为关键路径。
满足建立时间的约束:为了满足FF2建立时间的要求,数据从FF1的clk端口到达FF2的D端口+FF2的建立时间不能超过时钟周期,也就是说(触发器的翻转时间/转换延时、寄存器与寄存器之间的组合逻辑延时、连