Next Article in Journal
From Signal to Semantics: The Multimodal Haptic Informatics Index for Triangulating Haptic Intent at the Edge
Next Article in Special Issue
Attention Distribution-Aware Softmax for NPU-Accelerated On-Device Inference of LLMs: An Edge-Oriented Approximation Design
Previous Article in Journal
Target-Aware Bilingual Stance Detection in Social Media Using Transformer Architecture
Previous Article in Special Issue
Scalable AI + DSP Compute Frameworks Using AMD Xilinx RF-SoC ZCU/VCU Platforms for Wireless Testbeds for Scientific, Commercial, Space, and Defense Applications
 
 
Font Type:
Arial Georgia Verdana
Font Size:
Aa Aa Aa
Line Spacing:
Column Width:
Background:
Article

Optimizing Digital Systems Implemented in FPGA Through Effective Description of Finite State Machines

Faculty of Computer Science, Bialystok University of Technology, 15-351 Bialystok, Poland
*
Author to whom correspondence should be addressed.
Electronics 2026, 15(4), 831; https://doi.org/10.3390/electronics15040831
Submission received: 12 December 2025 / Revised: 21 January 2026 / Accepted: 3 February 2026 / Published: 14 February 2026
(This article belongs to the Special Issue Emerging Applications of FPGAs and Reconfigurable Computing System)

Abstract

In digital systems, finite state machines (FSMs) play a crucial role as controllers, control units, and independent sequential circuits. To efficiently implement these FSMs on advanced hardware platforms such as field-programmable gate arrays (FPGAs), it is essential to represent each FSM in a hardware description language (HDL). This article introduces innovative methods for describing FSMs in Verilog (SystemVerilog) HDL to significantly optimize both the area and performance of synthesized FSM circuits. The presented approach selects the optimal default values for the transition and output functions of an FSM and uses blocking assignment statements to assign these values to variables. This method provides an additional level of optimization independent of the techniques used to improve the FSM during the earlier design stages. Experimental studies on FSM benchmarks show that using this approach with the Quartus design tool reduces the average area of FSMs by approximately 2, and in some cases by up to 6.2. In addition, the average performance of FSMs improves by approximately 2 times and, in some examples, by more than 4 times.

1. Introduction

Every digital system includes a large number of controllers and control units, implemented as finite state machines (FSMs), that control individual devices, parts of the digital system, and the digital system as a whole. The development of FSMs remains one of the most critical tasks in the design of digital systems, since FSMs are not reused from project to project and are usually designed from scratch for each new digital system project. The characteristics of the entire system largely depend on the parameters of FSMs (area, performance, power consumption). Therefore, optimizing FSM parameters is a critical task in the design of digital systems [1].
There are several well-known strategies for optimizing FSMs that can be implemented at various stages of the FSM design process. These strategies include minimizing the number of states [2], state encoding [3,4,5], selecting the appropriate structural model [6], determining the target device for the FSM implementation, and choosing the synthesis method [7,8,9,10,11,12,13]. Additionally, minimizing the logic of the FSM [14] is another crucial factor. However, researchers often overlook the significance of the coding stage describing the FSM’s design using hardware description languages (HDLs) because they consider it too simple or obvious. Currently, the three most commonly used HDLs in practice are Verilog, SystemVerilog, and VHDL.
This paper examines the various styles of describing FSMs in Verilog, aiming to improve both the area (implementation cost) and performance (speed). These concepts can also be easily applied to describe FSMs in SystemVerilog language.
The proposed approach is based on a feature of the blocking assignment statement (‘=’) in the Verilog (SystemVerilog) language. If a blocking assignment statement is encountered in a ‘begin-end’ block of sequentially executed statements, the execution of the following statements is blocked until the assignment procedure is completed. This allows us, instead of using a ‘default’ construct in a ‘case’ statement, to assign a default value to a variable using a blocking assignment statement before the ‘case’ statement. In the description of FSMs, default values can be assigned to the variable of the next state and the output vector, which are most often encountered at the transitions of an FSM.
A key feature of the proposed approach is its independence from the FSM optimization methods used in previous design stages, such as state minimization, state encoding, synthesis methods, and logic minimization. This approach offers an additional way to optimize the synthesized circuit during the stage of describing FSMs in HDL. Currently, FSMs are implemented on various hardware platforms, including field-programmable gate arrays (FPGAs), system-on-chips (SoCs), and application-specific integrated circuits (ASICs). Notably, this approach is independent of the type of electronic device in which the FSM is implemented, whether an FPGA, SoC, or ASIC. Significantly, its effectiveness in reducing area and improving FSM performance is independent of the state-encoding method used.
The primary goal of this work is to develop and analyze different styles for describing FSMs in Verilog to reduce area and improve performance.
The main contributions of this work are as follows:
  • The algorithms for creating code in Verilog and encoding states to optimize the area and performance of FSMs.
  • Three styles of describing FSMs in Verilog: when the default value of the next state (dstate) is assigned, when the default value of the output vector (dout) is assigned, and when the default values of both the next state and the output vector (dstate_out) are assigned simultaneously.
  • Evaluations of the effectiveness of the proposed styles of describing FSMs, determined based on the parameters of FSMs.
  • Research in Quartus and Vivado design tools on the efficiency of the considered styles of FSM description using FSM benchmarks when encoding states with one-hot and binary codes.
  • Recommendations for the practical use of the proposed styles of describing FSMs.
The paper is organized as follows: Section 2 provides an analysis of related works. Section 3 focuses on proposed styles for describing FSMs and compares them with the traditional approach. Section 4 presents experimental results and their analysis. Finally, Section 5 summarizes the findings and offers recommendations for the practical application of the discussed styles for describing FSMs.

2. Related Works

