<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Tech Articles on Sigasi</title><link>https://www.sigasi.com/tech/</link><description>Recent content in Tech Articles on Sigasi</description><generator>Hugo</generator><language>en</language><atom:link href="https://www.sigasi.com/tech/index.xml" rel="self" type="application/rss+xml"/><item><title>Verilog Assignments: blocking or non-blocking?</title><link>https://www.sigasi.com/tech/verilog_assignments_blocking_nonblocking/</link><pubDate>Mon, 27 Oct 2025 00:00:00 +0000</pubDate><guid>https://www.sigasi.com/tech/verilog_assignments_blocking_nonblocking/</guid><description>&lt;p>&lt;strong>Verilog&lt;/strong> / &lt;strong>SystemVerilog&lt;/strong> has &lt;strong>two different assignment operators&lt;/strong>. One assignment operator is blocking, the other one non-blocking. In this article, we&amp;rsquo;ll discuss &lt;strong>how they are different&lt;/strong> and &lt;strong>when to use each of them&lt;/strong>. Note that we&amp;rsquo;re talking about &lt;strong>assignments in procedures (always, initial etc.)&lt;/strong> only, and not about continuous assignments.&lt;/p></description></item><item><title>Sigasi Visual HDL Preview (2026.1)</title><link>https://www.sigasi.com/tech/preview/</link><pubDate>Fri, 17 Oct 2025 00:00:00 +0000</pubDate><guid>https://www.sigasi.com/tech/preview/</guid><description>&lt;p>For users who want early access to the features and bug fixes of upcoming Sigasi Visual HDL releases, we have set up an extra release channel called &lt;code>Sigasi Preview&lt;/code>.&lt;/p>
&lt;p>The Sigasi Preview release channel offers more frequent releases than the official releases. This page gives an introduction to the most important changes.&lt;/p></description></item><item><title>Setting up a VUnit project in VS Code</title><link>https://www.sigasi.com/tech/vunit-new-project-setup/</link><pubDate>Thu, 09 Oct 2025 00:00:00 +0000</pubDate><guid>https://www.sigasi.com/tech/vunit-new-project-setup/</guid><description>&lt;p>This article explains how to set up &lt;a
 style="white-space: nowrap;"
 href="https://vunit.github.io/"
 
 target="_blank"
 
 >VUnit&amp;nbsp;&lt;span uk-icon="icon: sign-out; ratio: 0.7">&lt;/span>&lt;/a> with the new &lt;a
 style="white-space: nowrap;"
 href="https://www.sigasi.com/manual/projects/sigasi-projects/"
 
 >Sigasi Project format&lt;/a>. This method uses a &lt;strong>scripted target&lt;/strong> to integrate VUnit&amp;rsquo;s compilation flow into Sigasi Visual HDL.&lt;/p></description></item><item><title>Getting started with verification in UVVM</title><link>https://www.sigasi.com/tech/uvvm_util_example/</link><pubDate>Mon, 01 Sep 2025 00:00:00 +0000</pubDate><guid>https://www.sigasi.com/tech/uvvm_util_example/</guid><description>&lt;p>&lt;a
 style="white-space: nowrap;"
 href="https://www.uvvm.org/"
 
 target="_blank"
 
 >Universal VHDL Verification Methodology (UVVM)&amp;nbsp;&lt;span uk-icon="icon: sign-out; ratio: 0.7">&lt;/span>&lt;/a> is an open-source framework designed to streamline the creation of structured &lt;a
 style="white-space: nowrap;"
 href="https://en.wikipedia.org/wiki/VHDL"
 
 target="_blank"
 
 >VHDL&amp;nbsp;&lt;span uk-icon="icon: sign-out; ratio: 0.7">&lt;/span>&lt;/a> testbenches, facilitating the verification of FPGA and ASIC designs. It provides a comprehensive library of verification components and utilities to help design teams reduce the effort and complexity involved in writing testbenches. If you are familiar with &lt;a
 style="white-space: nowrap;"
 href="https://en.wikipedia.org/wiki/Universal_Verification_Methodology"
 
 target="_blank"
 
 >UVM&amp;nbsp;&lt;span uk-icon="icon: sign-out; ratio: 0.7">&lt;/span>&lt;/a>, UVVM is UVM&amp;rsquo;s VHDL counterpart.&lt;/p></description></item><item><title>Insights into FSM Design Practice</title><link>https://www.sigasi.com/tech/fsm-practice-insights/</link><pubDate>Thu, 31 Jul 2025 00:00:00 +0000</pubDate><guid>https://www.sigasi.com/tech/fsm-practice-insights/</guid><description>&lt;h2 
 class="uk-heading-large" 
 id="introduction">
 &lt;a
 href="https://www.sigasi.com/tech/fsm-practice-insights/#introduction"
 class="uk-link-reset"
 aria-label="Link to this section: Introduction">
 Introduction
 &lt;/a>
&lt;/h2>
&lt;p>This article starts with elaborating the necessity for rigor FSM design and its key objectives. It provides exemplary implementations of good practices. Finally, it goes over a step by step example of building an FSM with the help of Sigasi Visual HDL (SVH) on VS Code.&lt;/p></description></item><item><title>Signal Assignments in VHDL: with/select, when/else and case</title><link>https://www.sigasi.com/tech/signal-assignments-vhdl-withselect-whenelse-and-case/</link><pubDate>Thu, 05 Jun 2025 00:00:00 +0000</pubDate><guid>https://www.sigasi.com/tech/signal-assignments-vhdl-withselect-whenelse-and-case/</guid><description>&lt;p>VHDL provides several ways to assign values to a signal based on the value of another.
Most of the time, there’s more than one valid approach, and each has its advantages
depending on clarity, maintainability, and tool support. This guide covers three primary
idioms: &lt;strong>selected signal assignment&lt;/strong> (with/select), &lt;strong>conditional signal assignment&lt;/strong>
(when/else), and &lt;strong>case statements inside processes&lt;/strong>.&lt;br>
VHDL-2008 introduced a 4th idiom: &lt;strong>pattern matching in case statements&lt;/strong>.
We&amp;rsquo;ll conclude with practical considerations for using the right construct.&lt;/p></description></item><item><title>Better call SAL</title><link>https://www.sigasi.com/tech/better-call-sal/</link><pubDate>Wed, 07 Aug 2024 00:00:00 +0000</pubDate><guid>https://www.sigasi.com/tech/better-call-sal/</guid><description>&lt;p>More than a year ago, we published a blog post discussing the effectiveness of using GitHub Copilot in combination with
Sigasi (see &lt;a
 style="white-space: nowrap;"
 href="https://www.sigasi.com/tech/github-copilot/"
 
 >original post&lt;/a>). Since then, we&amp;rsquo;ve integrated our own AI tool, SAL (Sigasi AI layer), into Sigasi® Visual HDL™ (SVH™), making it a great time to revisit the topic. In this article, we used SAL in combination with various language models to evaluate its strengths and weaknesses.&lt;/p></description></item><item><title>Exploring GitHub Copilot</title><link>https://www.sigasi.com/tech/github-copilot/</link><pubDate>Mon, 04 Dec 2023 00:00:00 +0000</pubDate><guid>https://www.sigasi.com/tech/github-copilot/</guid><description>&lt;p>Two years ago, GitHub Copilot was released as an AI-powered coding assistant. Since then, it has been widely used by software developers.
