Design Considerations for Digital VLSI

1Design procedures in VLSI SoCs are very complex. The designer should consider all possible states and inputs and design the chip in such a way that it works every time in every state and with every possible input. In this article, we discuss metastability, setup time, and hold time when designing a digital VLSI circuit.

Critical Path, Throughput, and Latency

The critical path is the longest path in the circuit and limits the clock speed. When describing a digital circuit there are two other important factors: latency and throughput. Latency is the time needed for an input change to produce an output change; latency can be expressed as a length of time or, in synchronous circuits, as a certain number of clock cycles. Throughput refers to the rate at which data can be processed.

Flip-Flops and Combinational Logic

A digital circuit can consist of sequential logic and combinational logic. Sequential logic refers to circuits whose output depends on previous states. In other words, it involves memory that stores previous states and allows a decision to be made based on these previous states and the current input signals. In the digital realm, flip-flops are the standard devices used for storing previous logic states. In Verilog, we can define a flip-flop by using the reg command:

reg[7:0] states;

The above line defines an 8-bit flip-flop. Flip-flops, which are sensitive to clock transitions rather than clock logic states, are the most basic element of synchronous designs.

Combinational logic refers to a circuit that computes an output based only on the current input signals.

Alt
Figure 1. sh = ab’+bc. Image courtesy of the Tampere University of Technology

A simple combinational logic circuit is implemented in Figure 1. Every logic device has a propagation delay. Propagation delay is the time difference between an input change and the corresponding output change. This delay can lead to unexpected behavior, such as when a gate accepts two inputs that come from paths with different numbers of gates (and therefore unequal total propagation delay).

Assume we are in the (1,1,1) input state and the output is steady at 1. If b changes from 1 to zero the output of the lower AND gate will transition before that of the upper AND gate, resulting in a temporary logic low on the output. This logic-low state is invalid, because a (1,0,1) input pattern should produce a logic-high output. This brief invalid output state is referred to as a hazard.

More specifically, this glitch is called a static hazard. Dynamic hazards occur when an input change leads to more than one output glitch. Usually, dynamic hazards occur in complex circuits with multiple gates and logic paths.

In synchronous design, we must ensure that glitches do not result in invalid output states. As mentioned above, for storing previous states designers usually use flip-flops with edge sensitivity. When using flip-flops in digital VLSI designs, we must consider the following:

Setup time: the input to a flip-flop should be stable for a certain amount of time (the setup time) before the clock transitions; otherwise, the flip-flop will behave in an unstable manner, referred to as metastability.
Hold time: the input of a flip-flop should remain stable for a certain amount of time (the hold time) after the clock transitions.
The following figure provides a visual description of setup time and hold time:

Alt
Figure 2. Setup and hold time definitions. Image courtesy of the Tampere University of Technology

Setup Time

A digital circuit designed for FPGA or ASIC purposes needs combinational logic for calculations. We usually build multipliers, subtractors, adders, etc., with logic gates. For storing input and output values for these combinational logic circuits, we use flip-flops. Flip-flops are at the beginning and at the end of all critical paths, as shown in Figure 3.

To avoid a setup-time violation when using flip-flops at the end of a combinational path, the output must be stable before the clock edge. Thus, the total propagation delay of a combinational path must not cause the output to transition such that the relationship between the clock signal and the data signal leads to a setup-time violation.

Alt
Figure 3. An example of a synchronous digital circuit.

Pipelining

In VLSI designs, we may face a very long critical path due to an extensive combinational circuit. In such cases, our clock speed will decrease to ensure that the delays associated with the critical path do not lead to setup-time violations. Pipelining is a technique whereby we divide a combinational path into multiple parts and include a register at the end of each partial path. In this way, we divide the critical path into multiple small paths, and this allows us to increase the clock speed and, consequently, the throughput of the circuit.

For example, in Figure 4 we have a long critical path that limits the clock frequency. However, the divided and pipelined path (see Figure 5) contains shorter combinational paths, and this means we can increase the clock speed. However, as a trade-off, the latency of the path will increase.