This section reviews the various styles for describing FSMs in Verilog, SystemVerilog, and VHDL HDLs.
In [15], the features for describing FSMs in the Verilog and VHDL languages, provided by Synopsys design tools, are considered. The primary style involves three processes: the description of FSM memory (state register), the transition functions, and the output functions. It outlines the general principles for representing FSMs in HDLs and proposes two structural models: one with a single combinational circuit and another with two combinational circuits. Various state-encoding methods are discussed, including binary, one-hot, and almost one-hot encodings. The paper also explores the use of ‘case’ and ‘if’ statements to describe transition functions across different state encoding methods, as well as considerations for asynchronous and unknown inputs, register outputs, and default output values. Furthermore, it addresses the issues of FSM recovery after errors and the exit of FSMs from illegal states.
In [16], implicit styles for describing combinational circuits and FSMs in Verilog are discussed. Five classes of FSMs are proposed, where class0 is a conventional combinational circuit, class1 is a signal delay of one clock cycle, class2 is an FSM that has no inputs and cyclically passes through a set of states, class3 is a Moore FSM, and class4 is a Mealy FSM.
The standardized FSM coding style in Verilog, used in Cisco design tools, is discussed in [17]. In this style, FSM transitions are described using a ‘case’ statement, and states are declared as local parameters. Transitions within the FSM are represented by two variables: current and next. The work also introduces the use of cisco_fsm compiler directives. This standardized FSM style facilitates the analysis of state reachability, verification of coverage for all FSM transitions, identification of final states (from which there are no exits), and the construction of a state transition graph (STG).
In [18], two styles for describing FSMs with one and two processes are analyzed, highlighting the advantages and disadvantages of each approach. The work outlines potential methods for state encoding and discusses the use of the Synopsys FSM tool to encode states using binary, Gray, and one-hot codes. Additionally, a coding style is proposed for synthesizing register outputs of a Mealy FSM. The work by [18] recommends against using the full_case and parallel_case attributes in FSM descriptions, as their use can lead to discrepancies between synthesis and modeling results. The FSM encoding styles discussed in [18] were further refined in [19], where it is proposed to use FSM register outputs to prevent failures during state transitions. Two methods are proposed for this purpose. The first method follows the style from [18] for the register outputs of a Mealy FSM, while the second method uses the output values of a Moore FSM to encode states.
Reference [20] considers new possibilities for describing FSMs provided by the SystemVerilog language. These features include the enumerated type ‘enum’ for declaring states, the use of ‘always_comb’ and ‘always_ff’ procedures, and implicit port connections, among others.
In [21], the styles for describing Moore FSMs in VHDL with combinational and register outputs, and their impact on the area and performance of FSMs, are investigated. Reference [22] explores different methods of describing FSMs in VHDL using one or two processes. Additionally, it discusses state encoding techniques, which include binary, one-hot, two-hot, and Gray codes. Moreover, a comparison is made between VHDL and Verilog languages in describing FSMs.
In [23], a converter for transforming FSM representations from the KIS2 format [24] into a Verilog language description is detailed, along with a method for verifying FSMs and constructing an STG.
In [25], seven styles for describing combinational circuits for FSMs in Verilog were presented, utilizing both ‘if’ and ‘case’ statements. These styles are labeled as IF_1, IF_2, IF_3, IF_4, CASE_1, CASE_2, and CASE_3. From this selection, the two most effective styles—IF_4 and CASE_3—were empirically chosen to optimize the area and performance of FSMs. Based on these two styles, six FSM coding styles were developed: M_1, M_2, M_3, M_4, M_5, and M_6.
In [26], Verilog-based description styles for fault-tolerant FSMs are discussed, which detect and eliminate faults in the FSM’s state register, input, and output vectors. Two styles, safe0 and safe1, are proposed for describing fault-tolerant FSMs in Verilog. These approaches also neutralize the design errors that may arise when the FSM’s transitions and outputs are not defined for all possible values of the input variables.
In [27], Verilog description styles are proposed for structural models of reliable FSMs that enable the detection of faults in input and output vectors, in present-state and next-state codes, and in invalid state transitions.
The review shows that there are currently no styles for describing FSMs that specifically focus on minimizing area and improving performance, except for reference [25]. In contrast to [25], this work introduces new styles for describing FSMs in HDLs that aim to reduce area and improve the performance of FSM circuits. These new styles are based on different principles, including the default assignment of both the next state value and the output vector value.

3. Styles of Describing FSMs for Optimizing Area and Performance

This section discusses the proposed styles for describing FSMs in Verilog, compared to the traditional three-process description.

3.1. Traditional Description of FSMs

Let X = {x0, …, xL−1} be the set of input variables of the FSM, Y = {y0, …, yN−1} be the set of output variables of the FSM, and S = {s0, …, sM−1} be the set of states of the FSM, where s0 is the initial state of the FSM.
The generalized structure of an FSM is shown in Figure 1, where register Rs represents the memory of the FSM (the state register), which stores the code state of the present (current) state of the FSM. The combinational circuit λ determines the code next of the next state based on the values of the input variables of the set X and the code state of the present state. The combinational circuit δ calculates the values of the output variables of the set Y based on the code state of the present state and the values of the input variables of the set X (only for FSMs of Mealy type).
As an example, consider the FSM, whose STG is shown in Figure 2. Our FSM is a Mealy FSM (the most common case). It has five states s0, …, s4, three input variables x0, …, x2, and three output variables y0, …, y2. The vertices of the graph in Figure 2 denote the states of the FSM, and the arcs of the graph correspond to the transitions between the FSM states. Next to each arc, the input vector that initiates this transition is written, and after a slash, the output vector that is formed at this transition is written. A hyphen (‘-’) in an input or output vector indicates a don’t care value.
The specification for FSM synthesis is often described as a transition list, as shown in Table 1, where ps (present state) is the initial state of the transition, ns (next state) is the final state of the transition, X(ps, ns) is the input vector that initiates this transition, and Y(ps, ns) is the output vector that is formed at this transition.
Traditionally, an FSM in Verilog is described using three separate processes (state register, transition functions, and output functions), as shown in Listing 1.
Listing 1. A traditional description of the FSM from our example.
module Mealy_3proc (  // declaration of ports
 input clk, reset,      // clock and reset signals
 input [2:0] x,     // input vector
 output reg [2:0] y);   // output vector
 reg [2:0] state, next;  // state variables
 localparam [2:0] s0 = 0, s1 = 1, s2 = 2, s3 = 3, s4 = 4; // states
 always @(posedge clk, negedge reset)   // state register
  if (~reset)  state <= s0;
  else      state <= next;
 always @(*)    // description of transition functions
  case (state) 
  s0: casex (x) 
        3′b??0:  next = s1;
        3′b??1:  next = s3;
    endcase
  s1: casex (x) 
        3′b?0?:  next = s2;
        3′b?1?:  next = s3;
    endcase
  s2: casex (x) 
        3′b0??:  next = s4;
        3′b1??:  next = s3;
    endcase
  s3: casex (x) 
        3′b000:  next = s3;
        3′b111:  next = s0;
    endcase
  s4: casex (x) 
        3′b?00:  next = s3;
        3′b?11:  next = s0;
    endcase
  endcase
 always @(*)    // description of output functions
  case (state) 
  s0: casex (x) 
        3′b??0:  y = 3′b001;
        3′b??1:  y = 3′b111;
    endcase
  s1: casex (x) 
        3′b?0?:  y = 3′b010;
        3′b?1?:  y = 3′b111;
    endcase
  s2: casex (x) 
        3′b0??:  y = 3′b011;
        3′b1??:  y = 3′b111;
    endcase
  s3: casex (x) 
        3′b000:  y = 3′b111;
        3′b111:  y = 3′b101;
    endcase
  s4: casex (x) 
        3′b?00:  y = 3′b111;
        3′b?11:  y = 3′b100;
    endcase
  endcase
endmodule
In Listing 1, the input and output functions are described using ‘case’ statements, which are arranged on two levels. First-level ‘case’ statements check the variable state (the code of the present state) and, depending on its value, determine the necessary actions in each state. The second-level ‘case’ statements check the input vector x and, depending on its value, calculate the value of the variable next (the code of the next state) in the second process and the value of the variable y (the value of the output vector) in the third process.
Considering that ‘case’ and ‘if’ statements are interchangeable in Verilog, an ‘if-else-if’ chain can be used instead of a ‘case’ statement throughout the proposed approach. In this article, we use the ‘case’ statement for clarity.