So far, it has delivered very good results with programming languages such as C++ or Python.
We decided to run some experiments to see how it would perform with hardware description languages. Here is what we have found out.&lt;/p></description></item><item><title>Rapid Waveforms with GTKWave</title><link>https://www.sigasi.com/tech/rapid-waveforms/</link><pubDate>Mon, 16 Oct 2023 00:00:00 +0000</pubDate><guid>https://www.sigasi.com/tech/rapid-waveforms/</guid><description>&lt;p>My name is Felix, and I&amp;rsquo;ve been working at Sigasi for about a year and a half at the time of writing.
My background is in software development and mathematics,
so I took a VHDL course a year ago,
together with some other colleagues,
to get a better feel for the context I&amp;rsquo;m now working in.&lt;/p></description></item><item><title>ANSI and Non-ANSI Port Declarations in Verilog</title><link>https://www.sigasi.com/tech/ansi-vs-non-ansi/</link><pubDate>Wed, 02 Aug 2023 00:00:00 +0000</pubDate><guid>https://www.sigasi.com/tech/ansi-vs-non-ansi/</guid><description>&lt;p>In Verilog, module ports can be declared using one of two styles: ANSI or non-ANSI. This article covers the distinct syntaxes of these two styles, as well as further differences between them.&lt;/p></description></item><item><title>Using VUnit for Real</title><link>https://www.sigasi.com/tech/vunit-real-example/</link><pubDate>Wed, 26 Apr 2023 00:00:00 +0000</pubDate><guid>https://www.sigasi.com/tech/vunit-real-example/</guid><description>&lt;p>&lt;a
 style="white-space: nowrap;"
 href="https://vunit.github.io"
 
 target="_blank"
 
 >VUnit&amp;nbsp;&lt;span uk-icon="icon: sign-out; ratio: 0.7">&lt;/span>&lt;/a> is an open-source &lt;strong>&lt;a
 style="white-space: nowrap;"
 href="https://en.wikipedia.org/wiki/Unit_testing"
 
 target="_blank"
 
 >unit
testing&amp;nbsp;&lt;span uk-icon="icon: sign-out; ratio: 0.7">&lt;/span>&lt;/a> framework for
VHDL and SystemVerilog&lt;/strong> that helps write and execute
tests. VUnit &lt;strong>scans your projects for unit tests&lt;/strong> (aka test
benches), &lt;strong>runs them&lt;/strong> with your favorite simulator, and &lt;strong>reports the
results&lt;/strong>. This automation helps run tests (more) frequently and iterate
faster.&lt;/p></description></item><item><title>Using VUnit in a GitLab CI Verification Environment</title><link>https://www.sigasi.com/tech/vunit-gitlab-ci/</link><pubDate>Wed, 14 Dec 2022 00:00:00 +0000</pubDate><guid>https://www.sigasi.com/tech/vunit-gitlab-ci/</guid><description>&lt;h1 
 
 id="introduction">
 &lt;a
 href="https://www.sigasi.com/tech/vunit-gitlab-ci/#introduction"
 class="uk-link-reset"
 aria-label="Link to this section: Introduction">
 Introduction
 &lt;/a>
&lt;/h1>
&lt;p>Continuous Integration (CI) and Continuous Deployment (CD) are getting more and more important in today&amp;rsquo;s development processes, especially when working agile/lean by using DevOps principles. It helps to find errors earlier, makes designs more reliable, and in the end it takes pressure off the FPGA developers who too often have really long days and nights to meet deadlines.&lt;/p></description></item><item><title>VUnit: managing input files and compile order</title><link>https://www.sigasi.com/tech/vunit-compile-order/</link><pubDate>Thu, 29 Sep 2022 00:00:00 +0000</pubDate><guid>https://www.sigasi.com/tech/vunit-compile-order/</guid><description>&lt;p>Some time ago, while preparing for an &lt;a
 style="white-space: nowrap;"
 href="https://www.sigasi.com/tech/vunit-uvm/"
 
 >earlier article on VUnit and
UVM&lt;/a>, a warning message in a
&lt;a
 style="white-space: nowrap;"
 href="https://vunit.github.io"
 
 target="_blank"
 
 >VUnit&amp;nbsp;&lt;span uk-icon="icon: sign-out; ratio: 0.7">&lt;/span>&lt;/a> run caught my attention.&lt;/p>
&lt;div class="code-block-container">
 &lt;div class="code-block-header">
 &lt;span class="code-block-lang">&lt;/span>
 &lt;button class="code-block-copy" aria-label="Copy code to clipboard">
 &lt;i data-lucide="copy" style="width: 1rem; height: 1rem;">&lt;/i>
 &lt;/button>
 &lt;/div>&lt;pre tabindex="0">&lt;code>Compiling into lib: vhdl_adder_tb.sv passed
WARNING VCP2515 &amp;#34;Undefined module: vhdl_adder was used. Port connection rules will not be checked
 at such instantiations.&amp;#34; &amp;#34;.../vhdl_adder_tb.sv&amp;#34; 20 6
