One embodiment of the present invention provides a system for synthesizing
a circuit that allocates propagation delay between modules in the circuit
based upon wireload information. The system receives a circuit divided
into modules coupled together by a number of signal lines. The system
defines a first set of timing constraints, and uses the first set of
timing constraints to compile the circuit from a hardware description
language specification into a first gate-level implementation. Next, the
system performs a timing analysis on the first gate-level implementation
to determine positive or negative slack values for the signal lines. These
slack values specify amounts of extra propagation delay available on the
signal lines. Next, the slack values are used to define a second set of
timing constraints by allocating the slack values between the modules
based upon wireload information. This wireload information may include
such parameters as gate delays and drive strengths for gates coupled to
the signal lines. The second set of timing constraints is used to compile
the circuit into a second gate-level implementation. If necessary, the
process of compilation, timing analysis and allocation of slack values may
be repeated until the circuit meets all timing constraints.
Uma incorporação da invenção atual fornece um sistema synthesizing um circuito que aloce a propagação atrase entre os módulos no circuito baseado na informação do wireload. O sistema recebe um circuito dividido nos módulos acoplados junto por um número de linhas de sinal. O sistema define um primeiro jogo de confinamentes do sincronismo, e usa o primeiro jogo de confinamentes do sincronismo compilar o circuito de uma especificação da língua de descrição da ferragem em uma primeira execução do porta-nível. Em seguida, o sistema executa uma análise do sincronismo na primeira execução do porta-nível para determinar valores frouxos positivos ou negativos para as linhas de sinal. Estes valores frouxos especificam quantidades de propagação extra atrasam disponível nas linhas de sinal. Em seguida, os valores frouxos são usados definir um segundo jogo de confinamentes do sincronismo alocando os valores frouxos entre os módulos baseados na informação do wireload. Esta informação do wireload pode incluir tais parâmetros como a porta atrasam e as forças da movimentação para as portas acopladas às linhas de sinal. O segundo jogo de confinamentes do sincronismo é usado compilar o circuito em uma segunda execução do porta-nível. Se necessário, o processo da análise da compilação, cronometrar e do alocamento de valores frouxos pode ser repetido até que o circuito se encontre com todos os confinamentes do sincronismo.