3.2. Creating Code in Verilog to Optimize an FSM Circuit

The proposed approach is based on the following assumptions:
  • Reducing the number of transitions in the FSM description leads to a decrease in the area and an increase in the performance of the synthesized FSM circuit;
  • Specifying default values for the variables next and y reduces the number of transitions in the FSM description.
In the proposed approach, combinational circuits λ and δ are described as ‘begin-end’ blocks of the ‘always’ procedure. In the ‘begin-end’ block, the variables next and y are first assigned default values using a blocking assignment operator (‘=’), followed by a ‘case’ statement describing the logic of combinational circuits λ and δ. The descriptions of combinational circuits λ and δ do not include assignments to the variables next and y of values that were previously defined as default values.
The default value for the variable next is selected as the state of the FSM in which the largest number of transitions ends. If there are several such states, the state whose code contains the largest number of ones is selected. The default value for the variable y is selected as the output vector that is most frequently formed at the transitions of the FSM. If there are several such output vectors, the vector that contains the largest number of ones is selected.
Let the FSM be specified by the transition list, as shown in Table 1. Then, the creation of the Verilog code for optimizing the parameters (area and performance) of the FSM can be represented as Algorithm 1.
Algorithm 1. Creating FSM code in Verilog to optimize the synthesized circuit
  • If the state codes are not defined, perform Algorithm 2 for state encoding to optimize the parameters of the FSM.
  • Find the state smax that occurs most frequently in the ns column of the transition list. If there are several such states, select the state with the largest number of ones in the state code.
  • Find the output vector ymax that occurs most often in the Y(ps, ns) column of the transition list. If there are several such output vectors, select the vector that contains the largest number of ones.
  • Describe the ports, state variables, state codes, and state register of the FSM in the traditional way.
  • Describe the transition functions (combinational circuit λ) of the FSM using the ‘begin-end’ block of the ‘always’ procedure. At the beginning of the ‘begin-end’ block, use the blocking assignment operator (‘=’) to assign the value smax to the variable next. This is followed by ‘case’ statements describing the logic of the transition functions, in which the ‘case’ statements do not assign the state smax to the variable next.
  • Similarly, describe the output functions (combinational circuit δ), where assign the output vector ymax to the variable y at the beginning of the ‘begin-end’ block, and the ‘case’ statements do not assign the output vector ymax to the variable y.
  • End.
Algorithm 2 for encoding states to optimize the FSM parameters is based on the assumption that assigning the code with the minimum number of ones to the state that occurs most frequently in the ns column of the transition list helps to reduce the area and increase the performance of the FSM.
Algorithm 2. Encoding states to optimize FSM parameters
  • Define the set K of binary codes for the FSM states, where K = 2 R ,   R = log 2 M ,   A is the cardinality of set A, and ⌈B⌉ is the smallest integer greater than or equal to B.
  • Assign the initial state s0 the zero code k0: s0k0; assume S:= S\{s0}, K:= K\{k0}.
while (|S|!= 0) do
 3.
In the set S, find the state si that occurs most frequently in the column ns of the transition list.
 4.
In the set K, find the code kj with the minimum number of ones.
 5.
Assign the code kj to the state si: sikj; assume S:= S\{si}, K:= K\{kj}.
end while.
Let us consider applying Algorithm 1 to describe the FSM from our example. Suppose that the state codes are not specified, so Algorithm 2 is performed. For our example, M = 5, R = 3, and |K| = 8. We assign the zero code ‘000’ to the initial state s0. State s3 in column ns of Table 1 occurs most frequently, so we assign state s3 the code ‘001’ with the smallest number of ones. States s1, s2, and s4 in column ns of Table 1 occur only once, so we assign them the codes ‘010’, ‘100’, and ‘011’, sequentially.
In step 2 of Algorithm 1, we select state s3 as the smax state, which occurs most often in column ns of Table 1. Similarly, in step 3 of Algorithm 1, we select vector ‘111’ as the output vector ymax, which occurs most frequently in column Y(ps, ns) of Table 1. Executing steps 4–6 of Algorithm 1 results in the construction of the FSM project code, which is shown in Listing 2.
Listing 2. Description of the FSM for parameter optimization.
module Mealy_3proc (  // declaration of ports
 input clk, reset,    // clock and reset signals
 input [2:0] x,      // input vector
 output reg [2:0] y);    // output vector
 reg [2:0] state, next;  // state variables
 localparam [2:0]
s0 = 3′b000,      // state codes
s1 = 3′b010,
s2 = 3′b100,
s3 = 3′b001,
s4 = 3′b011;  
always @(posedge clk, negedge reset) // state register
  if (~reset)    state <= s0;
  else     state <= next;
 always @(*)  // description of transition functions
 begin
  next = s3;  // default value for the next variable
  case (state) 
  s0: casex (x) 
        3′b??0: next = s1;
   endcase
  s1: casex (x) 
        3′b?0?: next = s2;
   endcase
  s2: casex (x) 
        3′b0??: next = s4;
   endcase
  s3: casex (x) 
        3′b111: next = s0;
   endcase
  s4: casex (x) 
        3′b?11: next = s0;
   endcase
  endcase
 end
always @(*)    // description of output functions
 begin
  y = 3′b111; // default value for the y variable
  case (state) 
  s0: casex (x) 
        3′b??0: y = 3′b001;
   endcase
  s1: casex (x) 
        3′b?0?: y = 3′b010;
   endcase
  s2: casex (x) 
        3′b0??: y = 3′b011;
   endcase
  s3: casex (x) 
        3′b111: y = 3′b101;
   endcase
  s4: casex (x) 
        3′b?11: y = 3′b100;
   endcase
  endcase
 end