Compiling into lib: vhdl_adder.vhd passed&lt;/code>&lt;/pre>&lt;/div>
&lt;p>The tests themselves were running nicely, but hey! VUnit compiles
the testbench before the relevant design under test (DUT) and the
compiler complains that the DUT is not available when compiling the
testbench. Wasn&amp;rsquo;t &lt;strong>VUnit&lt;/strong> supposed to &lt;strong>figure out the compile
order&lt;/strong> by itself?&lt;/p></description></item><item><title>VHDL 2019: Conditional Analysis</title><link>https://www.sigasi.com/tech/vhdl-conditional-analysis/</link><pubDate>Tue, 02 Aug 2022 00:00:00 +0000</pubDate><guid>https://www.sigasi.com/tech/vhdl-conditional-analysis/</guid><description>&lt;p>If you are writing universal, portable VHDL code, be it a design that targets multiple chip families, or a library that should work with multiple simulators, you may have noticed that it can be quite challenging to make things work everywhere.
Different vendors provide their own macros and IPs, simulators provide their own utility libraries, tools support different VHDL attributes. Your code may be treated differently or even fail to compile if it uses language features that are not supported by one of the tools.&lt;/p></description></item><item><title>Running UVM tests in VUnit</title><link>https://www.sigasi.com/tech/vunit-uvm/</link><pubDate>Tue, 28 Jun 2022 00:00:00 +0000</pubDate><guid>https://www.sigasi.com/tech/vunit-uvm/</guid><description>&lt;p>&lt;a
 style="white-space: nowrap;"
 href="https://vunit.github.io"
 
 target="_blank"
 
 >&lt;strong>VUnit&lt;/strong>&amp;nbsp;&lt;span uk-icon="icon: sign-out; ratio: 0.7">&lt;/span>&lt;/a> and
&lt;a
 style="white-space: nowrap;"
 href="https://www.accellera.org/downloads/standards/uvm"
 
 target="_blank"
 
 >&lt;strong>UVM&lt;/strong>&amp;nbsp;&lt;span uk-icon="icon: sign-out; ratio: 0.7">&lt;/span>&lt;/a> are two
increasingly popular standards in the field of &lt;strong>HDL verification&lt;/strong>.&lt;/p>
&lt;p>&lt;strong>VUnit&lt;/strong>, as the name suggests, is primarily intended for unit
testing. Compared to system tests, unit tests are typically small, and VUnit test are
written by designers or verification engineers in the same HDL as the
design. VUnit supports both VHDL and SystemVerilog for designs and
testbenches.&lt;/p></description></item><item><title>7 reasons why you should try out our VS Code extension, number 4 will blow your mind 👀</title><link>https://www.sigasi.com/tech/7-reasons-to-install-our-extension/</link><pubDate>Mon, 16 May 2022 00:00:00 +0000</pubDate><guid>https://www.sigasi.com/tech/7-reasons-to-install-our-extension/</guid><description>&lt;p>Sigasi is always trying to innovate in the world of digital design. We have been developing and improving our Eclipse-based flagship product: &lt;a
 style="white-space: nowrap;"
 href="https://www.sigasi.com/solutions/"
 
 >Sigasi Visual HDL&lt;/a>. This has improved the productivity of many digital designers around the world, making them focus on what&amp;rsquo;s really important: designing.&lt;/p></description></item><item><title>Sigasi Visual HDL in your design flow, and vice versa</title><link>https://www.sigasi.com/tech/sigasi-designflow/</link><pubDate>Fri, 22 Oct 2021 00:00:00 +0000</pubDate><guid>https://www.sigasi.com/tech/sigasi-designflow/</guid><description>&lt;p>The challenges in a world of ever &lt;strong>increasing complexity of
(integrated) electronic circuits&lt;/strong> are often addressed by greater
automation, advanced design processes and more sophisticated
tools. Even though these help to cope with more complex designs, they
also introduce more &lt;strong>complexity in the design flow&lt;/strong> itself. Running
the sequence of design automation tools that are necessary to
accomplish the design is in itself a challenge that the designer must
handle.&lt;/p></description></item><item><title>Build systems for HDL projects</title><link>https://www.sigasi.com/tech/build-systems-for-hdl/</link><pubDate>Tue, 04 May 2021 00:00:00 +0000</pubDate><guid>https://www.sigasi.com/tech/build-systems-for-hdl/</guid><description>&lt;h2 
 class="uk-heading-large" 
 id="introduction">
 &lt;a
 href="https://www.sigasi.com/tech/build-systems-for-hdl/#introduction"
 class="uk-link-reset"
 aria-label="Link to this section: Introduction">
 Introduction
 &lt;/a>
&lt;/h2>
&lt;p>For a long time, software developers have enjoyed build systems to
help them build their code. These build systems keep track of
dependencies and call the appropriate tools to run the design flow or
parts thereof. In this article, we try to give an overview of
currently available build tools for VHDL and (System)Verilog
projects.&lt;/p></description></item><item><title>Case statements in VHDL and (System)Verilog</title><link>https://www.sigasi.com/tech/case-statements-vhdl-verilog/</link><pubDate>Thu, 17 Dec 2020 00:00:00 +0000</pubDate><guid>https://www.sigasi.com/tech/case-statements-vhdl-verilog/</guid><description>&lt;p>In programming languages, &lt;strong>&lt;code>case&lt;/code> (or &lt;code>switch&lt;/code>) statements&lt;/strong> are used as
a &lt;strong>conditional statement&lt;/strong> in which a selection is made based on
different values of a particular variable or expression. A general
discussion of these statements can be found
&lt;a
 style="white-space: nowrap;"
 href="https://en.wikipedia.org/wiki/Switch_statement"
 
 target="_blank"
 
 >here&amp;nbsp;&lt;span uk-icon="icon: sign-out; ratio: 0.7">&lt;/span>&lt;/a>.&lt;/p></description></item><item><title>Actual? Formal? What do they mean?</title><link>https://www.sigasi.com/tech/actual-formal/</link><pubDate>Wed, 14 Oct 2020 00:00:00 +0000</pubDate><guid>https://www.sigasi.com/tech/actual-formal/</guid><description>&lt;p>In this article, we discuss the terms &lt;strong>actual&lt;/strong> and &lt;strong>formal&lt;/strong>. These
