RTL DEBUG

RTL debugging is nothing but finding the bugs in the RTL design and fix it.The bugs might arise because of multiple reasons like incorrect syntax which gives rise to syntax errors and most of the time the compiler is smart enough to notify about these errors.

Other set of errors are functional and logical errors which might arise because of:-

Inference of latches in the RTL design because of incomplete case/if..else statement which gives rise to race condition which in turn gives rise to erroneous results.

Not proper usage of Verilog full case and parallel case and not using if else and case statement properly because if else generates priority encoder while case infers mux.

Address and Data mismatch and it is not generating as per the spec(may get solved using walking zero and ones pattern)

Incomplete sensitivity list which gives rise to synthesis and simulation mismatch.

Instantiation or stitching up of the signals at the intermediate blocks or top level.

Floating or unconnected signals(can get caught up during lint).

Problems in reset strategy and clock not getting generated.

Problems in state transitions.

Proper logic is not implemented in any particular block of design.So the above mentioned points are some of the scenarios but ideally not a complete list.There might be uncountable number of bugs which might exist and are not mentioned above but the main question is how to catch those bugs.

One method is just by writing some sanity test cases,log report and waveform level debug. But to catch most of the errors you first must need to create a Test Plan,write some directed and random test cases and also some corner case scenarios,generate code coverage and functional coverage reports and also to write assertions.

The main intention behind this is that the intended input should match the expected output.

Debugging is an art and takes years of experience where there will be always scope to improve. This is true whether you are debugging RTL or some Verification code or other software. The techniques also vary based on whether you are debugging a failure on a full chip RTL model or a smaller block level RTL model.

The first step when you see a failure is to isolate the failure to a smaller unit or a logical block. This especially important if the failure is on a large/higher level RTL model. This can involve simplification of failing test or reduction of test scenarios. You can also use monitor/logging to track what kind of events happen during simulation and where things go wrong.

Once you isolate failure to a smaller logical block, then use a waveform debugger to analyze wave forms/signals and their behavior as per the RTL logic. Most of modern waveform debuggers provides several features like tracking the logical cone or source code tracking which makes it easier to track down to the line of code which is buggy.

At every stage of RTL development and RTL verification, debugging speed of the engineers determines the success of RTL tape-out on time.

Popular debugging strategies are as follows:

Debug from log files - Verbosity of log is the key.

Debug from wave form dump - Signal level back tracing is the central aspect.

Debug from validation - Mostly used for system level issues which are difficult to create or run in simulation.

Most engineers start with Debug from log and try to get as many clues as possible before going for Waves Debug. Back trace the issue from the top module till the lower level module by making use of various flags/registers/control signal’s status.But there are some experts in every product line, be it IP or VIP, who Debug the issue by their expertise in use-cases and deep exposure to the product. Their help is must when some one is clueless about the issue even after examining logs and waves.And it’s always recommended to keep record of extremely difficult debug issues for future projects.


Anand Shirahatti

Verification, Methodology and Automation

3 年

Good pointers

要查看或添加评论,请登录

Sampath VP的更多文章

  • Deeplearning what does it fits?

    Deeplearning what does it fits?

    There is a huge enthusiasm for cognitive computing , artificial intelligence , machine learning , deep learning and…

  • Switch to Stand out

    Switch to Stand out

    Bharath Semiconductor Society which emphasis on the ESDM, Semiconductor, entrepreneurship,MSMEs and academics. Since…

    1 条评论
  • ASIC RTL vs FPGA RTL

    ASIC RTL vs FPGA RTL

    The biggest difference between RTL design for ASIC and RTL design for FPGA is that ASICs are custom-designed integrated…

  • DV TALK 31ST AUGUST DONT MISS IT!

    DV TALK 31ST AUGUST DONT MISS IT!

    DV TALK Greetings from Bharath Semiconductor society.Bharath Semiconductor Society of India was established in 2022 as…

    3 条评论
  • RTL Coding in FPGA

    RTL Coding in FPGA

    Module designers shall have detailed view of the design down to function/major component level for near-accurate…

  • Transaction layer of PCIe

    Transaction layer of PCIe

    Transaction layer Transaction layer’s primary responsibility is to create PCI Express request and completion…

  • Deep learning designs

    Deep learning designs

    DL designs for training can be a large size due to the shear amount of high precision MACs, memory routing, and…

  • PCIe Equalization phases

    PCIe Equalization phases

    Equalization is a critical aspect of PCIe technology that ensures the integrity of data transmission in increasingly…

  • PCIe Equalization

    PCIe Equalization

    · PCIe 3.0: Gen 3 introduced static equalization, primarily performed by the transmitter using 128/130 encoding.

  • PCIe Enumeration

    PCIe Enumeration

    PCIe enumeration is the process of detecting the devices connected to the PCIe bus. switches and endpoint devices are…

社区洞察

其他会员也浏览了