endmodule
The description of FSMs, where default values are defined for both the next and y variables (as in Listing 2), is called the dstate_out (default state and output) style. Let us define two more description styles for optimizing FSM parameters: dstate and dout. In the dstate (default state) style, the default value is defined only for the variable next, and in the dout (default output) style, the default value is defined only for the variable y. Thus, we have four styles for describing FSMs: 3proc (Listing 1), dstate, dout, and dstate_out (Listing 2).
The results of implementing the FSM from our example using the Quartus Prime design tool version 24.1 in the Cyclone 10 LP family FPGA for different description styles are shown in Table 2, where A is the number of look-up tables (LUTs) in the FSM circuit (area) and F is the maximum operating frequency (in megahertz) of the FSM (performance).
Table 2 shows that the dstate, dout, and dstate_out styles significantly outperform the traditional 3proc style for describing FSMs in both area and performance. At the same time, the most significant FSM parameter optimization is achieved with the dstate_out style, followed by the dstate and dout styles. Note that the results of both the functional and timing simulations for all FSM description styles are entirely identical.
The optimization of combinational circuits λ and δ in the dstate_out style is explained by the fact that the synthesizer of a design tool only generates the logic that is explicitly defined in ‘case’ statements, since the default value has already been described earlier using the blocking assignment statement (‘=’) in the corresponding ‘begin-end’ block before the first-level ‘case’ statement. As a result, the logic of combinational circuits λ and δ is simplified, the area is reduced, and the performance of FSMs is increased.
Applying the proposed approach results in the generation of project code in which the assignment of values to the variables next and y in second-level ‘case’ statements is not defined for all possible combinations of input variables (such ‘case’ statements are marked as incomplete by the synthesizer). The traditional solution to this problem is for the synthesizer to automatically insert latches into the project circuit to save the previous values of the variables next and y. However, when using the Quartus Synthesizer, assigning default values to the variables next and y using a blocking assignment statement before the first-level ‘case’ statements allows us to avoid introducing latches into the FSM circuit.
A significant difference between the proposed approach and the known methods for describing FSMs and recommendations from developers of design tool synthesizers is that the default values for the variables next and y are not assigned using ‘default’ (for ‘case’ statements) or ‘else’ (for ‘if’ statements) constructs, but rather by using a blocking assignment statement in a ‘begin-end’ block before the first-level ‘case’ statement. Reference [28] also points out the possibility of assigning default values before ‘case’ and ‘if’ statements. However, reference [28] does not aim to optimize the FSM circuit; the initial or undefined state is used as the default value for the variable next, and the zero vector is used for the variable y. Of course, the proposed approach depends on the synthesizer of a design tool.
One disadvantage of the proposed approach is that the synthesizer generates messages about incomplete ‘case’ statements that do not affect the synthesis or simulation results. In addition, in the case of incomplete ‘case’ statements, the Vivado Synthesizer introduces latches to hold the values of the next and y variables.
The proposed approach has proven highly effective for describing FSMs in SystemVerilog. It can be assumed that the strategy under consideration will also be effective when using VHDL. However, the latter assumption requires further research.

4. Experimental Results

The FSM description styles—3proc, dstate, dout, and dstate_out—were evaluated using FSM benchmarks from the Microelectronics Center of North Carolina (MCNC) [29]. The FSMs were implemented on the Cyclone 10 LP FPGA family using the Quartus design tool, version 24.1. The FSM area was measured by counting the number of look-up tables (LUTs) used in the FSM circuit, while the maximum operating frequency assessed performance. The states of the FSMs were encoded using one-hot and binary codes. All parameters of FSMs are given after the complete implementation of the FSM in the FPGA, i.e., after synthesis, placement, and routing.

4.1. FSM Parameters and Efficiency Estimates of the Proposed Description Styles

Table 3 presents the parameters of the studied FSM benchmarks, where L is the number of inputs, N is the number of outputs, T is the number of transitions between states, M is the number of states, Ts is the maximum number of transitions to the same state, To is the maximum number of transitions that yield the same output vector, Av denotes the arithmetic mean value of the parameter, and Max refers to the maximum value of the parameter.
The preliminary effectiveness of the proposed styles for describing FSMs can be represented using the following expressions:
λ s = T s + T T ,
λ o = T o + T T ,
λ s o = T s + T o + T T
where λs is the efficiency estimate of the dstate style, λo is the efficiency estimate of the dout style, and λso is the efficiency estimate of the dstate_out style.
Efficiency here refers to reducing the area and increasing the performance of the FSM. Estimates (1)–(3) reflect how many lines the FSM description is reduced by when using the dstate, dout, and dstate_out styles compared to the traditional description, with a higher estimate for a particular FSM indicating a more efficient use of the corresponding description style for that FSM.
The values of the estimates λs, λo, and λso for the evaluated FSM benchmarks are presented in Table 3. Based on the average values of these estimates, we can propose the following hypotheses:
Hypothesis 1.
The dstate_out style is more effective than the dstate and dout styles for improving FSM parameters.
Hypothesis 2.
The dout style shows a slight advantage over the dstate style in improving the FSM parameters.

4.2. Area of FSMs

The area of the FSMs using the considered styles and encoding states with one-hot code is presented in Table 4, where A3, As, Ao, and Aso are the areas of FSMs (in the number of LUTs) described in styles 3proc, dstate, dout, and dstate_out, respectively; Amin is the minimum area value for a specific example; A3/As, A3/Ao, and A3/Aso, are the ratios of the corresponding parameters; Av and Max denote the previous values; Best is the number of best solutions when using a specific description style; and Unique is the number of unique solutions. Here, a unique solution is understood to be the best solution obtained using a particular style and cannot be achieved using other FSM description styles. In Table 4, Table 5, Table 6, Table 7, Table 8 and Table 9, the best solutions and the parameter values Av and Max are highlighted in bold.
Table 4. Area of FSMs with one-hot encoding.
Table 4. Area of FSMs with one-hot encoding.
FSM A3AsAoAsoAminA3/AsA3/AoA3/Aso
bbsse42274027271.5561.0501.556
beecount42253618181.6801.1672.333
cse1118410372721.3211.0781.542
dk1444444444441.0001.0001.000
dk1665356535351.8571.0001.857
dk51221112111111.9091.0001.909
ex11358212560601.6461.0802.250
ex278397630302.0001.0262.600
ex342264220201.6151.0002.100
ex457154711113.8001.2135.182
ex536223625221.6361.0001.440
ex663586148481.0861.0331.313
ex741264025251.5771.0251.640
lion171115991.5451.1331.889
lion957275621212.1111.0182.714
planet1218712590871.3910.9681.344
planet11218712590871.3910.9681.344
pma14710114589891.4551.0141.652
s11186311863631.8731.0001.873
s2723232323231.0001.0001.000
s20849553232320.8911.5311.531
s14881571661681671570.9460.9350.940
sand2381522391341341.5660.9961.776
sse70466237371.5221.1291.892
styr2121001971051002.1201.0762.019
tbk2951512921121121.9541.0102.634
tma1576916175692.2750.9752.093
train4191117881.7271.1182.375
train1148284622221.7141.0432.182
Av 1.6611.0551.930
Max 3.8001.5315.182
Best311323
Unique15016
Table 4 shows that, using the dstate_out style and one-hot encoding, the average area of FSMs is reduced by a factor of 1.93 (or by 93%); the most significant decrease, by a factor of 5.182, is observed in the ex4 example. When using the dstate style, the maximum area is reduced by a factor of 3.8, also for the ex4 example. For the dout style, the maximum area is reduced by a factor of 1.531, as shown in the s208 example. Note that when using the dstate_out style, 11 of 29 cases (37.9%) show a reduction of more than a factor of 2 in area.
The area of the FSMs using the proposed styles and binary state encoding is presented in Table 5.
Table 5. Area of FSMs with binary encoding.
Table 5. Area of FSMs with binary encoding.
FSM A3AsAoAsoAminA3/AsA3/AoA3/Aso
bbsse60306332302.0000.9521.875
beecount32192815151.6841.1432.133
cse1031089797970.9541.0621.062
dk1443434343431.0001.0001.000
dk1685518551511.6671.0001.667
dk51216131613131.2311.0001.231
ex114711813392921.2461.1051.598
ex292409139392.3001.0112.359
ex344264725251.6920.9361.760
ex462165710103.8751.0886.200
ex534223723221.5450.9191.478
ex671676651511.0601.0761.392
ex745214518182.1431.0002.500
lion11710551.5711.1002.200
lion957165714143.5631.0004.071
planet2249023291902.4890.9662.462
planet12249023291902.4890.9662.462
pma1622721642691620.5960.9880.602
s11689116891911.8461.0001.846
s2710101010101.0001.0001.000
s20814141414141.0001.0001.000
s14882232232301671671.0000.9701.335
sand2571802581641641.4280.9961.567
sse77406930301.9251.1162.567
styr2291082131081082.1201.0752.120
tbk3031973021991971.5381.0031.523
tma1721111821121111.5500.9451.536
train413711551.8571.1822.600
train1152284924241.8571.0612.167
Av 1.7321.0231.976
Max 3.8751.1826.200
Best413422
Unique16014
Table 5 shows that with binary encoding and the use of the dstate_out style, the average area of FSMs is reduced by a factor of 1.976 (or 97.6%), with the maximum area reduction by a factor of 6.2 in example ex4. For the dstate style, the maximum decrease in area by a factor of 3.875 is also observed for the ex4 benchmark. In the dout style, the most significant reduction in the area observed is a factor of 1.182 in the train4 example. Note that when using the dstate_out style, in 12 out of 29 examples (41.4% of cases), the area decreased by more than two times.