terms show up in the &lt;strong>Language Reference Manual&lt;/strong> of VHDL and
(System)Verilog, and they also show up in some of the error messages
in Sigasi Visual HDL. Actuals and formals are short for actual and formal
&lt;strong>arguments&lt;/strong> of functions, procedures, entities, modules&amp;hellip;&lt;/p></description></item><item><title>Wildcards in sensitivity lists in VHDL and Verilog</title><link>https://www.sigasi.com/tech/wildcard_sensitivity/</link><pubDate>Mon, 28 Sep 2020 00:00:00 +0000</pubDate><guid>https://www.sigasi.com/tech/wildcard_sensitivity/</guid><description>&lt;p>In hardware description languages (HDL), &lt;strong>sensitivity lists&lt;/strong> are used to indicate which events may &lt;strong>trigger&lt;/strong> a VHDL &lt;strong>process&lt;/strong> or (System)Verilog &lt;strong>always statement&lt;/strong>.
These trigger events are usually transitions of signals that are inputs of the process or always statement.&lt;/p></description></item><item><title>How to code reset in a synchronous VHDL process</title><link>https://www.sigasi.com/tech/vhdl-resets/</link><pubDate>Tue, 11 Aug 2020 00:00:00 +0000</pubDate><guid>https://www.sigasi.com/tech/vhdl-resets/</guid><description>&lt;p>In digital design, &lt;strong>resets&lt;/strong> are used to &lt;strong>bring a circuit into a predefined state&lt;/strong> after power-up. This article focuses on how to design resets for synchronous digital circuits in VHDL. The concepts discussed in this article are equally valid in other design languages e.g. Verilog.&lt;/p></description></item><item><title>VHDL 2019: Usability and APIs</title><link>https://www.sigasi.com/tech/what-is-new-in-vhdl-2019-part4/</link><pubDate>Thu, 18 Jun 2020 00:00:00 +0000</pubDate><guid>https://www.sigasi.com/tech/what-is-new-in-vhdl-2019-part4/</guid><description>&lt;p>In this fourth and last article in our series about VHDL 2019, we discuss some smaller usability improvements.
The new and improved APIs are also mentioned.
You can read the third part &lt;a
 style="white-space: nowrap;"
 href="https://www.sigasi.com/tech/what-is-new-in-vhdl-2019-part3/"
 
 >here&lt;/a>.&lt;/p></description></item><item><title>VHDL 2019: Enhanced generic types</title><link>https://www.sigasi.com/tech/what-is-new-in-vhdl-2019-part3/</link><pubDate>Tue, 16 Jun 2020 00:00:00 +0000</pubDate><guid>https://www.sigasi.com/tech/what-is-new-in-vhdl-2019-part3/</guid><description>&lt;p>This is the third article in our series about VHDL 2019.
In this article the enhanced generic types are discussed.
You can read the second part &lt;a
 style="white-space: nowrap;"
 href="https://www.sigasi.com/tech/what-is-new-in-vhdl-2019-part2/"
 
 >here&lt;/a>.&lt;/p>
&lt;h1 
 
 id="enhanced-generic-types">
 &lt;a
 href="https://www.sigasi.com/tech/what-is-new-in-vhdl-2019-part3/#enhanced-generic-types"
 class="uk-link-reset"
 aria-label="Link to this section: Enhanced generic types">
 Enhanced generic types
 &lt;/a>
&lt;/h1>
&lt;p>VHDL 2019 improves generic types and subprograms. In VHDL 2008 generic types were introduced, these
generic types can be bound to any type. In addition to the generic type, a number of generic operations can be
provided with the type. For example:&lt;/p></description></item><item><title>VHDL 2019: Interfaces</title><link>https://www.sigasi.com/tech/what-is-new-in-vhdl-2019-part2/</link><pubDate>Thu, 11 Jun 2020 00:00:00 +0000</pubDate><guid>https://www.sigasi.com/tech/what-is-new-in-vhdl-2019-part2/</guid><description>&lt;p>This is the second article in our series about VHDL 2019.
In this article we look at the new ability to cleanly express interfaces.
You can read the first part &lt;a
 style="white-space: nowrap;"
 href="https://www.sigasi.com/tech/what-is-new-in-vhdl-2019-part1/"
 
 >here&lt;/a>.&lt;/p></description></item><item><title>What's new in VHDL 2019?</title><link>https://www.sigasi.com/tech/what-is-new-in-vhdl-2019-part1/</link><pubDate>Tue, 09 Jun 2020 00:00:00 +0000</pubDate><guid>https://www.sigasi.com/tech/what-is-new-in-vhdl-2019-part1/</guid><description>&lt;h1 
 
 id="introduction">
 &lt;a
 href="https://www.sigasi.com/tech/what-is-new-in-vhdl-2019-part1/#introduction"
 class="uk-link-reset"
 aria-label="Link to this section: Introduction">
 Introduction
 &lt;/a>
&lt;/h1>
&lt;p>This article is the first in a series of articles that are taken from the talk &lt;strong>VHDL 2018: New and Noteworthy&lt;/strong> (&lt;a
 style="white-space: nowrap;"
 href="https://www.slideshare.net/LievenLemiengre/vhdl-2017-new-and-noteworthy"
 
 target="_blank"
 
 >slides&amp;nbsp;&lt;span uk-icon="icon: sign-out; ratio: 0.7">&lt;/span>&lt;/a>).
This talk was given by our colleague &lt;a
 style="white-space: nowrap;"
 href="https://www.sigasi.com/about/"
 
 >Lieven Lemiengre&lt;/a> at DVCON 2018.
Since the new VHDL standard was approved and published in 2019,
all references to 2018 from the talk have been replaced by 2019 in this series of articles.&lt;/p></description></item><item><title>Records in VHDL: Initialization and Constraining unconstrained fields</title><link>https://www.sigasi.com/tech/records-initialize/</link><pubDate>Tue, 31 Mar 2020 00:00:00 +0000</pubDate><guid>https://www.sigasi.com/tech/records-initialize/</guid><description>&lt;p>In VHDL, &lt;strong>records&lt;/strong> help the designer &lt;strong>organize data that belongs
together&lt;/strong>. By using records, VHDL code will be &lt;strong>easier to understand and
maintain&lt;/strong>. This article highlights a couple of slightly more advanced
aspects of record types in VHDL, namely how to use &lt;strong>record constants&lt;/strong>,
and how to use &lt;strong>unconstrained data types as fields&lt;/strong> in records. We&amp;rsquo;ll see that,
apart from some particular syntax, records are fairly easy to use
after all.&lt;/p></description></item><item><title>Finite State Machine (FSM) encoding in VHDL: binary, one-hot, and others</title><link>https://www.sigasi.com/tech/vhdl-onehot-fsm/</link><pubDate>Fri, 06 Mar 2020 00:00:00 +0000</pubDate><guid>https://www.sigasi.com/tech/vhdl-onehot-fsm/</guid><description>&lt;figure>&lt;img src="https://www.sigasi.com/img/manual/state_diag.png"alt="SFM state diagram"width="280px"class="uk-align-right"/> &lt;figcaption>&lt;p>State diagram in Sigasi Visual HDL Professional&lt;/p>&lt;/figcaption>&lt;/figure>

