aboutsummaryrefslogtreecommitdiffstats
path: root/src/synth/synth-ieee-utils.ads
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2022-09-02 02:50:33 +0200
committerTristan Gingold <tgingold@free.fr>2022-09-02 02:50:33 +0200
commitdc9a84dbd3ae94978708d236cd54712ed7c80314 (patch)
tree7b4af2314ee495cf2c889a93b2d444b7dc0f96b9 /src/synth/synth-ieee-utils.ads
parenta259712ccb53a2b59fc66e01646db9ce95167ab1 (diff)
downloadghdl-dc9a84dbd3ae94978708d236cd54712ed7c80314.tar.gz
ghdl-dc9a84dbd3ae94978708d236cd54712ed7c80314.tar.bz2
ghdl-dc9a84dbd3ae94978708d236cd54712ed7c80314.zip
synth: extract synth-ieee-utils from synth-ieee-numeric_std
Diffstat (limited to 'src/synth/synth-ieee-utils.ads')
-rw-r--r--src/synth/synth-ieee-utils.ads45
1 files changed, 45 insertions, 0 deletions
diff --git a/src/synth/synth-ieee-utils.ads b/src/synth/synth-ieee-utils.ads
new file mode 100644
index 000000000..d2fe7d5b4
--- /dev/null
+++ b/src/synth/synth-ieee-utils.ads
@@ -0,0 +1,45 @@
+-- Simple logic utilities for ieee.std_logic
+-- Copyright (C) 2019 Tristan Gingold
+--
+-- This file is part of GHDL.
+--
+-- This program is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU General Public License as published by
+-- the Free Software Foundation, either version 2 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU General Public License for more details.
+--
+-- You should have received a copy of the GNU General Public License
+-- along with this program. If not, see <gnu.org/licenses>.
+
+with Types; use Types;
+
+with Synth.Ieee.Std_Logic_1164; use Synth.Ieee.Std_Logic_1164;
+
+package Synth.Ieee.Utils is
+ subtype Sl_01 is Std_Ulogic range '0' .. '1';
+ subtype Sl_X01 is Std_Ulogic range 'X' .. '1';
+
+ type Carry_Array is array (Sl_01, Sl_01, Sl_01) of Sl_01;
+ Compute_Carry : constant Carry_Array :=
+ ('0' => ('0' => ('0' => '0', '1' => '0'),
+ '1' => ('0' => '0', '1' => '1')),
+ '1' => ('0' => ('0' => '0', '1' => '1'),
+ '1' => ('0' => '1', '1' => '1')));
+ Compute_Sum : constant Carry_Array :=
+ ('0' => ('0' => ('0' => '0', '1' => '1'),
+ '1' => ('0' => '1', '1' => '0')),
+ '1' => ('0' => ('0' => '1', '1' => '0'),
+ '1' => ('0' => '0', '1' => '1')));
+
+ type Sl_To_X01_Array is array (Std_Ulogic) of Sl_X01;
+ Sl_To_X01 : constant Sl_To_X01_Array :=
+ ('0' | 'L' => '0', '1' | 'H' => '1', others => 'X');
+
+ type Uns_To_01_Array is array (Uns64 range 0 .. 1) of Sl_X01;
+ Uns_To_01 : constant Uns_To_01_Array := (0 => '0', 1 => '1');
+end Synth.Ieee.Utils;