4.3. Performance of FSMs

The performance of the FSMs using the proposed styles and one-hot state encoding is shown in Table 6, where F3, Fs, Fo, and Fso are the maximum operating frequencies of FSMs (in megahertz), described in styles 3proc, dstate, dout, and dstate_out, respectively; Fmax is the maximum performance value for a specific example; Fs/F3, Fo/F3, Fs/F3, and Fso/F3 are the ratios of the corresponding parameters; and Av, Max, Best, and Unique denote the previous values.
Table 6. Performance of FSMs with one-hot encoding.
Table 6. Performance of FSMs with one-hot encoding.
FSM F3FsFoFsoFmaxFs/F3Fo/F3Fso/F3
bbsse4766095506506501.2791.1551.366
beecount2005221656236232.6100.8253.115
cse1445121615055123.5561.1183.507
dk145115115115115111.0001.0001.000
dk165276485276486481.2301.0001.230
dk5127348127348128121.1061.0001.106
ex13055212225115211.7080.7281.675
ex24676234677287281.3341.0001.559
ex34765464766576571.1471.0001.380
ex46041300615130013002.1521.0182.152
ex55006895006566891.3781.0001.312
ex62185021965595592.3030.8992.564
ex74755234756676671.1011.0001.404
lion4897334857347341.4990.9921.501
lion91805521495675673.0670.8283.150
planet7337247007277330.9880.9550.992
planet17337247007277330.9880.9550.992
pma106453874664664.2740.8214.396
s14265324265325321.2491.0001.249
s275575575415415571.0000.9710.971
s2084404814564564811.0931.0361.036
s14884364344194854850.9950.9611.112
sand1544472774664662.9031.7993.026
sse5055065055315311.0021.0001.051
styr1685241846186183.1191.0953.679
tbk3203723204364361.1631.0001.363
tma1424611474754753.2461.0353.345
train42078092916908093.9081.4063.333
train113635242715555551.4440.7471.529
Av 1.8571.0121.934
Max 4.2741.7994.396
Best411121
Unique26016
Table 6 shows that when using the dstate_out style and one-hot encoding, the average performance improves by a factor of 1.934 (or 93.4%), with the maximum performance increase by a factor of 4.396 in the pma example. For the dstate style, the highest performance increase noted is a factor of 4.274, again for the pma example. In contrast, the dout style highlights a maximum performance increase of 1.799 for the sand example. Notably, in 10 of 30 cases (33.3%), performance improved by more than 2 times, and in 8 cases (26.7%) by more than 3 times.
The performance of the FSMs using the offered styles and binary state encoding is shown in Table 7.
Table 7. Performance of FSMs with binary encoding.
Table 7. Performance of FSMs with binary encoding.
FSM F3FsFoFsoFmaxFs/F3Fo/F3Fso/F3
bbsse3335363344475361.0031.6101.342
beecount6587896085987890.9241.1990.909
cse1552492173103101.4001.6062.000
dk144807804804807801.0001.6251.000
dk163803783803783801.0000.9950.995
dk5125785525785525781.0000.9550.955
ex12402732443373371.0171.1381.404
ex22192722984044041.3611.2421.845
ex32333882395315311.0261.6652.279
ex44194504197317311.0001.0741.745
ex53353353355005001.0001.0001.493
ex62264122324334331.0271.8231.916
ex72224532305015011.0362.0412.257
lion6774866648148140.9810.7181.202
lion92094352095905901.0002.0812.823
planet2382952262962960.9501.2391.244
planet12382952262962960.9501.2391.244
pma111165922192190.8291.4861.973
s12492962492962961.0001.1891.189
s272405405375375402.2382.2502.238
s2087167167217217211.0071.0001.007
s14882212212234804801.0091.0002.172
sand2112091922392390.9100.9911.133
sse4883534464624880.9140.7230.947
styr2033171843173170.9061.5621.562
tbk2102372102022371.0001.1290.962
tma1192771513263261.2692.3282.739
train42624742718168161.0341.8093.115
train112303853104904901.3481.6742.130
Av 1.0741.3931.649
Max 2.2382.3283.115
Best37321
Unique15018
Table 7 shows that when using the dstate_out style and binary encoding, the average performance improves by 1.649 (64.9%), with the maximum performance increase of 3.115 in the train4 example. For the dstate style, the maximum performance increase reaches a factor of 2.238 in the s27 example, while the dout style achieves a maximum improvement factor of 2.328 in the tma example. Notably, in 9 out of 29 examples (31% of cases), the performance improves by more than double.
The effectiveness of the considered styles, as measured by the number of best and unique solutions achieved, is illustrated in Figure 3 and Figure 4.
Figure 3 and Figure 4 demonstrate that the dstate_out and dstate styles significantly outperform the 3proc and dout styles in terms of the number of best and unique solutions achieved.
The analysis in Table 4, Table 5, Table 6 and Table 7 of the average values (parameter Av) of the area and performance ratios indicates that Hypothesis 1 was fully confirmed. In contrast, Hypothesis 2 was confirmed only with respect to performance when encoding FSMs with binary codes.
Note that the high efficiency of the considered approach has been confirmed for both minimum (binary) and maximum (one-hot) length codes. Therefore, the efficiency of the proposed approach for reducing the area and enhancing the performance of FSMs is independent of the method of state encoding.

4.4. Research on the Effectiveness of the Proposed Approach in the Vivado Design Tool