&lt;p>In VHDL, &lt;strong>Finite State Machines (FSMs)&lt;/strong> can be written in various ways. This article addresses the &lt;strong>encoding&lt;/strong> of, and the &lt;strong>data types&lt;/strong> used, for the &lt;strong>state register&lt;/strong>. The encoding of the states of an FSM affects its performance in terms of speed, resource usage (registers, logic) and potentially power consumption. As we will see, &lt;strong>enumerated datatypes&lt;/strong> are preferred for &lt;strong>clarity and easy of maintenance&lt;/strong>.&lt;/p></description></item><item><title>Recovering Verilog and SystemVerilog Parser</title><link>https://www.sigasi.com/tech/recovering-systemverilog-parser/</link><pubDate>Fri, 31 Jan 2020 00:00:00 +0000</pubDate><guid>https://www.sigasi.com/tech/recovering-systemverilog-parser/</guid><description>&lt;p>When you&amp;rsquo;re writing HDL code, be it in SystemVerilog, Verilog or VHDL, your code is broken or incomplete most of the time.
Any regular compiler stops on the first error it encounters and will often only show an obscure error message.
At Sigasi, we are convinced productivity and happiness of HDL developers increase when they receive immediate feedback on broken code.&lt;/p></description></item><item><title>Register Description Language SystemRDL 2.0</title><link>https://www.sigasi.com/tech/rdl.ebnf/</link><pubDate>Tue, 23 Apr 2019 00:00:00 +0000</pubDate><guid>https://www.sigasi.com/tech/rdl.ebnf/</guid><description>&lt;p>&lt;em>Copyright © 2015 - 2018 Accellera. All rights reserved.&lt;/em>&lt;/p>
&lt;p>&lt;em>Get the full Language Reference Manual, free of charge, at &lt;a
 style="white-space: nowrap;"
 href="https://www.accellera.org/downloads/standards/systemrdl"
 
 target="_blank"
 
 >https://www.accellera.org/downloads/standards/systemrdl&amp;nbsp;&lt;span uk-icon="icon: sign-out; ratio: 0.7">&lt;/span>&lt;/a>&lt;/em>&lt;/p>
&lt;p>&lt;em>Sigasi has created this browsable version of the grammar, hoping that it would be useful to you, but without any warranty whatsoever.&lt;/em>&lt;/p></description></item><item><title>Portable Test and Stimulus Standard Version 1.0</title><link>https://www.sigasi.com/tech/pss.ebnf/</link><pubDate>Wed, 27 Jun 2018 00:00:00 +0000</pubDate><guid>https://www.sigasi.com/tech/pss.ebnf/</guid><description>&lt;p>&lt;em>Copyright © 2017 - 2018 Accellera. All rights reserved.&lt;/em>&lt;/p>
&lt;p>&lt;em>Get the full Language Reference Manual, free of charge, at &lt;a
 style="white-space: nowrap;"
 href="http://www.accellera.org/downloads/standards/portable-stimulus"
 
 target="_blank"
 
 >http://www.accellera.org/downloads/standards/portable-stimulus&amp;nbsp;&lt;span uk-icon="icon: sign-out; ratio: 0.7">&lt;/span>&lt;/a>&lt;/em>&lt;/p>
&lt;p>&lt;em>Sigasi has created this browsable version of the grammar, hoping that it would be useful to you, but without any warranty whatsoever.&lt;/em>&lt;/p></description></item><item><title>Using the util package from Modelsim with VHDL 2008</title><link>https://www.sigasi.com/tech/modelsim-lib-util-2008/</link><pubDate>Mon, 15 Jan 2018 00:00:00 +0000</pubDate><guid>https://www.sigasi.com/tech/modelsim-lib-util-2008/</guid><description>&lt;p>The &lt;code>util&lt;/code> package that comes with Modelsim in the &lt;code>mti_util.vhd&lt;/code> file includes an enumerated type &lt;code>forcetype&lt;/code> that is defined as:&lt;/p>
&lt;div class="code-block-container">
 &lt;div class="code-block-header">
 &lt;span class="code-block-lang">VHDL&lt;/span>
 &lt;button class="code-block-copy" aria-label="Copy code to clipboard">
 &lt;i data-lucide="copy" style="width: 1rem; height: 1rem;">&lt;/i>
 &lt;/button>
 &lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-vhdl" data-lang="vhdl">&lt;span class="line">&lt;span class="cl">&lt;span class="k">type&lt;/span> &lt;span class="n">forcetype&lt;/span> &lt;span class="k">is&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">default&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">deposit&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">drive&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">freeze&lt;/span>&lt;span class="p">);&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/div>
&lt;p>In VHDL 2008, &lt;em>default&lt;/em> is a new keyword.
This causes problems in VHDL 2008 projects that use the &lt;code>util&lt;/code> package.
Still, Sigasi Visual HDL allows to use the &lt;code>modelsim_lib.util&lt;/code> package in VHDL 2008 projects.&lt;/p></description></item><item><title>Array size mismatches with generic port widths</title><link>https://www.sigasi.com/tech/generic-port-width/</link><pubDate>Tue, 09 Jan 2018 00:00:00 +0000</pubDate><guid>https://www.sigasi.com/tech/generic-port-width/</guid><description>&lt;h2 
 class="uk-heading-large" 
 id="customer-question">
 &lt;a
 href="https://www.sigasi.com/tech/generic-port-width/#customer-question"
 class="uk-link-reset"
 aria-label="Link to this section: Customer question">
 Customer question
 &lt;/a>
