diff options
author | Tristan Gingold <tgingold@free.fr> | 2019-09-05 09:10:12 +0200 |
---|---|---|
committer | Tristan Gingold <tgingold@free.fr> | 2019-09-05 09:10:12 +0200 |
commit | f6d49eb62dac359c96aefc79d3d0ae8f907dc8d9 (patch) | |
tree | 09aa6cd0c040f31fba6b1275467059288ee90e52 /src/synth/netlists-concats.ads | |
parent | 0c71b4ee8844742426f96f0dc0b7c09a197c57dd (diff) | |
download | ghdl-f6d49eb62dac359c96aefc79d3d0ae8f907dc8d9.tar.gz ghdl-f6d49eb62dac359c96aefc79d3d0ae8f907dc8d9.tar.bz2 ghdl-f6d49eb62dac359c96aefc79d3d0ae8f907dc8d9.zip |
synth: add netlists.concats
Diffstat (limited to 'src/synth/netlists-concats.ads')
-rw-r--r-- | src/synth/netlists-concats.ads | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/src/synth/netlists-concats.ads b/src/synth/netlists-concats.ads new file mode 100644 index 000000000..3b1e9cb93 --- /dev/null +++ b/src/synth/netlists-concats.ads @@ -0,0 +1,46 @@ +-- Provide a simple way to concat an unknown number of nets. +-- 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, write to the Free Software +-- Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +-- MA 02110-1301, USA. + +with Dyn_Tables; +with Netlists.Builders; use Netlists.Builders; + +package Netlists.Concats is + type Concat_Type is limited private; + + -- Append net N to C. + procedure Append (C : in out Concat_Type; N : Net); + + -- Get the concatenation of all nets in C. Reset C. + procedure Build (Ctxt : Context_Acc; C : in out Concat_Type; N : out Net); +private + Static_Last : constant Int32 := 16; + + package Net_Tables is new Dyn_Tables + (Table_Component_Type => Net, + Table_Index_Type => Int32, + Table_Low_Bound => 1, + Table_Initial => Integer (Static_Last * 2)); + + type Concat_Type is limited record + Len : Int32 := 0; + Sarr : Net_Tables.Table_Type (1 .. Static_Last); + Darr : Net_Tables.Instance; + end record; +end Netlists.Concats; |