Alt
Figure 4. Long combinational logic path. Image courtesy of the Sharif University of Technology (PDF)

Alt
Figure 5. Pipelining of Figure 4 circuit. Image courtesy of the Sharif University of Technology (PDF)

Hold Time

The input to a flip-flop should be stable for an amount of time equal to or greater than the hold time. For example, in Figure 6, assume the delay of the combinational path between FF1 and FF2 is 0.7ns, the flip-flop setup time is 2ns, and its hold time is 1ns. If we assume that the propagation delay of the flip-flops is zero, after a clock edge the output of FF1 will change immediately, and 0.7ns later the signal has passed through the combinational logic and arrived at the FF2 input. However, the input to FF2 should be stable for at least 1ns after the clock edge. Thus, a hold-time violation occurs.

Alt
Figure 6. Hold-time violation example. Image courtesy of the VLSI Expert Group

A setup-time violation can be addressed by reducing the clock frequency, even after device fabrication has occurred; however, a hold-time violation cannot be corrected if it is discovered after the fabrication process. The important thing is to design our circuit so that hold-time violations will not occur; a combinational circuit connected to a flip-flop input should have a propagation delay that is compatible with the hold-time requirement.

One technique for avoiding hold-time violations is to increase the delay of a fast path by adding buffers. Nowadays, CAD tools can help by identifying portions of a design that could experience hold-time or setup-time violations. Furthermore, CAD tools can take timing requirements into account when synthesizing, placing, and routing a particular design.

Clock-Crossing

In most modern designs, multiple clock frequencies are used. ADCs or DACs may have a clock that is not synchronized with the FPGA clock, and yet the ADC or DAC signals must be introduced into the FPGA clock domain. When we’re working with multiple clock domains, we need to be careful to avoid situations that could lead to metastability.

We will need to achieve synchronization between different clock domains. This can be done by using a simple FIFO that has a clock for the input and a separate clock for the output. We could also use a basic shift register instead of a FIFO. The following Verilog code can be used to provide synchronization between different clock domains.

Input CLKA,CLKB;
Input signalinCLKA;
Output signalinCLKB;
Reg[1:0] shift_register;
always@(posedge CLKB)
begin
	shift_register[0]<=signalinCLKA;
	shift_register[1]<=shift_register[0];
end
assign signalinCLKB=signalinCLKA;

We can also employ asynchronous design techniques to address issues associated with multiple clock domains, but we will look at that in a future article. We will also wait until the next article to cover other important topics such as the following:

  • clock skew, and dealing with clock skew by means of clock
    distribution trees
  • issues associated with the use of gated clocks in FPGAs
  • flip-flops with negative hold time

Conclusion

In this article, we talked about hold-time violations and how to avoid them by adding a delay to fast logic paths. We also explained setup-time violations and we discussed pipelining as a method of avoiding timing problems in circuits that include a long critical path. Finally, we introduced the idea of multiple clock domains, and we looked at a simple Verilog approach to clock synchronization.


  1. 本文转自:Design Considerations for Digital VLSI ↩︎