All of the experimental results presented above were obtained using the Quartus Prime system. Section 3 noted that the proposed approach depends on the synthesizer used by the design tool. For comparison, Table 8 and Table 9 present the results of experimental studies of the proposed approach performed using the Vivado design tool version 2025.1 when implementing FSMs in the Artix 7 family of FPGAs.
Table 8. Area of FSMs with one-hot encoding in the system Vivado.
Table 8. Area of FSMs with one-hot encoding in the system Vivado.
FSM A3AsAoAsoAminA3/AsA3/AoA3/Aso
bbsse29223023221.3180.9671.261
beecount816101480.5000.8000.571
cse51494737371.0411.0851.378
dk1421212120201.0001.0001.050
dk1639174215152.2940.9292.600
dk51213711661.8571.1822.167
ex158377244371.5680.8061.318
ex21089771.2501.1111.429
ex31089771.2501.1111.429
ex411121314110.9170.8460.786
ex5888771.0001.0001.143
ex625242523231.0421.0001.087
ex7444441.0001.0001.000
lion323221.5001.0001.500
lion911141110100.7861.0001.100
planet83508852501.6600.9431.596
planet183508852501.6600.9431.596
pma35526374350.6730.5560.473
s163346334341.8531.0001.853
s271191301201301190.9150.9920.915
s208101191390.9091.1110.769
s1488777661.0001.0001.167
sand94988783830.9591.0801.133
sse25232623231.0870.9621.087
styr88539853531.6600.8981.660
tbk1281561161531160.8211.1030.837
tma26414856260.6340.5420.464
train413141110100.9291.1821.300
train11554331.0001.2501.667
Av 1.1750.9791.253
Max 2.2941.2502.600
Best69318
Unique54213
Table 9. Area of FSMs with binary encoding in the system Vivado.
Table 9. Area of FSMs with binary encoding in the system Vivado.
FSMA3AsAoAsoAminA3/AsA3/AoA3/Aso
bbsse29223023221.3180.9671.261
beecount8810981.0000.8000.889
cse51494737371.0411.0851.378
dk14111011991.1001.0001.222
dk1615715772.1431.0002.143
dk512424222.0001.0002.000
ex158377244371.5680.8061.318
ex2666551.0001.0001.200
ex3657651.2000.8571.000
ex411121314110.9170.8460.786
ex5555551.0001.0001.000
ex625242523231.0421.0001.087
ex7545441.2501.0001.250
lion323221.5001.0001.500
lion9465540.6670.8000.800
planet83508852501.6600.9431.596
planet183508852501.6600.9431.596
pma35526374350.6730.5560.473
s163346334341.8531.0001.853
s271191301201301190.9150.9920.915
s208101191390.9091.1110.769
s1488777661.0001.0001.167
sand94988783830.9591.0801.133
sse25232623231.0870.9621.087
styr88539853531.6600.8981.660
tbk1281561161531160.8211.1030.837
tma26414856260.6340.5420.464
train4666551.0001.0001.200
train11423222.0001.3332.000
Av1.2270.9531.227
Max2.1431.3332.143
Best715316
Unique5427
Table 8 shows that using the dstate_out style of FSM description with one-hot encoding results in an average area reduction of 1.253 times (or 25.3%). The most significant area reduction, 2.6 times, is observed in the example dk16. Similarly, Table 9 shows that using the dstate_out style of FSM description with binary encoding results in an average area reduction of 1.227 times (or 22.7%), and the most significant reduction, 2.143 times, is also observed in the example dk16.
When using the proposed approach, even after assigning default values to the variables next and y before the ‘case’ statements, the synthesizer in Vivado introduces latches if the ‘case’ statements for next and y do not define values for all possible combinations of input variables. The introduction of latches into the FSM circuit prevents the maximum operating frequency of the FSMs from being calculated. Therefore, there is no data on the performance of the FSMs here. However, despite the Vivado Synthesizer introducing latches into the FSM circuit, the proposed approach reduces the average area of FSMs, allowing us to draw the following conclusion.
Inference. Introducing latches into the FSM circuit requires fewer area resources than the proposed approach for minimizing FSM logic. In other words, regardless of the synthesizer used, the proposed approach significantly reduces the area of FSMs.

4.5. Comparison of the Proposed Approach with Known Methods

Table 10 shows the reductions in the area and increases in the performance of FSMs reported in the literature when using various methods, as well as when applying the proposed approach, where Av and Max denote the average and maximum value of the parameter. Table 10 also presents the results obtained using the JEDI program [30] for encoding FSM states. For comparison, Table 10 presents the results obtained using the proposed approach, where Doh denotes the parameter values for one-hot encoding, and Db denotes those for binary encoding.
Table 10 shows that the proposed approach surpasses all other methods in reducing the area and improving FSM performance. Note that this approach does not replace the existing FSM optimization methods—such as state minimization, state encoding, logic minimization, and synthesis—but rather complements them. Consequently, this approach can be applied at the stage of describing the FSM project in HDL, regardless of other FSM optimization methods.

5. Conclusions

This paper introduces three styles for describing FSMs in Verilog HDL to enhance their parameters: dstate, where the default value is the next state; dout, where the default value is the output vector; and dstate_out, where the default values include both the next state and the output vector. Algorithms are presented for creating FSM project code in Verilog and encoding states to optimize the area and performance of FSMs.
Experimental studies in the Quartus design tool on MCNC benchmarks demonstrate that the dstate_out style reduces the average area of FSMs by a factor of 1.93 when states are encoded in one-hot code and by 1.976 when encoded in binary. For specific examples, this reduction can be as much as a factor of 5.182 and 6.2, respectively. Additionally, the dstate_out style enhances FSM performance by an average of 1.934 with one-hot encoding and 1.649 with binary encoding, with individual examples showing increases of up to 4.396 and 3.115, respectively.
It has been shown that the proposed approach depends on the synthesizer used in the design tool. For example, in the Vivado system, the average area reduction is 25.3% for one-hot encoding (2.6 times for individual examples) and 22.7% for binary encoding (2.143 times for individual examples). It has also been shown that the proposed approach outperforms all known methods in terms of area reduction and performance improvement of FSMs.
We recommend using the dstate_out and dstate styles to describe FSMs. We do not recommend using the dout style due to its minimal effectiveness in improving FSM parameters. Since the proposed styles can lead to incomplete ‘case’ statements, we recommend using the considered styles for describing FSMs in the final stages of design, when the user is completely confident in the correct functioning of the FSM. Traditional methods of describing FSMs can be used during the project verification stages and in complex projects.
Future research will focus on developing new styles for describing FSMs in HDL and structural models that aim to optimize FSM parameters.

Author Contributions

Conceptualization, methodology, validation, writing—original draft preparation, investigation, supervision, V.S.; resources, data curation, writing—review and editing, A.K. All authors have read and agreed to the published version of the manuscript.

Funding

The present study was supported by a grant WZ/WI-III/5/2023 from Bialystok University of Technology and founded from the resources for research by Ministry of Science and Higher Education.