&lt;/h2>
&lt;p>On a regular basis we receive questions from customers about &lt;em>Incorrect array size&lt;/em> warnings or errors.&lt;/p>
&lt;p>&lt;img src="https://www.sigasi.com/img/tech/generic-port-width/warning_message.png" alt="Incorrect array size warning" title="Incorrect array size warning">&lt;/p></description></item><item><title>VHDL IEEE 1076-2017 Grammar</title><link>https://www.sigasi.com/tech/vhdl2017.ebnf/</link><pubDate>Thu, 27 Jul 2017 00:00:00 +0000</pubDate><guid>https://www.sigasi.com/tech/vhdl2017.ebnf/</guid><description>&lt;p>&lt;em>Based on the VHDL 2017 Standard Draft&lt;/em>&lt;/p>
&lt;p>&lt;em>This document is copyrighted by the IEEE. It is made available for a wide variety of both public and private uses.&lt;/em>
&lt;em>These include both use, by reference, in laws and regulations, and use in private self-regulation, standardization, and the promotion of engineering practices and methods. By making this document available for use and adoption by public authorities and private users, the IEEE does not waive any rights in copyright to this document.&lt;/em>&lt;/p></description></item><item><title>Property Specification Language (PSL) Grammar</title><link>https://www.sigasi.com/tech/psl.ebnf/</link><pubDate>Thu, 02 Feb 2017 00:00:00 +0000</pubDate><guid>https://www.sigasi.com/tech/psl.ebnf/</guid><description>&lt;p>&lt;em>IEEE Std 1850-2010&lt;/em>&lt;/p>
&lt;p>&lt;em>This document is copyrighted by the IEEE. It is made available for a wide variety of both public and private uses. These include both use, by reference, in laws and regulations, and use in private self-regulation, standardization, and the promotion of engineering practices and methods. By making this document available for use and adoption by public authorities and private users, the IEEE does not waive any rights in copyright to this document.&lt;/em>&lt;/p></description></item><item><title>VHDL file encoding</title><link>https://www.sigasi.com/tech/vhdl-file-encoding/</link><pubDate>Wed, 25 Jan 2017 00:00:00 +0000</pubDate><guid>https://www.sigasi.com/tech/vhdl-file-encoding/</guid><description>&lt;h2 
 class="uk-heading-large" 
 id="introduction">
 &lt;a
 href="https://www.sigasi.com/tech/vhdl-file-encoding/#introduction"
 class="uk-link-reset"
 aria-label="Link to this section: Introduction">
 Introduction
 &lt;/a>
&lt;/h2>
&lt;p>I have been using VHDL for almost two decades and never wondered how I should save my VHDL files. Because of my software engineering background, I always use &lt;strong>UTF-8&lt;/strong> as the &lt;strong>default character or file encoding&lt;/strong> and never had any issues with it.&lt;/p></description></item><item><title>SystemVerilog IEEE 1800-2012 Grammar</title><link>https://www.sigasi.com/tech/systemverilog.ebnf/</link><pubDate>Fri, 11 Nov 2016 00:00:00 +0000</pubDate><guid>https://www.sigasi.com/tech/systemverilog.ebnf/</guid><description>&lt;p>&lt;em>Copyright&lt;/em>
&lt;em>The IEEE Standards publication(s) (&amp;ldquo;Document&amp;rdquo;) is approved by the IEEE Standards Association (&amp;ldquo;IEEE-SA&amp;rdquo;) Standards Board and is published in accordance with established IEEE-SA Standards Board bylaws and operations procedures.&lt;/em>&lt;/p></description></item><item><title>VHDL IEEE 1076-2008 Grammar</title><link>https://www.sigasi.com/tech/vhdl2008.ebnf/</link><pubDate>Thu, 22 Sep 2016 00:00:00 +0000</pubDate><guid>https://www.sigasi.com/tech/vhdl2008.ebnf/</guid><description>&lt;p>&lt;em>This document is copyrighted by the IEEE. It is made available for a wide variety of both public and private uses. These include both use, by reference, in laws and regulations, and use in private self-regulation, standardization, and the promotion of engineering practices and methods. By making this document available for use and adoption by public authorities and private users, the IEEE does not waive any rights in copyright to this document.&lt;/em>&lt;/p></description></item><item><title>VHDL Assert and Report</title><link>https://www.sigasi.com/tech/vhdl-assert-and-report/</link><pubDate>Mon, 02 Feb 2015 00:00:00 +0000</pubDate><guid>https://www.sigasi.com/tech/vhdl-assert-and-report/</guid><description>&lt;p>How can you check invariants in VHDL? How can you write information to the console? That is what the VHDL assert statement and report statement are for!&lt;/p>
&lt;p>The basic syntax of a report statements in VHDL is:&lt;/p></description></item><item><title>Name shadowing in VHDL</title><link>https://www.sigasi.com/tech/name-shadowing-vhdl/</link><pubDate>Mon, 26 Jan 2015 00:00:00 +0000</pubDate><guid>https://www.sigasi.com/tech/name-shadowing-vhdl/</guid><description>&lt;p>Like many other languages, it is possible in VHDL to perform &lt;em>name scoping&lt;/em>. This happens if you declare a new object in a nested scope that reuses the name of an object that was already declared. This is not an error in VHDL, but it can be confusing and it can cause errors. In general, I would advice against name scoping unless you have a very good reason. Even then, it would be best if you document (comment) your code so that everybody understands what is going on.&lt;/p></description></item><item><title>Use environment variables to set up External Compilers</title><link>https://www.sigasi.com/tech/environment-variables-toolchains/</link><pubDate>Fri, 24 Oct 2014 00:00:00 +0000</pubDate><guid>https://www.sigasi.com/tech/environment-variables-toolchains/</guid><description>&lt;p>Some teams have a setup where environment variables are automatically set by scripts, to reflect the paths of the correct version of simulators and synthesis tools. In cases like this, it is better to configure Sigasi External Compilers to use these environment variables instead of absolute paths to find the installation path of external compilers.&lt;/p></description></item><item><title>To "to" or to "downto"... Ranges in VHDL</title><link>https://www.sigasi.com/tech/to-downto-ranges-vhdl/</link><pubDate>Fri, 05 Sep 2014 00:00:00 +0000</pubDate><guid>https://www.sigasi.com/tech/to-downto-ranges-vhdl/</guid><description>&lt;p>Most VHDL designers write &amp;lsquo;something &lt;code>downto&lt;/code> something&amp;rsquo; in their code all the time. But what does this &lt;code>downto&lt;/code> actually mean? And what is the difference with &lt;code>to&lt;/code>?&lt;/p>
&lt;p>The keywords &lt;code>downto&lt;/code> and &lt;code>to&lt;/code> specify the &lt;em>direction&lt;/em> of &lt;em>ranges&lt;/em> in VHDL. &lt;code>downto&lt;/code> is descending (going down); &lt;code>to&lt;/code> is ascending (going up).&lt;/p></description></item><item><title>How much time is spent on writing documentation versus developing RTL code?</title><link>https://www.sigasi.com/tech/how-much-time-spent-writing-documentation-versus-developing-rtl-code/</link><pubDate>Wed, 27 Nov 2013 00:00:00 +0000</pubDate><guid>https://www.sigasi.com/tech/how-much-time-spent-writing-documentation-versus-developing-rtl-code/</guid><description>&lt;h2 
 class="uk-heading-large" 
 id="estimation-of-time-for-technical-documentation-and-software-development">
 &lt;a
 href="https://www.sigasi.com/tech/how-much-time-spent-writing-documentation-versus-developing-rtl-code/#estimation-of-time-for-technical-documentation-and-software-development"
 class="uk-link-reset"
 aria-label="Link to this section: Estimation of time for technical documentation and software development">
 Estimation of time for technical documentation and software development
 &lt;/a>
