Definition

IDE is an acronym for integrated development environment. For a programmer, a development environment would encompass how they enter in text or input to a programming environment. The addition of the term “integrated” adds in supplemental tools or functionality to help with the creation of high-quality code. Integrating functionality makes the process of development more productive.

Common features of an IDE include:

  • Code introspection to learn more about a function or member
  • Documentation features
  • Autocomplete capabilities
  • Language awareness to correct coding problems, otherwise known as lint

What are the challenges writing code using Hardware Description Languages?

HDLs (hardware description languages) are used to describe and verify semiconductor designs and models. Common languages used for this purpose are SystemVerilog and VHDL. SystemVerilog originated from the design-oriented Verilog language but gained many additional verification technologies over time. SystemVerilog today includes:

  • Object-oriented, class-based elements of a modern programming language
  • Assertion language features
  • Constraint-solving engine
  • Widely supported by the popular SystemVerilog-based UVM IEEE framework

Among the challenges of writing HDL is the requirement of being an expert in all of areas of the language. In addition, the VHDL language, which may be used with SystemVerilog components, has its own separate syntax.

SystemVerilog and VHDL are both known as compiled languages. In other words, they are not dynamic languages that can be interpreted in real time and run immediately. Because of the need for compiling the language, the elaboration of these languages requires a sophisticated engine to efficiently populate the design so it can be fully checked by an IDE.


Benefits of an Integrated Development Environment

1. Better Project Visibility

Knowing how many possible code violations exist is the first step in improving the code. For example, Synopsys Euclide IDE generates a problem report in the graphical user interface (GUI) and optionally in a batch text form that categorizes coding problems into different severities. This gives the team a known metric to measure their code quality efforts.

 

2. Improved Forecasting of Code Completion

Tracking the “burn down”, or reduction, of code violations over time allows management to gauge the progress in resolving code violations. If the coding problems are not decreasing over time at a satisfactory rate, this gives visibility to the team that they may need to increase their effort to improve the code.

 

3. Improved Code Uniformity

All teams prefer to agree on code formatting and coding style rules, but without a tool to automate, categorize, and enforce those rules, a uniform code base is unlikely. Lack of uniform code can make documentation, reuse, or even readability of code difficult.

 

4. Faster Time to Production Code

Having a system to ensure best practices in coding is most effective when applied at the time of code entry. That way, the user can improve their code the instant it is written. Waiting for downsteam tools from development, such as simulation, formal, or even synthesis, to capture code problems is inefficient for developer and requires more time for corrective iterations. An IDE can help audit code as it is being written – even without requiring files to be saved!

 

5. Higher Quality Code

Coding problems in their simplest form are syntax violations of the language. The earlier that coding mistakes in the testbench or RTL are caught, the easier and quicker they are to fix. Otherwise, to correct syntax violations, the design must be compiled as the first step to determine code issues. A simulator like Synopsys VCS® or a formal engine like Synopsys VC Formal can detect most gross syntax violations. However, these tools are not optimized to find problems in code syntax and may take more time, detect fewer problems, and require more resources than an IDE.

An IDE can diagnose syntax problems more efficiently and also provides context to fix this class of problem efficiently. A more sophisticated form of checking exists in the hundreds of usage checks available in an IDE to assess the code more completely.

IDE gif

What solutions does Synopsys offer?

Synopsys Euclide IDE helps SystemVerilog programmers generate quality code, while also providing productivity features to accelerate code creation. It features hundreds of named lint rules developed with customers to help engineers who are new or experienced with SystemVerilog and VHDL. Euclide IDE is easy to deploy to teams, giving all team members a unified view into their product so each can produce quality deliverables.

Euclide IDE supports SystemVerilog and VHDL and can be used in different ways. For example, it can be run in batch mode and used as a continuous integration check to make sure every check-in is of high quality and free of lint errors. Euclide IDE can also be used as a code entry tool, providing an interactive IDE to experiment with code ideas. The solution can help with code navigation to trace class members and even generate HTML API documentation from the source code.

Euclide IDE optionally integrates with Synopsys Verdi® debug and verification management platform to synchronize files or hierarchies. Users can select hierarchies in the Verdi platform and Euclide IDE fwill automatically display the corresponding file. Euclide IDE also integrates with the Synopsys VCS as its command line can bring up Euclide with only a single argument change. All these integrations help make users more productive.

Continue Reading