Data Availability Statement

The raw data supporting the conclusions of this article will be made available by the authors on request.

Conflicts of Interest

The authors declare no conflicts of interest.

Abbreviations

The following abbreviations are used in this manuscript:
ASICApplication-Specific Integrated Circuit
FPGAField-Programmable Gate Array
FSMFinite State Machine
HDLHardware Description Language
VHDLVery high-speed integrated circuit Hardware Description Language
SoCSystem-on-Chip
STGState Transition Graph

References

  1. Barkalov, A.; Titarenko, L.; Mielcarek, K.; Mazurkiewicz, M. Hardware reduction for FSMs with extended state codes. IEEE Access 2024, 12, 42369–42384. [Google Scholar] [CrossRef]
  2. Rho, J.K.; Hachtel, G.D.; Somenzi, F.; Jacoby, R.M. Exact and heuristic algorithms for the minimization of incompletely specified state machines. IEEE Trans. Comput.-Aided Des. Integr. Circuits Syst. 1994, 13, 167–177. [Google Scholar] [CrossRef]
  3. De Micheli, G.; Brayton, R.K.; Sangiovanni-Vincentelli, A. Optimal state assignment for finite state machines. IEEE Trans. Comput.-Aided Des. Integr. Circuits Syst. 1985, 4, 269–285. [Google Scholar] [CrossRef]
  4. Villa, T.; Sangiovanni-Vincentelli, A. NOVA: State assignment of finite state machines for optimal two-level logic implementations. In Proceedings of the 26th ACM/IEEE Design Automation Conference, Las Vegas, NV, USA, 25–29 June 1989; pp. 327–332. [Google Scholar] [CrossRef]
  5. Devadas, S.; Ma, H.K.; Newton, A.R.; Sangiovanni-Vincentelli, A. MUSTANG: State assignment of finite state machines targeting multilevel logic implementations. IEEE Trans. Comput.-Aided Des. Integr. Circuits Syst. 1988, 7, 1290–1300. [Google Scholar] [CrossRef]
  6. Klimowicz, S.; Solov’ev, V.V. Structural models of finite-state machines for their implementation on programmable logic devices and systems on chip. J. Comput. Syst. Sci. Int. 2015, 54, 230–242. [Google Scholar] [CrossRef]
  7. Meyer, M.J.; Agrawal, P.; Pfister, R.G. A VLSI FSM Design System. In Proceedings of the 21st Design Automation Conference, Albuquerque, NM, USA, 25–27 June 1984; pp. 434–440. [Google Scholar] [CrossRef]
  8. Luba, T.; Gorski, K.; Wronski, L.B. ROM-based Finite State Machines with PLA address modifiers. In Proceedings of the EURO-DAC’92: European Design Automation Conference, Hamburg, Germany, 7–10 September 1992; pp. 272–273. [Google Scholar] [CrossRef]
  9. Baranov, S.; Levin, I.; Keren, O.; Karpovsky, M. Designing fault tolerant FSM by nano-PLA. In Proceedings of the 15th IEEE International On-Line Testing Symposium, Lisbon, Portugal, 24–26 June 2009; pp. 229–234. [Google Scholar] [CrossRef]
  10. Solovjev, V.; Chyzy, M. Refined CPLD macrocell architecture for the effective FSM implementation. In Proceedings of the 25th Euromicro Conference, Informatics: Theory and Practice for the New Millennium, Milan, Italy, 8–10 September 1999; Volume 1, pp. 102–109. [Google Scholar] [CrossRef]
  11. Czerwinski, R.; Kania, D. CPLD-oriented synthesis of finite state machines. In Proceedings of the 12th Euromicro Conference on Digital System Design, Architectures, Styles and Tools, Patras, Greece, 27–29 August 2009; pp. 521–528. [Google Scholar] [CrossRef]
  12. Garcia-Vargas, I.; Senhadji-Navarro, R.; Jimenez-Moreno, G.; Civit-Balcells, A.; Guerra-Gutierrez, P. ROM-based finite state machine implementation in low cost FPGAs. In Proceedings of the IEEE International Symposium on Industrial Electronics, Vigo, Spain, 4–7 June 2007; pp. 2342–2347. [Google Scholar] [CrossRef]
  13. Garcia-Vargas, I.; Senhadji-Navarro, R. Finite state machines with input multiplexing: A performance study. IEEE Trans. Comput.-Aided Des. Integr. Circuits Syst. 2015, 34, 867–871. [Google Scholar] [CrossRef]
  14. Villa, T.; Kam, T.; Brayton, R.K.; Sangiovanni-Vincentelli, A.L. Synthesis of Finite State Machines: Logic Optimization; Springer Science & Business Media: Berlin, Germany, 2012. [Google Scholar]
  15. Golson, S. State machine design techniques for Verilog and VHDL. Synopsys J. High-Level Des. 1994, 9, 1–20. [Google Scholar]
  16. Arnold, M.G.; Sample, N.J.; Shuler, J.D. Guidelines for safe simulation and synthesis of implicit style Verilog. In Proceedings of the International Verilog HDL Conference and VHDL International Users Forum, Santa Clara, CA, USA, 16–19 March 1998; pp. 59–66. [Google Scholar] [CrossRef][Green Version]
  17. Wang, T.H.; Edsall, T. Practical FSM analysis for Verilog. In Proceedings of the International Verilog HDL Conference and VHDL International Users Forum, Santa Clara, CA, USA, 16–19 March 1998; pp. 52–58. [Google Scholar] [CrossRef]
  18. Cummings, C.E. State machine coding styles for synthesis. In Proceedings of the Synopsys Users Group (SNUG’98), San Jose, CA, USA, March 1998; Synopsys: Sunnyvale, CA, USA, 1998; pp. 1–20. [Google Scholar]
  19. Cummings, C.E. Coding and scripting techniques for FSM designs with synthesis-optimized, glitch-free outputs. In Proceedings of the Synopsys Users Group Boston (SNUG), Boston, MA, USA, 20–22 September 2020; pp. 1–13. [Google Scholar]
  20. Cummings, C.E. Synthesizable Finite State Machine Design Techniques Using the New SystemVerilog 3.0 Enhancements. In Proceedings of the Synopsys Users Group (SNUG), San Jose, CA, USA, 29–31 March 2003; pp. 1–53. [Google Scholar]
  21. Rafla, N.I.; Davis, B.L. A study of finite state machine coding styles for implementation in FPGAs. In Proceedings of the 49th IEEE International Midwest Symposium on Circuits and Systems, San Juan, PR, USA, 6–9 August 2006; Volume 1, pp. 337–341. [Google Scholar] [CrossRef]
  22. Chiuchisan, I.; Potorac, A.D.; Graur, A. Finite state machine design and VHDL coding techniques. In Proceedings of the 10th International Conference on Development and Application Systems, Suceava, Romania, 27–29 May 2010; pp. 273–278. [Google Scholar]
  23. Masoumi, S.H.; Al-Haddad, S.A.R.; Rokhani, F.Z. New tool for converting high-level representations of finite state machines to Verilog HDL. In Proceedings of the IEEE 15th Student Conference on Research and Development (SCOReD), Putrajaya, Malaysia, 13–14 December 2017; pp. 1–6. [Google Scholar] [CrossRef]
  24. Sentovich, M.; Singh, K.J.; Lavagno, L.; Moon, C.; Murgai, R.; Saldanha, A.; Savoj, H.; Stephan, P.R.; Brayton, R.K.; Sangiovanni-Vincentelli, A. SIS: A System for Sequential Circuit Synthesis; University of California: Berkeley, CA, USA, 1992; p. 94720. [Google Scholar]
  25. Salauyou, V.; Zabrocki, L. Coding techniques in Verilog for finite state machine designs in FPGA. In Proceedings of the Computer Information Systems and Industrial Management: 18th International Conference (CISIM 2019), Belgrade, Serbia, 19–21 September 2019; pp. 493–505. [Google Scholar] [CrossRef]
  26. Salauyou, V. Description styles of fault-tolerant finite state machines for unmanned aerial vehicles. Radioelectron. Comput. Syst. 2024, 2024, 196–206. [Google Scholar] [CrossRef]
  27. Salauyou, V. Styles for Describing Reliable Finite State Machines in Verilog HDL. In Proceedings of the International Conference on Dependability of Computer Systems (DepCoS), Wroclaw, Poland, 1–5 June 2024; pp. 241–251. [Google Scholar] [CrossRef]
  28. Cummings, C.E. The Fundamentals of Efficient Synthesizable Finite State Machine Design using NC-Verilog and BuildGates. In Proceedings of the International Cadence Usergroup Conference, Aix-en-Provence, France, 2–6 September 2002; pp. 1–27. [Google Scholar]
  29. Yang, S. Logic Synthesis and Optimization Benchmarks User Guide, Version 3.0; Microelectronics Center of North Carolina (MCNC): Research Triangle Park, NC, USA, 1991. [Google Scholar]
  30. Lin, B.; Newton, A.R. Synthesis of multiple level logic from symbolic high-level description languages. In Proceedings of the IFIP International Conference on VLSI, Munich, Germany, 16–18 August 1989; pp. 187–196. [Google Scholar]