&lt;/h2>
&lt;p>Estimating software development schedules is a skill. The programmer who is going to do the work can figure out what steps they will need to take to implement that feature. And only the programmer can estimate how long each one will take. The nature of software development is that things which seem simple are often surprisingly complicated when we think about all the details. Attempting to estimate a feature before we&amp;rsquo;ve figured out how the feature is going to work, in detail, can&amp;rsquo;t possibly work, even if we multiply our best guess by three, because our &amp;ldquo;best guess&amp;rdquo; is based on very little in the way of facts.
One of the most painful questions that developers are faced with is estimation and justification of time required for technical documentation development. Documentation developers need a methodology to provide a more or less precise and, most importantly, well-grounded estimation of documentation development time, already at the problem definition stage.&lt;/p></description></item><item><title>Why you need good documentation for your VHDL and Verilog code</title><link>https://www.sigasi.com/tech/why-you-need-good-documentation-your-vhdl-and-verilog-code/</link><pubDate>Sun, 10 Nov 2013 00:00:00 +0000</pubDate><guid>https://www.sigasi.com/tech/why-you-need-good-documentation-your-vhdl-and-verilog-code/</guid><description>&lt;p>&lt;em>In this blog series, guest blogger Smrita talks about the need for
documentation for complex RTL designs.&lt;/em>&lt;/p>
&lt;p>In engineering, &lt;a
 style="white-space: nowrap;"
 href="https://en.wikipedia.org/wiki/Technical_documentation"
 
 target="_blank"
 
 >technical documentation&amp;nbsp;&lt;span uk-icon="icon: sign-out; ratio: 0.7">&lt;/span>&lt;/a>
refers to any type of documentation that describes handling,
functionality and architecture of a technical product or a product under
development or use. The intended recipient for product technical
documentation is both the (proficient) end user as well as the
administrator, service or maintenance technician. In contrast to a mere
&amp;ldquo;cookbook&amp;rdquo; manual, technical documentation aims at providing enough
information for a user to understand inner and outer dependencies of the
product at hand. The technical documentation is intended to help the
maintainers of the system (the people who need to keep the system
running smoothly, fix problems, etc.) The maintainers are usually
technical people, who need to know &lt;a
 style="white-space: nowrap;"
 href="https://www.igcseict.info/theory/8/docs/index.html"
 
 target="_blank"
 
 >exactly how the system
works&amp;nbsp;&lt;span uk-icon="icon: sign-out; ratio: 0.7">&lt;/span>&lt;/a>.&lt;/p></description></item><item><title>"Use" and "Library" in VHDL</title><link>https://www.sigasi.com/tech/use-and-library-vhdl/</link><pubDate>Mon, 09 Sep 2013 00:00:00 +0000</pubDate><guid>https://www.sigasi.com/tech/use-and-library-vhdl/</guid><description>&lt;p>Beginning VHDL engineers, and advanced engineers too, can get confused about the exact scope of a &lt;em>use clause&lt;/em> and a &lt;em>library clause&lt;/em> in VHDL. They usually show up at the top of a file, which would make you think that they are visible in the entire file. Unfortunately, the truth is a bit more complex.&lt;/p></description></item><item><title>Recovering VHDL Parser</title><link>https://www.sigasi.com/tech/recovering-vhdl-parser-0/</link><pubDate>Fri, 21 Sep 2012 00:00:00 +0000</pubDate><guid>https://www.sigasi.com/tech/recovering-vhdl-parser-0/</guid><description>&lt;p>It is useful to analyze code that is only partly finished, code that still has errors in it. Analyzing broken code helps people understand, improve and complete the code. In order to perform such an analysis, you need a parser that recovers after it encounters an error. In the world of hardware design, hardly any recovering parsers exist and engineers are left out in the cold. All but a few EDA tools fail miserably at parsing incorrect VHDL code.&lt;/p></description></item><item><title>Three mistakes, three error markers</title><link>https://www.sigasi.com/tech/three-mistakes-three-error-markers/</link><pubDate>Fri, 21 Sep 2012 00:00:00 +0000</pubDate><guid>https://www.sigasi.com/tech/three-mistakes-three-error-markers/</guid><description>&lt;p>Ideally, if you make three mistakes in VHDL, you want to see three error markers. Here is a small example.&lt;/p>
&lt;p>&lt;img src="https://www.sigasi.com/img/tech/recovering-vhdl-parser-3errors.png" alt="Sigasi shows three error markers for these three errors">&lt;/p>
&lt;p>A traditional VHDL compiler gives only one error message. You will have to fix this error and start the compiler again before you can find the next error. This takes extra time and you need all of your time you to work on complex design problems that you are dealing with.&lt;/p></description></item><item><title>Dead code</title><link>https://www.sigasi.com/tech/dead-code/</link><pubDate>Wed, 05 Sep 2012 00:00:00 +0000</pubDate><guid>https://www.sigasi.com/tech/dead-code/</guid><description>&lt;p>A hardware design project will often contain code that does nothing. Still, there might be a good reason to have this code. Here are some guidelines to determine if this dead code is useful or not:&lt;/p></description></item><item><title>Deprecated IEEE Libraries</title><link>https://www.sigasi.com/tech/deprecated-ieee-libraries/</link><pubDate>Tue, 15 May 2012 00:00:00 +0000</pubDate><guid>https://www.sigasi.com/tech/deprecated-ieee-libraries/</guid><description>&lt;h1 
 
 id="what-are-deprecated-ieee-libraries">
 &lt;a
 href="https://www.sigasi.com/tech/deprecated-ieee-libraries/#what-are-deprecated-ieee-libraries"
 class="uk-link-reset"
 aria-label="Link to this section: What are deprecated IEEE libraries?">
 What are deprecated IEEE libraries?
 &lt;/a>
