What is a Good Library!

Cell libraries determine the overall performance of the synthesized logic. A good cell library will result in fast design with smallest area, whereas a poor library will degrade the final result.

Historically, the cell libraries were schematic based. Designers would choose the appropriate cell and  connect them manually to produce a netlist for the design. When the automatic synthesis engines became prevalent, the same schematic based libraries were converted and used for synthesis. However, since the synthesis engine relies on a number of factors for optimization, this approach almost always resulted in poor performance of the synthesized logic. It is therefor imperative that the cell library be designed catered solely towards the synthesis approach.

The following guidelines outline, the specific kind of cells in the technology library desired by the synthesis engine.

  • A variety of drive strengths for all cells.
  • Larger varieties of drive strengths for inverters and buffers.
  • Cells with balanced rise and fall delays (used for clock tree buffers and gated clocks).
  • Same logical function and its inversion as separate outputs, with the same physical cell (e.g. OR gate and NOR gate, as a single cell), again a variety of drive strengths.
  • Complex cells ( e.g. AOI, OAI or NAND gate with one input ivnerted etc. ),   with a variety of high drive strengths. 
  • High fanin cells ( e.g. AOI with 6 inputs and one output) with a range of different drive stengths.
  • Varisty of flip-flops with different drive strengths, both positive and negative-edge triggered.
  • Single or Multiple outputs available for each flip-flop (e.g. Q only, or QN only, or both), each with a variety of drive strengths.
  • Flops to contains different inputs for Set and Reset (e.g. Set only, Reset only, no Set or Reset, both Set and Reset).
  • Variety of latches, both positive and negative-edge enabled each with different drive strengths.
  • Several delay cells. These are useful when fixing the hold-time violations.
Using the above guideline will result in a library optimized to handle the synthesis algorithm. This provides DC with the means to choose from a variety of cells to implement the best possible logic for the design.

It is worthwhile to note that the usage of high fanin cells, although useful in reducing the overall cell area, may cause routing congestion, which may inadvertently cause timing degradation, and/or increase in the area of the routed design. It is therefore recommended that these cells be used with caution.

Some designers prefer to exclude the low drive strengths for high fanin cells from the technology library. This is again is based on the algorithm used by the routing engine and the type of placement (timing driven etc.) used by designers. If the router is not constrained, then it uses a method by which it associates a weight to each net of the design while placing cells. Depending upon the weight of the net, the cells are pulled towards the source having the highest weight. High fanin cells have a larger weight associated to its inputs
(because of the number of inputs) compared to the weight associated with their outputs (single output). Therefore, the router will place these cells near the gates that are driving it. This will result in the high fanin cell being pulled away from the cell it is supposed to be driving, causing a long net to be driven by the high fanin cell. If the high fanin cell is not strong enough to drive this long net (large capacitance) then the result will be the computation of large cell delay for the high fanin cell, as well as the driven gate (because
of slow input transition time). By eliminating the low drive strengths of the high-fanin cells from the technology library, this problem can be prevented after layout.


C - Brackets Stack Query / Time Limit: 3 sec / Memory Limit: 1024 MiB Score : 300 points Problem Statement A string T is called a good bracket sequence if and only if it satisfies the following condition: T can be made into an empty string by repeating the following operation zero or more times: Choose () contained in T as a (contiguous) substring and remove it. For example, (), (()()), and the empty string are good bracket sequences, but )()( and ))) are not good bracket sequences. There is a string S. Initially, S is an empty string. Process Q queries in the order they are given. After each query, determine whether S is a good bracket sequence. There are two types of queries: 1 c: A character c is given. c is either ( or ). Append c to the end of S. 2: Remove the last character of S. It is guaranteed that S is not an empty string at this time. Constraints 1≤Q≤8×10 5 c in queries of the first type is ( or ). It is guaranteed that S is not empty when a query of the second type is given. Q is an integer. Input The input is given from Standard Input in the following format, where query i ​ denotes the i-th query. Q query 1 ​ query 2 ​ ⋮ query Q ​ Each query is given in one of the following two formats: 1 c 2 Output Output Q lines. The i-th line should contain Yes if the string S immediately after processing the i-th query is a good bracket sequence, and No otherwise. Sample Input 1 Copy 8 1 ( 2 1 ( 1 ) 2 1 ( 1 ) 1 ) Sample Output 1 Copy No Yes No Yes No No No Yes S immediately after processing the 1st query is (, which is not a good bracket sequence. S immediately after processing the 2nd query is an empty string, which is a good bracket sequence. S immediately after processing the 3rd query is (, which is not a good bracket sequence. S immediately after processing the 4th query is (), which is a good bracket sequence. S immediately after processing the 5th query is (, which is not a good bracket sequence. S immediately after processing the 6th query is ((, which is not a good bracket sequence. S immediately after processing the 7th query is ((), which is not a good bracket sequence. S immediately after processing the 8th query is (()), which is a good bracket sequence.c++
10-20
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值