### 回答1: PCI Express(简称PCIe)架构是一种用于连接计算机内置设备的高速串行总线标准。在进行PCIe的物理电测试时,需要考虑以下几个方面。 首先,传输速率是PCIe物理电测试的一个重要考虑因素。PCIe标准定义了不同的传输速率,如2.5Gbps、5Gbps和8Gbps等。测试时需要确保信号能以指定的速率进行传输,而不产生数据错误或错误的传输速率。 其次,信号完整性是另一个需要考虑的因素。PCIe信号在传输过程中容易受到干扰,如时钟抖动、串扰和噪声等。在测试中需要检测和分析信号的完整性,确保它们能稳定地传输而不受到干扰。 第三,功耗和电源管理也是PCIe物理电测试中需要关注的方面。PCIe设备在工作期间会产生热量,而不正确的功耗管理可能导致设备过热或不稳定。测试时需要测量设备的功耗和电源管理功能,以确保其在不同工作负载下能够正常运行。 此外,电缆和连接器的质量也是物理电测试中需要考虑的因素之一。PCIe连接器的接触质量和电缆的传输性能直接影响了整个系统的稳定性和可靠性。测试时需要检查连接器和电缆的连接状态,并测试其传输性能以确保其质量。 最后,抗干扰能力也是PCIe物理电测试中一个重要的考虑因素。PCIe设备在实际使用中可能会受到其他电子设备或无线信号的干扰。因此,在测试中需要评估设备的抗干扰能力,确保其在干扰环境下仍能稳定工作。 综上所述,PCIe物理电测试需要考虑传输速率、信号完整性、功耗和电源管理、连接器质量以及抗干扰能力等因素。通过对这些方面的测试和评估,可以确保PCIe设备的可靠性、性能和稳定性。 ### 回答2: PCI Express(PCIe)架构是一种高速串行数据总线标准,用于计算机系统中的外部设备连接。在测试PCIe架构时,需要考虑一些物理电测试的因素。 首先,应该确保传输介质的质量和可靠性。PCIe使用不同版本的传输介质,如铜线缆或光纤。测试人员需要检查传输介质的物理状态,确保其没有损坏或其他问题,以确保数据传输的稳定性和可靠性。 其次,还需考虑电气特性。PCIe架构需要满足特定的电气规范,以确保信号的正确传输和接收。测试时应检查电压、电流和信号波形等电气特性是否符合规范。这包括测试电源电压稳定性、消耗功率以及时钟信号等。 第三,信号完整性也是一个重要的考虑因素。PCIe使用差分信号传输,在测试过程中需要检查信号的完整性。差分信号测试涉及测试信号的振幅、上升时间、下降时间和噪声等。通过测试信号完整性,可以确保数据的正确传输,减少丢失和误码等问题。 此外,还应考虑外部干扰的影响。外部干扰可能会导致信号质量下降,从而影响PCIe架构的性能。测试人员需要测试环境中的干扰情况,以及采取适当的措施来减少干扰对PCIe架构的影响,例如使用屏蔽措施或进行地线和屏蔽的良好连接。 总之,测试PCIe架构时需要考虑传输介质的质量和可靠性、电气特性、信号完整性以及外部干扰等因素。通过进行全面的物理电测试,可以确保PCIe架构在实际应用中的稳定性和性能。 ### 回答3: PCI Express(以下简称PCIe)架构是一种计算机总线标准,用于在计算机内部连接外部设备和其他组件。进行PCIe物理电测试时需要考虑以下几个方面。 首先,受电控制和供电电机应该被充分考虑。在进行物理电测试之前,需要确保PCIe接口和其他相关设备的电源系统能够稳定地工作,并能提供足够的电流和电压。这需要进行电感、阻抗和稳压控制等方面的测试,以确保电源系统的稳定性和可靠性。 其次,信号完整性也是物理电测试的重要考虑因素之一。信号完整性是指在信号从发送器到接收器过程中,保持信号的正确性和可靠性。为了确保信号的完整性,需要对信号传输线路的电阻、电容和传输延迟进行测试。此外,还需要检查信号的波形、噪音和抖动等参数,以评估信号的质量和稳定性。 另外,电磁兼容性(EMC)也是PCIe物理电测试的重要考虑因素之一。EMC测试是为了确保PCIe接口和其他设备在电磁环境中能够正常工作,且不会对其他设备产生干扰。在EMC测试中,需要检查设备的辐射和敏感度,以及接地和屏蔽的效果,以确保PCIe架构在各种电磁环境下都能保持稳定的工作状态。 最后,还需要考虑PCIe接口的机械强度和可靠性。这包括对接口连接器的插拔次数、连接器的保持力和连接器接触性能等方面进行测试,以确保PCIe接口在长时间使用中能够保持稳定的连接和可靠的传输性能。 综上所述,PCIe物理电测试涉及到电源控制、供电电机、信号完整性、电磁兼容性和机械强度等多个方面的考虑因素。通过对这些方面的测试和评估,可以确保PCIe架构在各种环境下都能够提供稳定、可靠的数据传输和设备连接。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值