&lt;/h1>
&lt;p>Don&amp;rsquo;t use &lt;code>ieee.std_logic_unsigned&lt;/code> and similar libraries because they are not standardized.
Instead, &lt;strong>&lt;code>use ieee.numeric_std.all&lt;/code>&lt;/strong>.&lt;/p></description></item><item><title>Clock edge detection</title><link>https://www.sigasi.com/tech/clock-edge-detection/</link><pubDate>Mon, 09 Apr 2012 00:00:00 +0000</pubDate><guid>https://www.sigasi.com/tech/clock-edge-detection/</guid><description>&lt;p>There are two largely accepted ways to detect clock edges, and many style books prescribe or prefer one over the other.
Let&amp;rsquo;s investigate.&lt;/p>
&lt;p>This article deals with edge detection in &lt;em>synthesizable&lt;/em> code, not with behavioral code as found in test benches and behavioral models.&lt;/p></description></item><item><title>Advanced VHDL Configurations: Tying a component to an unrelated entity</title><link>https://www.sigasi.com/tech/advanced-vhdl-configurations-tying-component-unrelated-entity/</link><pubDate>Thu, 22 Mar 2012 00:00:00 +0000</pubDate><guid>https://www.sigasi.com/tech/advanced-vhdl-configurations-tying-component-unrelated-entity/</guid><description>&lt;p>Usually, people use VHDL configurations to select a given architecture for their component, or even to set generics that were not set in the instantiation. But you can also do more advanced stuff with configurations: you can tie a component to a completely unrelated entity. You can even re-wire the signals!&lt;/p></description></item><item><title>The scope of VHDL use clauses and VHDL library clauses</title><link>https://www.sigasi.com/tech/scope-vhdl-use-clauses-and-vhdl-library-clauses/</link><pubDate>Wed, 14 Dec 2011 00:00:00 +0000</pubDate><guid>https://www.sigasi.com/tech/scope-vhdl-use-clauses-and-vhdl-library-clauses/</guid><description>&lt;p>When I first learned VHDL, I bumped in to quite a few language quirks. Here is one thing that I learned the hard way: the scope of VHDL use clauses.&lt;/p></description></item><item><title>VHDL case statements can do without the "others"</title><link>https://www.sigasi.com/tech/vhdl-case-statements-can-do-without-others/</link><pubDate>Mon, 24 Oct 2011 00:00:00 +0000</pubDate><guid>https://www.sigasi.com/tech/vhdl-case-statements-can-do-without-others/</guid><description>&lt;p>I was talking to some engineering students the other day, as they were doing a VHDL lab. I noticed a VHDL case statement for state machine with named states (enumerated data type). All states were handled in their VHDL case statement, and still they put an &lt;code>others&lt;/code> section in their code. I had a hard time explaining that this clause was useless. The students mumbled something about their professor eating them alive if they&amp;rsquo;d forget the &lt;code>others&lt;/code> and problems with uninitialized stated and high-impedance state. As you might know, these concepts are related to the &lt;code>std_ulogic&lt;/code> and &lt;code>std_logic&lt;/code> type, but not to enumerated types.&lt;/p></description></item><item><title>Package and Package Body: in the same file or in separate files?</title><link>https://www.sigasi.com/tech/package-and-package-body-same-file-or-separate-files/</link><pubDate>Fri, 22 Jul 2011 00:00:00 +0000</pubDate><guid>https://www.sigasi.com/tech/package-and-package-body-same-file-or-separate-files/</guid><description>&lt;p>Some coding guidelines require that a package and its body should be in the same file. Other guidelines require two separate files, often with rules about the filenames. What is the reason for this?&lt;/p></description></item><item><title>List of known VHDL metacomment pragma's</title><link>https://www.sigasi.com/tech/list-known-vhdl-metacomment-pragmas/</link><pubDate>Thu, 28 Apr 2011 00:00:00 +0000</pubDate><guid>https://www.sigasi.com/tech/list-known-vhdl-metacomment-pragmas/</guid><description>&lt;p>Following up on a previous post, &lt;a href="https://www.sigasi.com/tech/vhdl-pragmas/">VHDL Pragmas&lt;/a>, this is an incomplete list of supported VHDL pragmas, organized by vendor.&lt;/p>
&lt;p>As an introduction, most pragmas have the following structure:&lt;/p>
&lt;div class="code-block-container">
 &lt;div class="code-block-header">
 &lt;span class="code-block-lang">VHDL&lt;/span>
 &lt;button class="code-block-copy" aria-label="Copy code to clipboard">
 &lt;i data-lucide="copy" style="width: 1rem; height: 1rem;">&lt;/i>
 &lt;/button>
 &lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-vhdl" data-lang="vhdl">&lt;span class="line">&lt;span class="cl">&lt;span class="c1">-- trigger directive&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/div>
&lt;p>where &lt;code>trigger&lt;/code> is a keyword such as &lt;code>pragma&lt;/code> or &lt;code>synthesis&lt;/code>, and the &lt;code>directive&lt;/code> is a special compiler directive.
Many tools support several triggers, each with identical meaning.&lt;/p></description></item><item><title>VHDL Pragmas</title><link>https://www.sigasi.com/tech/vhdl-pragmas/</link><pubDate>Tue, 05 Apr 2011 00:00:00 +0000</pubDate><guid>https://www.sigasi.com/tech/vhdl-pragmas/</guid><description>&lt;p>In VHDL, some tools support so-called &lt;em>compiler directives&lt;/em>. A compiler directive, or pragma is additional information that you give to the VHDL compiler (the simulator or synthesis tool). While your directive has no influence on the VHDL code itself, it changes the behavior. The IEEE, in their VHDL RTL standard, defines a pragma as &lt;em>A generic term used to deﬁne a construct with no predeﬁned language semantics that inﬂuences how a synthesis tool will synthesize VHDL code into an equivalent hardware representation.&lt;/em>&lt;/p></description></item></channel></rss>