Figure 1. Traditional structure of FSMs.
Figure 1. Traditional structure of FSMs.
Electronics 15 00831 g001
Figure 2. STG of a Mealy FSM.
Figure 2. STG of a Mealy FSM.
Electronics 15 00831 g002
Figure 3. Number of best solutions achieved by each style.
Figure 3. Number of best solutions achieved by each style.
Electronics 15 00831 g003
Figure 4. Number of unique solutions achieved by each style.
Figure 4. Number of unique solutions achieved by each style.
Electronics 15 00831 g004
Table 1. Transition list for the Mealy FSM from our example.
Table 1. Transition list for the Mealy FSM from our example.
psX(ps, ns) nsY(ps, ns)
s0--0s1001
s0--1s3111
s1-0-s2010
s1-1-s3111
s20--s4011
s21--s3111
s3000s3111
s3111s0101
s4-00s3111
s4-11s0100
Table 2. Parameters of the FSM designs from our example for different description styles.
Table 2. Parameters of the FSM designs from our example for different description styles.
FSMAF
Mealy_3proc24181
Mealy_dstate16543
Mealy_dout19237
Mealy_dstate_out11651
Table 3. Parameters and effectiveness estimates of FSM description styles.
Table 3. Parameters and effectiveness estimates of FSM description styles.
FSM LNTMTsToλsλoλso
bbsse77561628141.5001.2501.750
beecount3428712191.4291.6792.107
cse77911647311.5161.3411.857
dk14355671361.2321.1071.339
dk1623108279341.0831.3151.398
dk5121330156171.2001.5671.767
ex19192331845321.1931.1371.330
ex222721832591.4441.8192.264
ex322361016301.4441.8332.278
ex4692114461.1901.2861.476
ex52232915181.4691.5632.031
ex6583481071.2941.2061.500
ex722361018231.5001.6392.139
keyb72170191121111.6591.6532.312
lion21114371.2731.6361.909
lion9212593171.1201.6801.800
planet719115488111.0701.0961.165
planet1719115488111.0701.0961.165
pma8873242151.2881.0681.356
s1861072012121.1121.1121.224
s274134610271.2941.7942.088
s2081121531899751.6471.4902.137
s148881925148121621.4821.2471.729
sand1191843232301.1741.1631.337
sse77561628141.5001.2501.750
styr9101663044461.2651.2771.542
tbk6315693256712741.3611.8122.173
tma764420941.2051.0911.295
train4211444101.2861.7142.000
train112125115181.2001.7201.920
Av 1.3171.4211.738
Max111915694856712741.6591.8332.312
Table 10. Reducing the area and increasing performance in various methods of FSM optimization.
Table 10. Reducing the area and increasing performance in various methods of FSM optimization.
MethodsAreaPerformance
AvMaxAvMax
[1]79.6%-22.4%-
[2]15.0%-8%-
[3]25.0%---
[4]30.0%---
[5]30.0%---
[6]25.8%100%--
[8]50.0%---
[9]5.0%---
[10]67.0%---
[11]30.0%---
[12]87.0%---
[13]50.6%-19.7%-
[25]26.0%3.1 times21.0%60%
[26]77.4%4.8 times19.3%2.4 times
[30]3.7%71.4%4.4%51.6%
Doh93.0%5.2 times93.4%4.4 times
Db97.6%6.2 times64.9%3.1 times
Disclaimer/Publisher’s Note: The statements, opinions and data contained in all publications are solely those of the individual author(s) and contributor(s) and not of MDPI and/or the editor(s). MDPI and/or the editor(s) disclaim responsibility for any injury to people or property resulting from any ideas, methods, instructions or products referred to in the content.

Share and Cite

MDPI and ACS Style

Salauyou, V.; Klimowicz, A. Optimizing Digital Systems Implemented in FPGA Through Effective Description of Finite State Machines. Electronics 2026, 15, 831. https://doi.org/10.3390/electronics15040831

AMA Style

Salauyou V, Klimowicz A. Optimizing Digital Systems Implemented in FPGA Through Effective Description of Finite State Machines. Electronics. 2026; 15(4):831. https://doi.org/10.3390/electronics15040831

Chicago/Turabian Style

Salauyou, Valery, and Adam Klimowicz. 2026. "Optimizing Digital Systems Implemented in FPGA Through Effective Description of Finite State Machines" Electronics 15, no. 4: 831. https://doi.org/10.3390/electronics15040831

APA Style

Salauyou, V., & Klimowicz, A. (2026). Optimizing Digital Systems Implemented in FPGA Through Effective Description of Finite State Machines. Electronics, 15(4), 831. https://doi.org/10.3390/electronics15040831

Note that from the first issue of 2016, this journal uses article numbers instead of page numbers. See further details here.

Article Metrics

Back to TopTop